Projektstart

This commit is contained in:
2026-01-22 15:49:12 +01:00
parent 7212eb6f7a
commit 57e5f652f8
10637 changed files with 2598792 additions and 64 deletions

View File

@@ -0,0 +1,5 @@
# Set the default behavior, in case people don't have core.autocrlf set
* text=auto
# Require Unix line endings
* text eol=lf

View File

@@ -0,0 +1,13 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
open-pull-requests-limit: 10
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10

View File

@@ -0,0 +1,21 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 15
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- "discussion"
- "feature request"
- "bug"
- "help wanted"
- "plugin suggestion"
- "good first issue"
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

View File

@@ -0,0 +1,8 @@
comment: |
Hello! Thank you for contributing!
It appears that you have changed the code, but the tests that verify your change are missing. Could you please add them?
fileExtensions:
- '.ts'
- '.js'
testDir: 'test'

View File

@@ -0,0 +1,27 @@
name: CI
on:
push:
branches:
- main
- master
- next
- 'v*'
paths-ignore:
- 'docs/**'
- '*.md'
pull_request:
paths-ignore:
- 'docs/**'
- '*.md'
jobs:
e2e:
uses: ./.github/workflows/playwright.yml
test:
uses: fastify/workflows/.github/workflows/plugins-ci.yml@v4.1.0
needs: e2e
with:
license-check: true
lint: true

View File

@@ -0,0 +1,20 @@
name: package-manager-ci
on:
push:
branches:
- main
- master
- next
- 'v*'
paths-ignore:
- 'docs/**'
- '*.md'
pull_request:
paths-ignore:
- 'docs/**'
- '*.md'
jobs:
test:
uses: fastify/workflows/.github/workflows/plugins-ci-package-manager.yml@v4.1.0

View File

@@ -0,0 +1,25 @@
name: Playwright Tests
on:
workflow_dispatch:
workflow_call:
jobs:
test:
runs-on: ubuntu-latest
permissions:
contents: read
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Install dependencies
run: npm i
- name: Install Playwright Browsers
run: npx playwright@1 install chromium --with-deps
- name: Run Playwright tests
run: npx playwright@1 test

View File

@@ -0,0 +1,243 @@
{
"date": "2024-08-14T13:50:04.392Z",
"argv": [
"/Users/matteo/.nvm/versions/node/v20.16.0/bin/node",
"/Users/matteo/Repositories/fastify-swagger-ui/test/static.test.js"
],
"execArgv": [
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"--enable-source-maps",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs"
],
"NODE_OPTIONS": "\"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs\"",
"cwd": "/Users/matteo/Repositories/fastify-swagger-ui",
"pid": 56651,
"ppid": 56642,
"parent": null,
"uuid": "003115b2-4a91-4b5c-8be3-6a283b2c0021",
"files": [
"/Users/matteo/Repositories/fastify-swagger-ui/test/static.test.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import-loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/hooks.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service-client.js",
"/Users/matteo/Repositories/fastify-swagger-ui/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/routes.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/swagger-initializer.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/serialize.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/index-html.js"
],
"sources": {
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/import.mts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/mock-service.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-relative-require.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/export-line.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/munge-mocks.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/resolve-mock-entry-point.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/service-key.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/call-site-like.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/require-resolve.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditional-values.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-unique-condition-sets.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-exports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-local-imports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-conditional-value.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-windows.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/parse.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/errors.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-conditional-values-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-named-exports-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-pkg.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/star-glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-path.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/file-exists.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-dep-package.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-file-url.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-dependency-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-package-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-json.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-star-match.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/has-magic.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/ignore.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/assert-valid-pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/ast.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/escape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/unescape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/walker.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/brace-expressions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/processor.ts"
]
},
"root": "003115b2-4a91-4b5c-8be3-6a283b2c0021",
"externalID": "test/static.test.js",
"code": 0,
"signal": null,
"runtime": 858.663083
}

View File

@@ -0,0 +1,243 @@
{
"date": "2024-08-14T13:50:04.378Z",
"argv": [
"/Users/matteo/.nvm/versions/node/v20.16.0/bin/node",
"/Users/matteo/Repositories/fastify-swagger-ui/test/integration.test.js"
],
"execArgv": [
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"--enable-source-maps",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs"
],
"NODE_OPTIONS": "\"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs\"",
"cwd": "/Users/matteo/Repositories/fastify-swagger-ui",
"pid": 56647,
"ppid": 56642,
"parent": null,
"uuid": "297db855-a069-4fe4-9ad8-e114f444a73b",
"files": [
"/Users/matteo/Repositories/fastify-swagger-ui/test/integration.test.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import-loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/hooks.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service-client.js",
"/Users/matteo/Repositories/fastify-swagger-ui/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/routes.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/swagger-initializer.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/serialize.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/index-html.js"
],
"sources": {
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/import.mts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/mock-service.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-relative-require.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/export-line.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/munge-mocks.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/service-key.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/resolve-mock-entry-point.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditional-values.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-unique-condition-sets.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-exports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-local-imports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-conditional-value.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/call-site-like.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/require-resolve.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-windows.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-conditional-values-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/errors.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-named-exports-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-pkg.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-path.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/star-glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/file-exists.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-dep-package.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-file-url.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-dependency-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-package-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/parse.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-json.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-star-match.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/has-magic.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/ignore.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/assert-valid-pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/ast.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/escape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/unescape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/walker.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/processor.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/brace-expressions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/src/index.ts"
]
},
"root": "297db855-a069-4fe4-9ad8-e114f444a73b",
"externalID": "test/integration.test.js",
"code": 0,
"signal": null,
"runtime": 761.828917
}

View File

@@ -0,0 +1,244 @@
{
"date": "2024-08-14T13:50:04.375Z",
"argv": [
"/Users/matteo/.nvm/versions/node/v20.16.0/bin/node",
"/Users/matteo/Repositories/fastify-swagger-ui/test/hooks.test.js"
],
"execArgv": [
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"--enable-source-maps",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs"
],
"NODE_OPTIONS": "\"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs\"",
"cwd": "/Users/matteo/Repositories/fastify-swagger-ui",
"pid": 56646,
"ppid": 56642,
"parent": null,
"uuid": "3acbf46b-1a7d-4e23-9bd0-429a35f058e6",
"files": [
"/Users/matteo/Repositories/fastify-swagger-ui/test/hooks.test.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import-loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/hooks.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service-client.js",
"/Users/matteo/Repositories/fastify-swagger-ui/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/examples/options.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/routes.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/swagger-initializer.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/serialize.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/index-html.js"
],
"sources": {
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/import.mts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/mock-service.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-relative-require.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/export-line.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/munge-mocks.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/resolve-mock-entry-point.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/service-key.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/call-site-like.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/require-resolve.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditional-values.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-unique-condition-sets.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-exports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-local-imports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-conditional-value.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-windows.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/parse.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-conditional-values-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/errors.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-named-exports-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-pkg.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/star-glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-path.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/file-exists.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-dep-package.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-file-url.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-dependency-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-package-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-json.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-star-match.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/has-magic.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/ignore.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/assert-valid-pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/ast.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/escape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/unescape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/walker.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/brace-expressions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/processor.ts"
]
},
"root": "3acbf46b-1a7d-4e23-9bd0-429a35f058e6",
"externalID": "test/hooks.test.js",
"code": 0,
"signal": null,
"runtime": 772.068417
}

View File

@@ -0,0 +1,243 @@
{
"date": "2024-08-14T13:50:05.286Z",
"argv": [
"/Users/matteo/.nvm/versions/node/v20.16.0/bin/node",
"/Users/matteo/Repositories/fastify-swagger-ui/test/swagger-initializer.test.js"
],
"execArgv": [
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"--enable-source-maps",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs"
],
"NODE_OPTIONS": "\"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs\"",
"cwd": "/Users/matteo/Repositories/fastify-swagger-ui",
"pid": 56654,
"ppid": 56642,
"parent": null,
"uuid": "45484ab3-f56a-48d7-bb63-b809a03a3128",
"files": [
"/Users/matteo/Repositories/fastify-swagger-ui/test/swagger-initializer.test.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import-loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/hooks.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service-client.js",
"/Users/matteo/Repositories/fastify-swagger-ui/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/routes.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/swagger-initializer.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/serialize.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/index-html.js"
],
"sources": {
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/import.mts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/mock-service.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-relative-require.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/export-line.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/munge-mocks.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/resolve-mock-entry-point.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/service-key.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/call-site-like.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/require-resolve.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditional-values.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-unique-condition-sets.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-exports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-local-imports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-conditional-value.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-windows.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/parse.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-conditional-values-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/errors.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-named-exports-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-pkg.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/star-glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-path.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/file-exists.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-file-url.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-dep-package.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-dependency-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-package-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-json.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-star-match.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/has-magic.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/ignore.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/assert-valid-pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/ast.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/escape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/unescape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/walker.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/brace-expressions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/processor.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/src/index.ts"
]
},
"root": "45484ab3-f56a-48d7-bb63-b809a03a3128",
"externalID": "test/swagger-initializer.test.js",
"code": 0,
"signal": null,
"runtime": 552.830542
}

View File

@@ -0,0 +1,244 @@
{
"date": "2024-08-14T13:50:04.355Z",
"argv": [
"/Users/matteo/.nvm/versions/node/v20.16.0/bin/node",
"/Users/matteo/Repositories/fastify-swagger-ui/test/csp.test.js"
],
"execArgv": [
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"--enable-source-maps",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs"
],
"NODE_OPTIONS": "\"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs\"",
"cwd": "/Users/matteo/Repositories/fastify-swagger-ui",
"pid": 56644,
"ppid": 56642,
"parent": null,
"uuid": "4b460e81-afc7-4f5a-b5eb-ac1634687946",
"files": [
"/Users/matteo/Repositories/fastify-swagger-ui/test/csp.test.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import-loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/hooks.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service-client.js",
"/Users/matteo/Repositories/fastify-swagger-ui/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/examples/options.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/routes.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/swagger-initializer.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/serialize.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/index-html.js"
],
"sources": {
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/import.mts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/mock-service.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-relative-require.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/export-line.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/munge-mocks.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/resolve-mock-entry-point.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/service-key.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/call-site-like.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/require-resolve.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditional-values.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-unique-condition-sets.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-exports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-local-imports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-conditional-value.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-windows.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/parse.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-conditional-values-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/errors.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-named-exports-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-pkg.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/star-glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-path.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/file-exists.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-dep-package.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-file-url.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-dependency-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-package-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-json.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-star-match.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/ignore.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/has-magic.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/assert-valid-pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/ast.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/escape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/unescape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/walker.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/brace-expressions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/processor.ts"
]
},
"root": "4b460e81-afc7-4f5a-b5eb-ac1634687946",
"externalID": "test/csp.test.js",
"code": 0,
"signal": null,
"runtime": 891.98675
}

View File

@@ -0,0 +1,244 @@
{
"date": "2024-08-14T13:50:04.383Z",
"argv": [
"/Users/matteo/.nvm/versions/node/v20.16.0/bin/node",
"/Users/matteo/Repositories/fastify-swagger-ui/test/route.test.js"
],
"execArgv": [
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"--enable-source-maps",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs"
],
"NODE_OPTIONS": "\"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs\"",
"cwd": "/Users/matteo/Repositories/fastify-swagger-ui",
"pid": 56649,
"ppid": 56642,
"parent": null,
"uuid": "85b6df3e-c5d4-43eb-b474-bc0a10d40fcd",
"files": [
"/Users/matteo/Repositories/fastify-swagger-ui/test/route.test.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import-loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/hooks.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service-client.js",
"/Users/matteo/Repositories/fastify-swagger-ui/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/examples/options.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/routes.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/swagger-initializer.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/serialize.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/index-html.js"
],
"sources": {
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/import.mts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/mock-service.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-relative-require.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/export-line.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/munge-mocks.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/resolve-mock-entry-point.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/service-key.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/call-site-like.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/require-resolve.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditional-values.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-unique-condition-sets.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-exports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-local-imports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-conditional-value.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-windows.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/parse.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-conditional-values-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/errors.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-named-exports-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-pkg.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/star-glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-path.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/file-exists.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-dep-package.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-file-url.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-dependency-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-package-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-json.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-star-match.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/has-magic.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/ignore.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/assert-valid-pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/ast.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/escape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/unescape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/walker.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/brace-expressions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/processor.ts"
]
},
"root": "85b6df3e-c5d4-43eb-b474-bc0a10d40fcd",
"externalID": "test/route.test.js",
"code": 0,
"signal": null,
"runtime": 1116.968709
}

View File

@@ -0,0 +1,243 @@
{
"date": "2024-08-14T13:50:04.374Z",
"argv": [
"/Users/matteo/.nvm/versions/node/v20.16.0/bin/node",
"/Users/matteo/Repositories/fastify-swagger-ui/test/prepare.test.js"
],
"execArgv": [
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"--enable-source-maps",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs"
],
"NODE_OPTIONS": "\"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs\"",
"cwd": "/Users/matteo/Repositories/fastify-swagger-ui",
"pid": 56648,
"ppid": 56642,
"parent": null,
"uuid": "afb3a63c-0144-486e-8510-f153150b8c7a",
"files": [
"/Users/matteo/Repositories/fastify-swagger-ui/test/prepare.test.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import-loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/hooks.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service-client.js",
"/Users/matteo/Repositories/fastify-swagger-ui/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/routes.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/swagger-initializer.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/serialize.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/index-html.js"
],
"sources": {
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/import.mts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/mock-service.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-relative-require.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/export-line.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/munge-mocks.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/resolve-mock-entry-point.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/service-key.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/call-site-like.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/require-resolve.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditional-values.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-unique-condition-sets.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-exports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-conditional-value.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-local-imports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-windows.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/parse.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-conditional-values-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/errors.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-named-exports-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-pkg.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/star-glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-path.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/file-exists.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-dep-package.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-file-url.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-dependency-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-package-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-json.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-star-match.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/ignore.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/has-magic.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/assert-valid-pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/ast.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/escape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/unescape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/walker.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/brace-expressions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/processor.ts"
]
},
"root": "afb3a63c-0144-486e-8510-f153150b8c7a",
"externalID": "test/prepare.test.js",
"code": 0,
"signal": null,
"runtime": 821.109625
}

View File

@@ -0,0 +1,243 @@
{
"date": "2024-08-14T13:50:05.331Z",
"argv": [
"/Users/matteo/.nvm/versions/node/v20.16.0/bin/node",
"/Users/matteo/Repositories/fastify-swagger-ui/test/transform-swagger.test.js"
],
"execArgv": [
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"--enable-source-maps",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs"
],
"NODE_OPTIONS": "\"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs\"",
"cwd": "/Users/matteo/Repositories/fastify-swagger-ui",
"pid": 56656,
"ppid": 56642,
"parent": null,
"uuid": "c43e9c1b-3265-4168-99ae-73232ccd550a",
"files": [
"/Users/matteo/Repositories/fastify-swagger-ui/test/transform-swagger.test.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import-loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/hooks.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service-client.js",
"/Users/matteo/Repositories/fastify-swagger-ui/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/routes.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/swagger-initializer.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/serialize.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/index-html.js"
],
"sources": {
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/import.mts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/mock-service.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-relative-require.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/export-line.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/munge-mocks.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/resolve-mock-entry-point.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/service-key.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/call-site-like.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/require-resolve.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditional-values.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-unique-condition-sets.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-exports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-local-imports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-conditional-value.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-windows.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/parse.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-conditional-values-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/errors.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-named-exports-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-pkg.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/star-glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-path.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/file-exists.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-dep-package.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-file-url.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-dependency-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-package-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-json.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-star-match.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/has-magic.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/ignore.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/assert-valid-pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/ast.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/escape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/unescape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/walker.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/brace-expressions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/processor.ts"
]
},
"root": "c43e9c1b-3265-4168-99ae-73232ccd550a",
"externalID": "test/transform-swagger.test.js",
"code": 0,
"signal": null,
"runtime": 553.222875
}

View File

@@ -0,0 +1,243 @@
{
"date": "2024-08-14T13:50:05.326Z",
"argv": [
"/Users/matteo/.nvm/versions/node/v20.16.0/bin/node",
"/Users/matteo/Repositories/fastify-swagger-ui/test/theme.test.js"
],
"execArgv": [
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"--enable-source-maps",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs"
],
"NODE_OPTIONS": "\"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs\"",
"cwd": "/Users/matteo/Repositories/fastify-swagger-ui",
"pid": 56655,
"ppid": 56642,
"parent": null,
"uuid": "d1023351-a2cc-4985-b00b-5d663e9fa63f",
"files": [
"/Users/matteo/Repositories/fastify-swagger-ui/test/theme.test.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import-loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/hooks.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service-client.js",
"/Users/matteo/Repositories/fastify-swagger-ui/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/routes.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/swagger-initializer.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/serialize.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/index-html.js"
],
"sources": {
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/import.mts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/mock-service.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/export-line.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/resolve-mock-entry-point.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/service-key.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/munge-mocks.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-relative-require.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/call-site-like.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/require-resolve.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditional-values.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-unique-condition-sets.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-exports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-local-imports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-conditional-value.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-windows.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/parse.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-conditional-values-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/errors.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-named-exports-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-pkg.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/star-glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-path.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/file-exists.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-dep-package.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-file-url.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-dependency-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-package-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-json.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-star-match.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/has-magic.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/ignore.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/assert-valid-pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/ast.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/unescape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/escape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/walker.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/processor.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/brace-expressions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/src/index.ts"
]
},
"root": "d1023351-a2cc-4985-b00b-5d663e9fa63f",
"externalID": "test/theme.test.js",
"code": 0,
"signal": null,
"runtime": 581.501708
}

View File

@@ -0,0 +1,243 @@
{
"date": "2024-08-14T13:50:04.357Z",
"argv": [
"/Users/matteo/.nvm/versions/node/v20.16.0/bin/node",
"/Users/matteo/Repositories/fastify-swagger-ui/test/decorator.test.js"
],
"execArgv": [
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"--enable-source-maps",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs"
],
"NODE_OPTIONS": "\"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs\"",
"cwd": "/Users/matteo/Repositories/fastify-swagger-ui",
"pid": 56645,
"ppid": 56642,
"parent": null,
"uuid": "ef71f8f3-82e9-4182-8a50-c266a1da5ca2",
"files": [
"/Users/matteo/Repositories/fastify-swagger-ui/test/decorator.test.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import-loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/hooks.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service-client.js",
"/Users/matteo/Repositories/fastify-swagger-ui/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/routes.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/swagger-initializer.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/serialize.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/index-html.js"
],
"sources": {
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/import.mts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/mock-service.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-relative-require.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/export-line.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/munge-mocks.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/resolve-mock-entry-point.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/service-key.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/call-site-like.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/require-resolve.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditional-values.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-unique-condition-sets.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-exports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-local-imports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-conditional-value.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-windows.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/parse.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-conditional-values-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/errors.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-named-exports-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-pkg.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/star-glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-path.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/file-exists.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-dep-package.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-file-url.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-package-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-dependency-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-json.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-star-match.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/has-magic.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/ignore.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/assert-valid-pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/ast.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/escape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/unescape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/walker.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/brace-expressions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/processor.ts"
]
},
"root": "ef71f8f3-82e9-4182-8a50-c266a1da5ca2",
"externalID": "test/decorator.test.js",
"code": 0,
"signal": null,
"runtime": 726.960208
}

View File

@@ -0,0 +1,239 @@
{
"date": "2024-08-14T13:50:04.389Z",
"argv": [
"/Users/matteo/.nvm/versions/node/v20.16.0/bin/node",
"/Users/matteo/Repositories/fastify-swagger-ui/test/serialize.test.js"
],
"execArgv": [
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"--enable-source-maps",
"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs"
],
"NODE_OPTIONS": "\"--import=file:///Users/matteo/Repositories/fastify-swagger-ui/node_modules/@tapjs/processinfo/dist/esm/import.mjs\"",
"cwd": "/Users/matteo/Repositories/fastify-swagger-ui",
"pid": 56650,
"ppid": 56642,
"parent": null,
"uuid": "f048afb8-ac72-4354-ab01-546711c3530b",
"files": [
"/Users/matteo/Repositories/fastify-swagger-ui/test/serialize.test.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/import-loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/loader.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/hooks.mjs",
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service-client.js",
"/Users/matteo/Repositories/fastify-swagger-ui/lib/serialize.js"
],
"sources": {
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/import.mjs": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/import.mts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/mock-service.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/mock-service.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-relative-require.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-relative-require.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/export-line.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/export-line.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/munge-mocks.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/munge-mocks.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/resolve-mock-entry-point.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/resolve-mock-entry-point.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/dist/esm/service-key.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/mock/src/service-key.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/call-site-like.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/call-site-like.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/require-resolve.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/require-resolve.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditional-values.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditional-values.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-all-conditions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-all-conditions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-unique-condition-sets.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-unique-condition-sets.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-exports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-exports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-all-local-imports.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-all-local-imports.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-conditional-value.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-conditional-value.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/is-windows.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/is-windows.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/dist/esm/parse.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/tap/node_modules/@tapjs/stack/src/parse.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-conditional-values-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-conditional-values-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/errors.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/errors.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/get-named-exports-list.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/get-named-exports-list.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-pkg.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-pkg.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-path.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-path.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/star-glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/star-glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/file-exists.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/file-exists.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-dep-package.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-dep-package.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/to-file-url.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/to-file-url.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-dependency-export.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-dependency-export.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/resolve-package-import.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/resolve-package-import.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/find-star-match.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/find-star-match.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/dist/esm/read-json.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/resolve-import/src/read-json.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/dist/mjs/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/walk-up-path/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/glob.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/glob.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/has-magic.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/has-magic.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/ignore.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/ignore.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/assert-valid-pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/assert-valid-pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/ast.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/ast.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/escape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/escape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/unescape.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/unescape.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/pattern.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/pattern.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/walker.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/walker.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/path-scurry/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/dist/esm/brace-expressions.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minimatch/src/brace-expressions.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/lru-cache/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/dist/esm/index.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/minipass/src/index.ts"
],
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/dist/esm/processor.js": [
"/Users/matteo/Repositories/fastify-swagger-ui/node_modules/glob/src/processor.ts"
]
},
"root": "f048afb8-ac72-4354-ab01-546711c3530b",
"externalID": "test/serialize.test.js",
"code": 0,
"signal": null,
"runtime": 754.199292
}

View File

@@ -0,0 +1,940 @@
TN:
SF:index.js
FN:8,fastifySwaggerUi
FNF:1
FNH:1
FNDA:61,fastifySwaggerUi
DA:1,10
DA:2,10
DA:3,10
DA:4,10
DA:5,10
DA:6,10
DA:7,10
DA:8,61
DA:9,61
DA:10,61
DA:11,61
DA:12,61
DA:13,61
DA:14,60
DA:15,60
DA:16,60
DA:17,61
DA:18,61
DA:19,61
DA:20,61
DA:21,61
DA:22,61
DA:23,61
DA:24,61
DA:25,61
DA:26,61
DA:27,61
DA:28,10
DA:29,10
DA:30,10
DA:31,10
DA:32,10
DA:33,10
DA:34,10
DA:35,10
LF:35
LH:35
BRDA:1,0,0,10
BRDA:8,1,0,61
BRDA:13,2,0,60
BRDA:19,3,0,53
BRDA:20,4,0,60
BRDA:21,5,0,60
BRDA:23,6,0,52
BRF:7
BRH:7
end_of_record
TN:
SF:examples/options.js
FNF:0
FNH:0
DA:1,3
DA:2,3
DA:3,3
DA:4,3
DA:5,3
DA:6,3
DA:7,3
DA:8,3
DA:9,3
DA:10,3
DA:11,3
DA:12,3
DA:13,3
DA:14,3
DA:15,3
DA:16,3
DA:17,3
DA:18,3
DA:19,3
DA:20,3
DA:21,3
DA:22,3
DA:23,3
DA:24,3
DA:25,3
DA:26,3
DA:27,3
DA:28,3
DA:29,3
DA:30,3
DA:31,3
DA:32,3
DA:33,3
DA:34,3
DA:35,3
DA:36,3
DA:37,3
DA:38,3
DA:39,3
DA:40,3
DA:41,3
DA:42,3
DA:43,3
DA:44,3
DA:45,3
DA:46,3
DA:47,3
DA:48,3
DA:49,3
DA:50,3
DA:51,3
DA:52,3
DA:53,3
DA:54,3
DA:55,3
DA:56,3
DA:57,3
DA:58,3
DA:59,3
DA:60,3
DA:61,3
DA:62,3
DA:63,3
DA:64,3
DA:65,3
DA:66,3
DA:67,3
DA:68,3
DA:69,3
DA:70,3
DA:71,3
DA:72,3
DA:73,3
DA:74,3
DA:75,3
DA:76,3
DA:77,3
DA:78,3
DA:79,3
DA:80,3
DA:81,3
DA:82,3
DA:83,3
DA:84,3
DA:85,3
DA:86,3
DA:87,3
DA:88,3
DA:89,3
DA:90,3
DA:91,3
DA:92,3
DA:93,3
DA:94,3
DA:95,3
DA:96,3
DA:97,3
DA:98,3
DA:99,3
DA:100,3
DA:101,3
DA:102,3
DA:103,3
DA:104,3
DA:105,3
DA:106,3
DA:107,3
DA:108,3
DA:109,3
DA:110,3
DA:111,3
DA:112,3
DA:113,3
DA:114,3
DA:115,3
DA:116,3
DA:117,3
DA:118,3
DA:119,3
DA:120,3
DA:121,3
DA:122,3
DA:123,3
DA:124,3
DA:125,3
DA:126,3
DA:127,3
DA:128,3
DA:129,3
DA:130,3
DA:131,3
DA:132,3
DA:133,3
DA:134,3
DA:135,3
DA:136,3
DA:137,3
DA:138,3
DA:139,3
DA:140,3
DA:141,3
DA:142,3
DA:143,3
DA:144,3
DA:145,3
DA:146,3
DA:147,3
DA:148,3
DA:149,3
DA:150,3
DA:151,3
DA:152,3
DA:153,3
DA:154,3
DA:155,3
DA:156,3
DA:157,3
DA:158,3
DA:159,3
DA:160,3
DA:161,3
DA:162,3
DA:163,3
DA:164,3
DA:165,3
DA:166,3
DA:167,3
DA:168,3
DA:169,3
DA:170,3
DA:171,3
DA:172,3
DA:173,3
DA:174,3
DA:175,3
DA:176,3
DA:177,3
DA:178,3
DA:179,3
DA:180,3
DA:181,3
DA:182,3
DA:183,3
DA:184,3
DA:185,3
DA:186,3
DA:187,3
DA:188,3
DA:189,3
DA:190,3
DA:191,3
DA:192,3
DA:193,3
DA:194,3
DA:195,3
DA:196,3
DA:197,3
DA:198,3
DA:199,3
DA:200,3
DA:201,3
DA:202,3
DA:203,3
DA:204,3
DA:205,3
DA:206,3
DA:207,3
DA:208,3
DA:209,3
DA:210,3
DA:211,3
DA:212,3
DA:213,3
DA:214,3
DA:215,3
DA:216,3
DA:217,3
DA:218,3
DA:219,3
DA:220,3
DA:221,3
DA:222,3
DA:223,3
DA:224,3
DA:225,3
DA:226,3
DA:227,3
DA:228,3
DA:229,3
DA:230,3
DA:231,3
DA:232,3
DA:233,3
DA:234,3
DA:235,3
DA:236,3
DA:237,3
DA:238,3
DA:239,3
DA:240,3
DA:241,3
DA:242,3
DA:243,3
DA:244,3
DA:245,3
DA:246,3
DA:247,3
DA:248,3
DA:249,3
DA:250,3
DA:251,3
DA:252,3
DA:253,3
DA:254,3
DA:255,3
DA:256,3
DA:257,3
DA:258,3
DA:259,3
DA:260,3
DA:261,3
DA:262,3
DA:263,3
DA:264,3
DA:265,3
DA:266,3
DA:267,3
DA:268,3
DA:269,3
DA:270,3
DA:271,3
DA:272,3
DA:273,3
DA:274,3
DA:275,3
DA:276,3
DA:277,3
DA:278,3
DA:279,3
DA:280,3
DA:281,3
DA:282,3
DA:283,3
DA:284,3
DA:285,3
DA:286,3
DA:287,3
DA:288,3
DA:289,3
DA:290,3
DA:291,3
DA:292,3
DA:293,3
DA:294,3
DA:295,3
DA:296,3
DA:297,3
DA:298,3
DA:299,3
DA:300,3
DA:301,3
DA:302,3
DA:303,3
DA:304,3
DA:305,3
LF:305
LH:305
BRDA:1,0,0,3
BRF:1
BRH:1
end_of_record
TN:
SF:lib/index-html.js
FN:3,indexHtml
FNF:1
FNH:1
FNDA:61,indexHtml
DA:1,10
DA:2,10
DA:3,61
DA:4,61
DA:5,25
DA:6,25
DA:7,25
DA:8,25
DA:9,25
DA:10,25
DA:11,25
DA:12,25
DA:13,25
DA:14,25
DA:15,25
DA:16,25
DA:17,25
DA:18,23
DA:19,23
DA:20,25
DA:21,25
DA:22,25
DA:23,25
DA:24,25
DA:25,25
DA:26,25
DA:27,25
DA:28,25
DA:29,25
DA:30,25
DA:31,25
DA:32,25
DA:33,61
DA:34,10
DA:35,10
LF:35
LH:35
BRDA:1,0,0,10
BRDA:3,1,0,61
BRDA:4,2,0,25
BRDA:5,3,0,8
BRDA:5,4,0,17
BRDA:11,5,0,24
BRDA:11,6,0,24
BRDA:14,7,0,24
BRDA:14,8,0,2
BRDA:14,9,0,23
BRDA:15,10,0,24
BRDA:16,11,0,2
BRDA:17,12,0,23
BRDA:28,13,0,24
BRDA:28,14,0,6
BRDA:28,15,0,19
BRDA:14,16,0,2
BRDA:16,17,0,2
BRDA:28,18,0,6
BRF:19
BRH:19
end_of_record
TN:
SF:lib/routes.js
FN:13,fastifySwagger
FN:65,handler
FN:81,handler
FN:97,handler
FN:114,handler
FN:127,handler
FN:139,handler
FN:156,fastify.route.handler
FN:159,fastify.route.handler
FN:162,fastify.route.handler
FN:174,fastify.route.handler
FN:179,fastify.route.handler
FN:184,fastify.route.handler
FN:210,handler
FNF:14
FNH:14
FNDA:61,fastifySwagger
FNDA:2,handler
FNDA:2,handler
FNDA:2,handler
FNDA:25,handler
FNDA:1,handler
FNDA:6,handler
FNDA:1,fastify.route.handler
FNDA:1,fastify.route.handler
FNDA:9,fastify.route.handler
FNDA:1,fastify.route.handler
FNDA:1,fastify.route.handler
FNDA:8,fastify.route.handler
FNDA:5,handler
DA:1,10
DA:2,10
DA:3,10
DA:4,10
DA:5,10
DA:6,10
DA:7,10
DA:8,10
DA:9,10
DA:10,10
DA:11,10
DA:12,10
DA:13,61
DA:14,61
DA:15,61
DA:16,1
DA:17,1
DA:18,1
DA:19,61
DA:20,2
DA:21,2
DA:22,61
DA:23,1
DA:24,1
DA:25,2
DA:26,2
DA:27,1
DA:28,1
DA:29,61
DA:30,61
DA:31,5
DA:32,5
DA:33,5
DA:34,4
DA:35,4
DA:36,5
DA:37,5
DA:38,5
DA:39,2
DA:40,2
DA:41,5
DA:42,5
DA:43,5
DA:44,61
DA:45,61
DA:46,61
DA:47,2
DA:48,2
DA:49,2
DA:50,2
DA:51,2
DA:52,4
DA:53,4
DA:54,2
DA:55,61
DA:56,61
DA:57,60
DA:58,60
DA:59,2
DA:60,2
DA:61,2
DA:62,2
DA:63,2
DA:64,2
DA:65,2
DA:66,2
DA:67,2
DA:68,2
DA:69,2
DA:70,2
DA:71,2
DA:72,2
DA:73,60
DA:74,60
DA:75,6
DA:76,6
DA:77,6
DA:78,6
DA:79,6
DA:80,6
DA:81,6
DA:82,2
DA:83,2
DA:84,2
DA:85,2
DA:86,6
DA:87,6
DA:88,6
DA:89,60
DA:90,60
DA:91,2
DA:92,2
DA:93,2
DA:94,2
DA:95,2
DA:96,2
DA:97,2
DA:98,2
DA:99,2
DA:100,2
DA:101,2
DA:102,2
DA:103,2
DA:104,2
DA:105,60
DA:106,61
DA:107,61
DA:108,61
DA:109,61
DA:110,61
DA:111,61
DA:112,61
DA:113,61
DA:114,61
DA:115,25
DA:116,25
DA:117,25
DA:118,25
DA:119,25
DA:120,61
DA:121,61
DA:122,61
DA:123,61
DA:124,61
DA:125,61
DA:126,61
DA:127,61
DA:128,1
DA:129,1
DA:130,61
DA:131,61
DA:132,61
DA:133,61
DA:134,61
DA:135,61
DA:136,61
DA:137,61
DA:138,61
DA:139,61
DA:140,6
DA:141,6
DA:142,6
DA:143,6
DA:144,61
DA:145,61
DA:146,61
DA:147,61
DA:148,61
DA:149,61
DA:150,61
DA:151,61
DA:152,61
DA:153,61
DA:154,61
DA:155,61
DA:156,4
DA:157,1
DA:158,1
DA:159,4
DA:160,1
DA:161,1
DA:162,61
DA:163,9
DA:164,9
DA:165,61
DA:166,61
DA:167,61
DA:168,61
DA:169,61
DA:170,61
DA:171,61
DA:172,61
DA:173,61
DA:174,4
DA:175,1
DA:176,1
DA:177,1
DA:178,1
DA:179,4
DA:180,1
DA:181,1
DA:182,1
DA:183,1
DA:184,61
DA:185,8
DA:186,8
DA:187,8
DA:188,8
DA:189,61
DA:190,61
DA:191,61
DA:192,61
DA:193,61
DA:194,61
DA:195,61
DA:196,61
DA:197,61
DA:198,61
DA:199,4
DA:200,4
DA:201,4
DA:202,4
DA:203,4
DA:204,4
DA:205,4
DA:206,4
DA:207,4
DA:208,4
DA:209,4
DA:210,4
DA:211,5
DA:212,5
DA:213,5
DA:214,4
DA:215,4
DA:216,61
DA:217,61
DA:218,61
DA:219,10
DA:220,10
LF:220
LH:220
BRDA:1,0,0,10
BRDA:13,1,0,61
BRDA:15,2,0,1
BRDA:19,3,0,2
BRDA:22,4,0,1
BRDA:22,5,0,1
BRDA:30,6,0,57
BRDA:30,7,0,5
BRDA:46,8,0,2
BRDA:51,9,0,4
BRDA:56,10,0,60
BRDA:58,11,0,2
BRDA:74,12,0,6
BRDA:90,13,0,2
BRDA:147,14,0,59
BRDA:155,15,0,4
BRDA:156,16,0,2
BRDA:159,17,0,2
BRDA:162,18,0,57
BRDA:173,19,0,4
BRDA:174,20,0,2
BRDA:179,21,0,2
BRDA:184,22,0,57
BRDA:193,23,0,57
BRDA:198,24,0,4
BRDA:24,25,0,2
BRDA:25,26,0,1
BRDA:25,27,0,1
BRDA:31,28,0,5
BRDA:33,29,0,4
BRDA:38,30,0,2
BRDA:65,31,0,2
BRDA:81,32,0,2
BRDA:97,33,0,2
BRDA:114,34,0,25
BRDA:127,35,0,1
BRDA:139,36,0,6
BRDA:156,37,0,1
BRDA:159,38,0,1
BRDA:162,39,0,9
BRDA:174,40,0,1
BRDA:179,41,0,1
BRDA:184,42,0,8
BRDA:210,43,0,5
BRF:44
BRH:44
end_of_record
TN:
SF:lib/serialize.js
FN:3,serialize
FN:38,serializeSymbol
FN:44,serializeArray
FN:55,serializeObject
FNF:4
FNH:4
FNDA:248,serialize
FNDA:2,serializeSymbol
FNDA:14,serializeArray
FNDA:129,serializeObject
DA:1,11
DA:2,11
DA:3,248
DA:4,248
DA:5,248
DA:6,4
DA:7,248
DA:8,3
DA:9,248
DA:10,8
DA:11,248
DA:12,10
DA:13,248
DA:14,208
DA:15,63
DA:16,208
DA:17,8
DA:18,145
DA:19,1
DA:20,137
DA:21,1
DA:22,136
DA:23,3
DA:24,135
DA:25,3
DA:26,132
DA:27,129
DA:28,129
DA:29,248
DA:30,11
DA:31,248
DA:32,2
DA:33,248
DA:34,2
DA:35,248
DA:36,248
DA:37,11
DA:38,2
DA:39,2
DA:40,2
DA:41,2
DA:42,2
DA:43,11
DA:44,14
DA:45,14
DA:46,14
DA:47,14
DA:48,14
DA:49,17
DA:50,17
DA:51,17
DA:52,14
DA:53,14
DA:54,11
DA:55,129
DA:56,129
DA:57,129
DA:58,129
DA:59,129
DA:60,129
DA:61,129
DA:62,6
DA:63,6
DA:64,6
DA:65,6
DA:66,129
DA:67,129
DA:68,11
DA:69,11
LF:69
LH:69
BRDA:1,0,0,11
BRDA:3,1,0,248
BRDA:5,2,0,4
BRDA:7,3,0,3
BRDA:8,4,0,2
BRDA:8,5,0,1
BRDA:9,6,0,8
BRDA:11,7,0,10
BRDA:13,8,0,208
BRDA:14,9,0,63
BRDA:16,10,0,145
BRDA:16,11,0,8
BRDA:18,12,0,137
BRDA:18,13,0,1
BRDA:20,14,0,136
BRDA:20,15,0,1
BRDA:22,16,0,135
BRDA:22,17,0,3
BRDA:24,18,0,132
BRDA:24,19,0,3
BRDA:26,20,0,129
BRDA:29,21,0,11
BRDA:31,22,0,2
BRDA:33,23,0,2
BRDA:38,24,0,2
BRDA:40,25,0,1
BRDA:41,26,0,1
BRDA:44,27,0,14
BRDA:48,28,0,17
BRDA:50,29,0,6
BRDA:55,30,0,129
BRDA:61,31,0,6
BRDA:64,32,0,1
BRF:33
BRH:33
end_of_record
TN:
SF:lib/swagger-initializer.js
FN:5,swaggerInitializer
FNF:1
FNH:1
FNDA:61,swaggerInitializer
DA:1,10
DA:2,10
DA:3,10
DA:4,10
DA:5,61
DA:6,61
DA:7,61
DA:8,61
DA:9,61
DA:10,61
DA:11,61
DA:12,61
DA:13,61
DA:14,61
DA:15,61
DA:16,61
DA:17,61
DA:18,61
DA:19,61
DA:20,61
DA:21,61
DA:22,61
DA:23,61
DA:24,61
DA:25,61
DA:26,61
DA:27,61
DA:28,61
DA:29,61
DA:30,61
DA:31,61
DA:32,61
DA:33,61
DA:34,61
DA:35,61
DA:36,61
DA:37,61
DA:38,61
DA:39,61
DA:40,61
DA:41,61
DA:42,61
DA:43,61
DA:44,61
DA:45,61
DA:46,61
DA:47,61
DA:48,61
DA:49,61
DA:50,61
DA:51,61
DA:52,61
DA:53,61
DA:54,61
DA:55,61
DA:56,61
DA:57,61
DA:58,61
DA:59,61
DA:60,61
DA:61,61
DA:62,61
DA:63,61
DA:64,61
DA:65,61
DA:66,61
DA:67,61
DA:68,61
DA:69,61
DA:70,61
DA:71,61
DA:72,61
DA:73,10
DA:74,10
LF:74
LH:74
BRDA:1,0,0,10
BRDA:5,1,0,61
BRF:2
BRH:2
end_of_record

View File

@@ -0,0 +1,56 @@
TAP version 14
# Subtest: staticCSP = undefined
1..3
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 1 - staticCSP = undefined # time=90.632ms
# Subtest: staticCSP = true
1..5
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 5 - should be equal
ok 2 - staticCSP = true # time=33.606ms
# Subtest: staticCSP = "default-src 'self';"
1..5
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 5 - should be equal
ok 3 - staticCSP = "default-src 'self';" # time=15.535ms
# Subtest: staticCSP = object
1..5
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 5 - should be equal
ok 4 - staticCSP = object # time=14.795ms
# Subtest: transformStaticCSP = function
1..6
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 5 - should be equal
ok 6 - should be equal
ok 5 - transformStaticCSP = function # time=29.716ms
# Subtest: transformStaticCSP = function, with @fastify/helmet
1..6
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 5 - should be equal
ok 6 - should be equal
ok 6 - transformStaticCSP = function, with @fastify/helmet # time=26.038ms
1..6

View File

@@ -0,0 +1,9 @@
TAP version 14
# Subtest: fastify.swaggerCSP should exist
1..3
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 1 - fastify.swaggerCSP should exist # time=40.558ms
1..1

View File

@@ -0,0 +1,31 @@
TAP version 14
# Subtest: hooks on static swagger
ok 1 - root auth required
ok 2 - auth required yaml
ok 3 - should be equal
ok 4 - should be equal
ok 5 - valid swagger yaml
ok 6 - auth required json
ok 7 - should be equal
ok 8 - should be equal
ok 9 - valid swagger json
1..9
ok 1 - hooks on static swagger # time=60.329ms
# Subtest: hooks on dynamic swagger
ok 1 - root auth required
ok 2 - auth required yaml
ok 3 - auth required json
ok 4 - should be equal
ok 5 - should be equal
ok 6 - should be equal
ok 7 - should be equal
1..7
ok 2 - hooks on dynamic swagger # time=59.917ms
# Subtest: catch all added schema
ok 1 - should be equivalent
1..1
ok 3 - catch all added schema # time=11.085ms
1..3

View File

@@ -0,0 +1,7 @@
TAP version 14
# Subtest: fastify will response swagger csp
1..1
ok 1 - should be equivalent
ok 1 - fastify will response swagger csp # time=43.138ms
1..1

View File

@@ -0,0 +1,14 @@
TAP version 14
# Subtest: Swagger source does not contain sourceMaps
1..2
ok 1 - should be equal
ok 2 - should be equal
ok 1 - Swagger source does not contain sourceMaps # time=45.21ms
# Subtest: Swagger css does not contain sourceMaps
1..2
ok 1 - should be equal
ok 2 - should be equal
ok 2 - Swagger css does not contain sourceMaps # time=15.248ms
1..2

View File

@@ -0,0 +1,195 @@
TAP version 14
# Subtest: /documentation/json route
1..1
ok 1 - valid swagger object
ok 1 - /documentation/json route # time=178.524ms
# Subtest: fastify.swagger should return a valid swagger yaml
1..3
ok 1 - should be equal
ok 2 - should be equal
ok 3 - valid swagger yaml
ok 2 - fastify.swagger should return a valid swagger yaml # time=31.013ms
# Subtest: /documentation should display index html
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 3 - /documentation should display index html # time=16.28ms
# Subtest: /documentation/ should display index html
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 4 - /documentation/ should display index html # time=15.3ms
# Subtest: /v1/documentation should display index html
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 5 - /v1/documentation should display index html # time=10.44ms
# Subtest: /v1/documentation/ should display index html
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 6 - /v1/documentation/ should display index html # time=14.017ms
# Subtest: /v1/foobar should display index html
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 7 - /v1/foobar should display index html # time=12.594ms
# Subtest: /v1/foobar/ should display index html
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 8 - /v1/foobar/ should display index html # time=12.211ms
# Subtest: with routePrefix: '/' should display index html
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 9 - with routePrefix: '/' should display index html # time=3.777ms
# Subtest: /documentation/static/:file should send back the correct file
1..21
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 5 - should be equal
ok 6 - should be equal
ok 7 - should be equal
ok 8 - should be equal
ok 9 - should be equal
ok 10 - should be equal
ok 11 - should be equal
ok 12 - should be equal
ok 13 - should be equal
ok 14 - should be equal
ok 15 - should be equal
ok 16 - should be equal
ok 17 - should be equal
ok 18 - should be equal
ok 19 - should be equal
ok 20 - should be equal
ok 21 - should be equal
ok 10 - /documentation/static/:file should send back the correct file # time=25.477ms
# Subtest: /documentation/static/:file should send back file from baseDir
1..2
ok 1 - should be equal
ok 2 - should be equal
ok 11 - /documentation/static/:file should send back file from baseDir # time=4.155ms
# Subtest: /documentation/static/:file 404
1..2
ok 1 - should be equal
ok 2 - should match pattern
ok 12 - /documentation/static/:file 404 # time=11.556ms
# Subtest: /documentation2/json route (overwrite)
1..1
ok 1 - valid swagger object
ok 13 - /documentation2/json route (overwrite) # time=52.974ms
# Subtest: /documentation/:myfile should return 404 in dynamic mode
1..1
ok 1 - should be equal
ok 14 - /documentation/:myfile should return 404 in dynamic mode # time=3.66ms
# Subtest: /documentation/:myfile should run custom NotFoundHandler in dynamic mode
1..1
ok 1 - should be equal
ok 15 - /documentation/:myfile should run custom NotFoundHandler in dynamic mode # time=4.779ms
# Subtest: /documentation/* should not return module files when baseDir not set
1..1
ok 1 - should be equal
ok 16 - /documentation/* should not return module files when baseDir not set # time=3.221ms
# Subtest: should return silent log level of route /documentation
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 5 - should be equal
ok 6 - should be equal
ok 7 - should be equal
ok 8 - should be equal
ok 9 - should be equal
ok 10 - should be equal
ok 11 - should be equal
ok 12 - should be equal
ok 13 - should be equal
ok 14 - should be equal
1..14
ok 17 - should return silent log level of route /documentation # time=5.161ms
# Subtest: should return empty log level of route /documentation
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 5 - should be equal
ok 6 - should be equal
ok 7 - should be equal
ok 8 - should be equal
ok 9 - should be equal
ok 10 - should be equal
ok 11 - should be equal
ok 12 - should be equal
ok 13 - should be equal
ok 14 - should be equal
1..14
ok 18 - should return empty log level of route /documentation # time=3.067ms
# Subtest: /documentation should display index html with correct asset urls
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 19 - /documentation should display index html with correct asset urls # time=4.341ms
# Subtest: /documentation/ should display index html with correct asset urls
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 20 - /documentation/ should display index html with correct asset urls # time=3.886ms
# Subtest: /docs should display index html with correct asset urls when documentation prefix is set
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 21 - /docs should display index html with correct asset urls when documentation prefix is set # time=2.848ms
# Subtest: /docs/ should display index html with correct asset urls when documentation prefix is set
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 22 - /docs/ should display index html with correct asset urls when documentation prefix is set # time=2.632ms
1..22

View File

@@ -0,0 +1,108 @@
TAP version 14
# Subtest: serialize
1..8
# Subtest: boolean
1..2
ok 1 - should be equal
ok 2 - should be equal
ok 1 - boolean # time=1.454ms
# Subtest: number
1..7
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 5 - should be equal
ok 6 - should be equal
ok 7 - should be equal
ok 2 - number # time=0.608ms
# Subtest: string
1..3
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 3 - string # time=0.355ms
# Subtest: bigint
1..3
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - bigint # time=0.347ms
# Subtest: function
1..7
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 5 - should be equal
ok 6 - should be equal
ok 7 - should be equal
ok 5 - function # time=0.592ms
# Subtest: undefined
1..1
ok 1 - should be equal
ok 6 - undefined # time=0.243ms
# Subtest: symbol
1..2
ok 1 - should be equal
ok 2 - should be equal
ok 7 - symbol # time=0.401ms
# Subtest: object
1..7
# Subtest: null
1..1
ok 1 - should be equal
ok 1 - null # time=0.252ms
# Subtest: RegExp
1..1
ok 1 - should be equal
ok 2 - RegExp # time=0.339ms
# Subtest: Date
1..1
ok 1 - should be equal
ok 3 - Date # time=5.243ms
# Subtest: Array
1..5
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 5 - should be equal
ok 4 - Array # time=0.607ms
# Subtest: POJO
1..3
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 5 - POJO # time=0.358ms
# Subtest: Set
1..3
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 6 - Set # time=0.331ms
# Subtest: Map
1..3
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 7 - Map # time=0.461ms
ok 8 - object # time=11.107ms
ok 1 - serialize # time=23.146ms
1..1

View File

@@ -0,0 +1,95 @@
TAP version 14
# Subtest: swagger route returns yaml
1..3
ok 1 - should be equal
ok 2 - should be equal
ok 3 - valid swagger yaml
ok 1 - swagger route returns yaml # time=61.246ms
# Subtest: swagger route returns json
1..3
ok 1 - should be equal
ok 2 - should be equal
ok 3 - valid swagger json
ok 2 - swagger route returns json # time=17.207ms
# Subtest: postProcessor works, swagger route returns updated yaml
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - must match snapshot
ok 4 - valid swagger yaml
ok 3 - postProcessor works, swagger route returns updated yaml # time=17.301ms
# Subtest: swagger route returns explicitly passed doc
1..2
ok 1 - must match snapshot
ok 2 - valid explicitly passed spec document
ok 4 - swagger route returns explicitly passed doc # time=1.628ms
# Subtest: /documentation/:file should serve static file from the location of main specification file
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equal
ok 5 - /documentation/:file should serve static file from the location of main specification file # time=28.144ms
# Subtest: /documentation/non-existing-file calls custom NotFoundHandler
1..1
ok 1 - should be equal
ok 6 - /documentation/non-existing-file calls custom NotFoundHandler # time=4.864ms
# Subtest: /documentation/:file should be served from custom location
1..2
ok 1 - should be equal
ok 2 - should be equal
ok 7 - /documentation/:file should be served from custom location # time=11.384ms
# Subtest: /documentation/:file should be served from custom location with trailing slash(es)
1..2
ok 1 - should be equal
ok 2 - should be equal
ok 8 - /documentation/:file should be served from custom location with trailing slash(es) # time=14.473ms
# Subtest: /documentation/yaml returns cache.swaggerString on second request in static mode
1..6
ok 1 - should be equal
ok 2 - should be equal
ok 3 - valid swagger yaml
ok 4 - should be equal
ok 5 - should be equal
ok 6 - valid swagger yaml
ok 9 - /documentation/yaml returns cache.swaggerString on second request in static mode # time=17.006ms
# Subtest: /documentation/json returns cache.swaggerObject on second request in static mode
1..6
ok 1 - should be equal
ok 2 - should be equal
ok 3 - valid swagger json
ok 4 - should be equal
ok 5 - should be equal
ok 6 - valid swagger json
ok 10 - /documentation/json returns cache.swaggerObject on second request in static mode # time=8.351ms
# Subtest: /documentation/yaml returns cache.swaggerString on second request in dynamic mode
1..6
ok 1 - should be equal
ok 2 - should be equal
ok 3 - valid swagger yaml
ok 4 - should be equal
ok 5 - should be equal
ok 6 - valid swagger yaml
ok 11 - /documentation/yaml returns cache.swaggerString on second request in dynamic mode # time=17.962ms
# Subtest: /documentation/json returns cache.swaggerObject on second request in dynamic mode
1..6
ok 1 - should be equal
ok 2 - should be equal
ok 3 - valid swagger json
ok 4 - should be equal
ok 5 - should be equal
ok 6 - valid swagger json
ok 12 - /documentation/json returns cache.swaggerObject on second request in dynamic mode # time=14.765ms
1..12

View File

@@ -0,0 +1,31 @@
TAP version 14
# Subtest: /documentation/static/swagger-initializer.js should have default uiConfig
1..2
ok 1 - should be equal
ok 2 - should be equal
ok 1 - /documentation/static/swagger-initializer.js should have default uiConfig # time=38.835ms
# Subtest: /documentation/static/swagger-initializer.js should have configurable uiConfig
1..2
ok 1 - should be equal
ok 2 - should be equal
ok 2 - /documentation/static/swagger-initializer.js should have configurable uiConfig # time=3.996ms
# Subtest: /documentation/static/swagger-initializer.js should have default initOAuth
1..2
ok 1 - should be equal
ok 2 - should be equal
ok 3 - /documentation/static/swagger-initializer.js should have default initOAuth # time=3.65ms
# Subtest: /documentation/static/swagger-initializer.js should have configurable initOAuth
1..2
ok 1 - should be equal
ok 2 - should be equal
ok 4 - /documentation/static/swagger-initializer.js should have configurable initOAuth # time=3.376ms
# Subtest: customize logo
ok 1 - should be equal
1..1
ok 5 - customize logo # time=8.464ms
1..5

View File

@@ -0,0 +1,56 @@
TAP version 14
# Subtest: swagger route does not return additional theme
1..5
ok 1 - should be equal
ok 2 - should not match pattern
ok 3 - should not match pattern
ok 4 - should not match pattern
ok 5 - should be equal
ok 1 - swagger route does not return additional theme # time=43.781ms
# Subtest: swagger route returns additional theme
1..9
ok 1 - should be equal
ok 2 - should match pattern
ok 3 - should match pattern
ok 4 - should match pattern
ok 5 - should be equal
ok 6 - should be equal
ok 7 - should be equal
ok 8 - should be equal
ok 9 - should be equal
ok 2 - swagger route returns additional theme # time=7.438ms
# Subtest: swagger route returns additional theme - only js
1..4
ok 1 - should be equal
ok 2 - should match pattern
ok 3 - should be equal
ok 4 - should be equal
ok 3 - swagger route returns additional theme - only js # time=6.481ms
# Subtest: swagger route returns additional theme - only css
1..4
ok 1 - should be equal
ok 2 - should match pattern
ok 3 - should be equal
ok 4 - should be equal
ok 4 - swagger route returns additional theme - only css # time=5.806ms
# Subtest: swagger route returns additional theme - only favicon
1..5
ok 1 - should be equal
ok 2 - should match pattern
ok 3 - should be equal
ok 4 - should be equal
ok 5 - should be equal
ok 5 - swagger route returns additional theme - only favicon # time=7.207ms
# Subtest: swagger route returns additional theme - only title
1..3
ok 1 - should be equal
ok 2 - should match pattern
ok 3 - should be equal
ok 6 - swagger route returns additional theme - only title # time=3.962ms
1..6

View File

@@ -0,0 +1,35 @@
TAP version 14
# Subtest: transformSpecification should modify the json
1..5
ok 1 - should not be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should not be equivalent
ok 5 - should be equal
ok 1 - transformSpecification should modify the json # time=42.934ms
# Subtest: transformSpecificationClone false should not deepclone fastify.swagger() /1
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equivalent strictly
ok 2 - transformSpecificationClone false should not deepclone fastify.swagger() /1 # time=5.208ms
# Subtest: transformSpecification should modify the yaml
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equivalent
ok 4 - should be equal
ok 3 - transformSpecification should modify the yaml # time=11.914ms
# Subtest: transformSpecificationClone false should not deepclone fastify.swagger() /2
1..4
ok 1 - should be equal
ok 2 - should be equal
ok 3 - should be equal
ok 4 - should be equivalent
ok 4 - transformSpecificationClone false should not deepclone fastify.swagger() /2 # time=4.915ms
1..4

2
backend/node_modules/@fastify/swagger-ui/.taprc generated vendored Normal file
View File

@@ -0,0 +1,2 @@
files:
- test/**/*.test.js

21
backend/node_modules/@fastify/swagger-ui/LICENSE generated vendored Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2022 Fastify
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.

374
backend/node_modules/@fastify/swagger-ui/README.md generated vendored Normal file
View File

@@ -0,0 +1,374 @@
# @fastify/swagger-ui
[![NPM version](https://img.shields.io/npm/v/@fastify/swagger-ui.svg?style=flat)](https://www.npmjs.com/package/@fastify/swagger-ui)
![CI](https://github.com/fastify/fastify-swagger-ui/workflows/CI/badge.svg)
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](https://standardjs.com/)
A Fastify plugin for serving [Swagger UI](https://swagger.io/tools/swagger-ui/).
![Demo](https://user-images.githubusercontent.com/52195/228162405-c85ad0d1-900d-442a-b712-7108d98d621f.png)
<a name="install"></a>
## Install
```
npm i @fastify/swagger-ui
```
### Compatibility
| Plugin version | Fastify version | Swagger Plugin Version |
| -------------- | --------------- | ---------------------- |
| `^2.0.0` | `^4.0.0` | `^8.0.0` |
| `^1.0.0` | `^4.0.0` | `^8.0.0` |
<a name="usage"></a>
## Usage
Add it with `@fastify/swagger` to your project with `register`, pass it some options, call the `swagger` API, and you are done!
```js
const fastify = require('fastify')()
await fastify.register(require('@fastify/swagger'))
await fastify.register(require('@fastify/swagger-ui'), {
routePrefix: '/documentation',
uiConfig: {
docExpansion: 'full',
deepLinking: false
},
uiHooks: {
onRequest: function (request, reply, next) { next() },
preHandler: function (request, reply, next) { next() }
},
staticCSP: true,
transformStaticCSP: (header) => header,
transformSpecification: (swaggerObject, request, reply) => { return swaggerObject },
transformSpecificationClone: true
})
fastify.put('/some-route/:id', {
schema: {
description: 'post some data',
tags: ['user', 'code'],
summary: 'qwerty',
params: {
type: 'object',
properties: {
id: {
type: 'string',
description: 'user id'
}
}
},
body: {
type: 'object',
properties: {
hello: { type: 'string' },
obj: {
type: 'object',
properties: {
some: { type: 'string' }
}
}
}
},
response: {
201: {
description: 'Successful response',
type: 'object',
properties: {
hello: { type: 'string' }
}
},
default: {
description: 'Default response',
type: 'object',
properties: {
foo: { type: 'string' }
}
}
},
security: [
{
"apiKey": []
}
]
}
}, (req, reply) => {})
await fastify.ready()
```
<a name="api"></a>
## API
<a name="register.options"></a>
### Register options
#### Options
| Option | Default | Description |
| ------------------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------- |
| baseDir | undefined | Specify the directory where all spec files that are included in the main one using $ref will be located. By default, this is the directory where the main spec file is located. Provided value should be an absolute path without trailing slash. |
| initOAuth | {} | Configuration options for [Swagger UI initOAuth](https://swagger.io/docs/open-source-tools/swagger-ui/usage/oauth2/). |
| routePrefix | '/documentation' | Overwrite the default Swagger UI route prefix. |
| staticCSP | false | Enable CSP header for static resources. |
| transformStaticCSP | undefined | Synchronous function to transform CSP header for static resources if the header has been previously set. |
| transformSpecification | undefined | Synchronous function to transform the swagger document. |
| transformSpecificationClone| true | Provide a deepcloned swaggerObject to transformSpecification |
| uiConfig | {} | Configuration options for [Swagger UI](https://github.com/swagger-api/swagger-ui/blob/master/docs/usage/configuration.md). |
| uiHooks | {} | Additional hooks for the documentation's routes. You can provide the `onRequest` and `preHandler` hooks with the same [route's options](https://fastify.dev/docs/latest/Reference/Routes/#routes-options) interface.|
| theme | {} | Add custom JavaScript and CSS to the Swagger UI web page |
| logLevel | info | Allow to define route log level. |
The plugin will expose the documentation with the following APIs:
| URL | Description |
| ----------------------- | ------------------------------------------ |
| `'/documentation/json'` | The JSON object representing the API |
| `'/documentation/yaml'` | The YAML object representing the API |
| `'/documentation/'` | The swagger UI |
| `'/documentation/*'` | External files that you may use in `$ref` |
#### uiConfig
To configure Swagger UI, you need to modify the `uiConfig` option.
It's important to ensure that functions are self-contained. Keep in mind that
you cannot modify the backend code within the `uiConfig` functions, as these
functions are processed only by the browser. You can reference the Swagger UI
element using `ui`, which is assigned to `window.ui`.
##### Example
```js
const fastify = require('fastify')()
await fastify.register(require('@fastify/swagger'))
await fastify.register(require('@fastify/swagger-ui'), {
uiConfig: {
onComplete: function () {
alert('ui has type of ' + typeof ui) // 'ui has type of object'
alert('fastify has type of ' + typeof fastify) // 'fastify has type of undefined'
alert('window has type of ' + typeof window) // 'window has type of object'
alert('global has type of ' + typeof global) // 'global has type of undefined'
}
}
})
```
#### transformSpecification
There can be use cases, where you want to modify the swagger definition on request. E.g. you want to modify the server
definition based on the hostname of the request object. In such a case you can utilize the transformSpecification-option.
##### Example
```js
const fastify = require('fastify')()
await fastify.register(require('@fastify/swagger'))
await fastify.register(require('@fastify/swagger-ui'), {
transformSpecification: (swaggerObject, req, reply) => {
swaggerObject.host = req.hostname
return swaggerObject
}
})
```
By default fastify.swagger() will be deepcloned and passed to the transformSpecification-function, as fastify.swagger()
returns a mutatable Object. You can disable the deepcloning by setting transformSpecificationClone to false. This is useful,
if you want to handle the deepcloning in the transformSpecification function.
##### Example with caching
```js
const fastify = require('fastify')()
const LRU = require('tiny-lru').lru
const rfdc = require('rfdc')()
await fastify.register(require('@fastify/swagger'))
const swaggerLru = new LRU(1000)
await fastify.register(require('@fastify/swagger-ui'), {
transformSpecificationClone: false,
transformSpecification: (swaggerObject, req, reply) => {
if (swaggerLru.has(req.hostname)) {
return swaggerLru.get(req.hostname)
}
const clonedSwaggerObject = rfdc(swaggerObject)
clonedSwaggerObject.host = req.hostname
swaggerLru.set(req.hostname, clonedSwaggerObject)
return clonedSwaggerObject
}
})
```
#### theme
You can add custom JavaScript and CSS to the Swagger UI web page by using the theme option.
##### Example
```js
const fastify = require('fastify')()
await fastify.register(require('@fastify/swagger'))
await fastify.register(require('@fastify/swagger-ui'), {
theme: {
title: 'My custom title',
js: [
{ filename: 'special.js', content: 'alert("client javascript")' }
],
css: [
{ filename: 'theme.css', content: '* { border: 1px red solid; }' }
],
favicon: [
{
filename: 'favicon.png',
rel: 'icon',
sizes: '16x16',
type: 'image/png',
content: Buffer.from('iVBOR...', 'base64')
}
]
}
})
```
You can add custom JavaScript and CSS to the Swagger UI web page by using the theme option.
#### logo
It's possible to override the logo displayed in the top bar by specifying:
```js
await fastify.register(require('@fastify/swagger-ui'), {
logo: {
type: 'image/png',
content: Buffer.from('iVBOR...', 'base64')
},
theme: {
favicon: [
{
filename: 'favicon.png',
rel: 'icon',
sizes: '16x16',
type: 'image/png',
content: Buffer.from('iVBOR...', 'base64')
}
]
}
})
```
#### Protect your documentation routes
You can protect your documentation by configuring an authentication hook.
Here is an example using the [`@fastify/basic-auth`](https://github.com/fastify/fastify-basic-auth) plugin:
##### Example
```js
const fastify = require('fastify')()
const crypto = require('node:crypto')
await fastify.register(require('@fastify/swagger'))
// perform constant-time comparison to prevent timing attacks
function compare (a, b) {
a = Buffer.from(a)
b = Buffer.from(b)
if (a.length !== b.length) {
// Delay return with cryptographically secure timing check.
crypto.timingSafeEqual(a, a)
return false
}
return crypto.timingSafeEqual(a, b)
}
await fastify.register(require('@fastify/basic-auth'), {
validate (username, password, req, reply, done) {
let result = true
result = compare(username, validUsername) && result
result = compare(password, validPassword) && result
if (result) {
done()
} else {
done(new Error('Access denied'))
}
},
authenticate: true
})
await fastify.register(require('@fastify/swagger-ui', {
uiHooks: {
onRequest: fastify.basicAuth
}
})
```
#### Rendering models at the bottom of the page
To ensure that models are correctly rendered at the bottom of the Swagger UI page, it's important to define your schemas using $refs through [fastify.addSchema](https://fastify.dev/docs/latest/Reference/Validation-and-Serialization/#adding-a-shared-schema). Directly embedding JSON schemas within the schema property of your route definitions in Fastify may lead to them not being displayed in Swagger UI.
#### validatorUrl
[SwaggerUI](https://github.com/swagger-api/swagger-ui/) can automatically validate the given specification using an online validator.
To enable this behavior you can pass the [`validatorUrl`](https://github.com/swagger-api/swagger-ui/blob/master/docs/usage/configuration.md) option
to this plugin which will be forwarded to SwaggerUI.
```js
await fastify.register('@fastify/swagger-ui', {
validatorUrl: 'https://validator.swagger.io/validator'
})
```
Note that this behavior is disabled by default in `@fastify/swagger-ui`.
### Bundling
To bundle Swagger UI with your application, the swagger-ui static files need to be copied to the server and the `baseDir` option set to point to the file directory.
<details>
<summary>Copy files with esbuild</summary>
```js
import { build } from 'esbuild'
import { copy } from 'esbuild-plugin-copy'
await build({
// ...
plugins: [
copy({
resolveFrom: 'cwd',
assets: {
from: ['node_modules/@fastify/swagger-ui/static/*'],
to: ['dist/static'],
},
}),
],
})
```
</details>
<details>
<summary>Copy files with docker</summary>
```Dockerfile
COPY ./node_modules/@fastify/swagger-ui/static /app/static
```
</details>
#### Configure Swagger UI to use a custom baseDir
Set the `baseDir` option to point to your folder.
```js
await fastify.register(require('@fastify/swagger-ui'), {
baseDir: isDev ? undefined : path.resolve('static'),
})
```
<a name="license"></a>
## License
Licensed under [MIT](./LICENSE).

View File

View File

@@ -0,0 +1,90 @@
'use strict'
const { test, expect } = require('@playwright/test')
const URL_DOCUMENTATION = '/documentation'
const URL_FAVICON = '/documentation/static/theme/favicon.svg'
test.describe('Check customizations', () => {
test('Check JS injection', async ({ page }) => {
await page.goto(URL_DOCUMENTATION)
await page.waitForLoadState('networkidle')
page.on('dialog', async dialog => {
expect(dialog.type() === 'beforeunload').toBeTruthy()
expect(dialog.message() === 'unloaded test-theme').toBeTruthy()
await dialog.dismiss()
})
await page.close({ runBeforeUnload: true })
})
test('Check CSS injection', async ({ page }) => {
await page.goto(URL_DOCUMENTATION)
await page.waitForLoadState('networkidle')
const element = await page.waitForSelector('button.download-url-button')
const color = await element.evaluate(el => window.getComputedStyle(el).getPropertyValue('background-color'))
expect(color).toBe('rgb(255, 0, 0)')
})
test('Check custom favicon', async ({ page }) => {
await page.goto(URL_FAVICON)
const faviconId = await (await page.waitForSelector('svg')).getAttribute('id')
expect(faviconId).toBe('example-logo') // it is included in the svg file
})
test('Check custom logo', async ({ page }) => {
await page.goto(URL_DOCUMENTATION)
await page.waitForLoadState('networkidle')
const logoSrc = await page.locator('img').first().getAttribute('src')
await page.goto(logoSrc)
const logoId = await (await page.waitForSelector('svg')).getAttribute('id')
expect(logoId).toBe('example-logo') // it is included in the svg file
})
})
test.describe('Check redirection and url handling of static assets', () => {
test('Check static/index.html redirects', async ({ page }) => {
const jsonResponsePromise = page.waitForResponse(/json/)
await page.goto(`${URL_DOCUMENTATION}/static/index.html`)
// Check if the page is redirected to /documentation
const url = await page.url()
expect(url).toContain(`${URL_DOCUMENTATION}`)
expect(url).not.toContain('static/index.html')
// Check if the page has requested the json spec, and if so has it succeeded
const jsonResponse = await jsonResponsePromise
expect(jsonResponse.ok()).toBe(true)
})
test('Check root UI without slash loads json spec', async ({ page }) => {
const jsonResponsePromise = page.waitForResponse(/json/)
await page.goto(`${URL_DOCUMENTATION}`)
// Check if the page has requested the json spec, and if so has it succeeded
const jsonResponse = await jsonResponsePromise
expect(jsonResponse.ok()).toBe(true)
})
test('Check root UI with trailing slash loads json spec', async ({ page }) => {
const jsonResponsePromise = page.waitForResponse(/json/)
await page.goto(`${URL_DOCUMENTATION}/`)
// Check if the page has requested the json spec, and if so has it succeeded
const jsonResponse = await jsonResponsePromise
expect(jsonResponse.ok()).toBe(true)
})
test('Check root UI with hash loads json spec', async ({ page }) => {
const jsonResponsePromise = page.waitForResponse(/json/)
await page.goto(`${URL_DOCUMENTATION}#default/get_example`)
// Check if the page has requested the json spec, and if so has it succeeded
const jsonResponse = await jsonResponsePromise
expect(jsonResponse.ok()).toBe(true)
})
})

View File

@@ -0,0 +1,57 @@
'use strict'
const Fastify = require('fastify')
; (async () => {
const fastify = Fastify({
logger: true,
// Need to add a collectionFormat keyword to ajv in fastify instance
ajv: {
customOptions: {
keywords: ['collectionFormat']
}
}
})
await fastify.register(require('@fastify/swagger'))
await fastify.register(require('../index'))
fastify.route({
method: 'GET',
url: '/',
schema: {
querystring: {
type: 'object',
required: ['fields'],
additionalProperties: false,
properties: {
fields: {
type: 'array',
items: {
type: 'string'
},
minItems: 1,
//
// Note that this is an Open API version 2 configuration option. The
// options changed in version 3. The plugin currently only supports
// version 2 of Open API.
//
// Put `collectionFormat` on the same property which you are defining
// as an array of values. (i.e. `collectionFormat` should be a sibling
// of the `type: "array"` specification.)
collectionFormat: 'multi'
}
}
}
},
handler (request, reply) {
reply.send(request.query.fields)
}
})
fastify.listen({ port: 3000 }, (err, addr) => {
if (err) throw err
fastify.log.info(`Visit the documentation at ${addr}/documentation/`)
})
}
)()

View File

@@ -0,0 +1,124 @@
'use strict'
const Fastify = require('fastify')
; (async () => {
const fastify = Fastify({ logger: true })
await fastify.register(require('@fastify/swagger'), {
openapi: {
info: {
title: 'Test swagger',
description: 'testing the fastify swagger api',
version: '0.1.0'
},
servers: [{
url: 'http://localhost'
}],
components: {
securitySchemes: {
apiKey: {
type: 'apiKey',
name: 'apiKey',
in: 'header'
}
}
}
},
hideUntagged: true
})
await fastify.register(require('../index'), {
validatorUrl: false
})
await fastify.register(async function (fastify) {
fastify.put('/some-route/:id', {
schema: {
description: 'post some data',
tags: ['user', 'code'],
summary: 'qwerty',
security: [{ apiKey: [] }],
params: {
type: 'object',
properties: {
id: {
type: 'string',
description: 'user id'
}
}
},
body: {
type: 'object',
properties: {
hello: { type: 'string' },
obj: {
type: 'object',
properties: {
some: { type: 'string' }
}
}
}
},
response: {
201: {
description: 'Succesful response',
type: 'object',
properties: {
hello: { type: 'string' }
}
},
default: {
description: 'Default response',
type: 'object',
properties: {
foo: { type: 'string' }
}
}
}
}
}, (req, reply) => { reply.send({ hello: `Hello ${req.body.hello}` }) })
fastify.post('/some-route/:id', {
schema: {
description: 'post some data',
summary: 'qwerty',
security: [{ apiKey: [] }],
params: {
type: 'object',
properties: {
id: {
type: 'string',
description: 'user id'
}
}
},
body: {
type: 'object',
properties: {
hello: { type: 'string' },
obj: {
type: 'object',
properties: {
some: { type: 'string' }
}
}
}
},
response: {
201: {
description: 'Succesful response',
type: 'object',
properties: {
hello: { type: 'string' }
}
}
}
}
}, (req, reply) => { reply.send({ hello: `Hello ${req.body.hello}` }) })
})
fastify.listen({ port: 3000, hostname: '0.0.0.0' }, (err, addr) => {
if (err) throw err
fastify.log.info(`Visit the documentation at ${addr}/documentation/`)
})
})()

View File

@@ -0,0 +1,70 @@
'use strict'
const Fastify = require('fastify')
; (async () => {
const fastify = Fastify({ logger: true })
await fastify.register(require('@fastify/swagger'), {
swagger: {
info: {
title: 'Test swagger',
description: 'testing the fastify swagger api',
version: '0.1.0'
},
host: 'localhost',
schemes: ['http'],
consumes: ['application/json'],
produces: ['application/json']
}
})
await fastify.register(require('../index'), {
routePrefix: '/swagger-docs'
})
await fastify.register(async function (fastify) {
fastify.put('/some-route/:id', {
schema: {
description: 'post some data',
tags: ['user', 'code'],
summary: 'qwerty',
params: {
type: 'object',
properties: {
id: {
type: 'string',
description: 'user id'
}
}
},
body: {
type: 'object',
properties: {
hello: { type: 'string' },
obj: {
type: 'object',
properties: {
some: { type: 'string' }
}
}
}
},
response: {
201: {
description: 'Succesful response',
type: 'object',
properties: {
hello: { type: 'string' }
}
}
}
}
}, (req, reply) => {})
})
fastify.listen({ port: 3000, hostname: '0.0.0.0' }, (err, addr) => {
if (err) throw err
fastify.log.info(`Visit the documentation at ${addr}/swagger-docs/`)
})
})()

View File

@@ -0,0 +1,117 @@
'use strict'
const Fastify = require('fastify')
; (async () => {
const fastify = Fastify({ logger: true })
await fastify.register(require('@fastify/swagger'), {
swagger: {
info: {
title: 'Test swagger',
description: 'testing the fastify swagger api',
version: '0.1.0'
},
securityDefinitions: {
apiKey: {
type: 'apiKey',
name: 'apiKey',
in: 'header'
}
},
host: 'localhost:3000',
schemes: ['http'],
consumes: ['application/json'],
produces: ['application/json']
},
hideUntagged: true
})
await fastify.register(require('../index'), {
routePrefix: '/swagger-docs'
})
fastify.addSchema({
$id: 'user',
type: 'object',
properties: {
id: {
type: 'string',
description: 'user id'
}
}
})
fastify.addSchema({
$id: 'some',
type: 'object',
properties: {
some: { type: 'string' }
}
})
await fastify.register(async function (fastify) {
fastify.put('/some-route/:id', {
schema: {
description: 'post some data',
tags: ['user', 'code'],
summary: 'qwerty',
security: [{ apiKey: [] }],
params: { $ref: 'user#' },
body: {
type: 'object',
properties: {
hello: { type: 'string' },
obj: { $ref: 'some#' }
}
},
response: {
201: {
description: 'Succesful response',
type: 'object',
properties: {
hello: { type: 'string' }
}
},
default: {
description: 'Default response',
type: 'object',
properties: {
foo: { type: 'string' }
}
}
}
}
}, (req, reply) => { reply.send({ hello: `Hello ${req.body.hello}` }) })
fastify.post('/some-route/:id', {
schema: {
description: 'post some data',
summary: 'qwerty',
security: [{ apiKey: [] }],
params: { $ref: 'user#' },
body: {
type: 'object',
properties: {
hello: { type: 'string' },
obj: { $ref: 'some#' }
}
},
response: {
201: {
description: 'Succesful response',
type: 'object',
properties: {
hello: { type: 'string' }
}
}
}
}
}, (req, reply) => { reply.send({ hello: `Hello ${req.body.hello}` }) })
})
fastify.listen({ port: 3000, hostname: '0.0.0.0' }, (err, addr) => {
if (err) throw err
fastify.log.info(`Visit the documentation at ${addr}/swagger-docs/`)
})
})()

View File

@@ -0,0 +1,50 @@
'use strict'
const Fastify = require('fastify')
const readFileSync = require('node:fs').readFileSync
const resolve = require('node:path').resolve
const exampleLogo = readFileSync(
resolve(__dirname, '..', 'examples/static', 'example-logo.svg'),
'utf8'
)
; (async () => {
const fastify = Fastify({ logger: true })
await fastify.register(require('@fastify/swagger'), {
mode: 'static',
specification: {
path: './examples/example-static-specification.json'
}
})
await fastify.register(require('../index'), {
theme: {
js: [
{ filename: 'unloaded.js', content: 'window.onbeforeunload = function(){alert("unloaded test-theme")}' }
],
css: [
{ filename: 'theme.css', content: '.download-url-button {background: red !important;}' }
],
favicon: [
{
filename: 'favicon.svg',
rel: 'icon',
sizes: '16x16',
type: 'image/svg+xml',
content: exampleLogo
}
]
},
logo: {
type: 'image/svg+xml',
content: exampleLogo
}
})
fastify.listen({ port: process.env.PORT }, (err, addr) => {
if (err) throw err
fastify.log.info(`Visit the documentation at ${addr}/documentation/`)
})
})()

View File

@@ -0,0 +1,51 @@
{
"openapi": "3.0.0",
"info": {
"description": "Test swagger specification",
"version": "1.0.0",
"title": "Test swagger specification",
"contact": {
"email": "super.developer@gmail.com"
}
},
"servers": [
{
"url": "http://localhost:3000/",
"description": "Localhost (uses test data)"
}
],
"paths": {
"/status": {
"get": {
"description": "Status route, so we can check if server is alive",
"tags": [
"Status"
],
"responses": {
"200": {
"description": "Server is alive",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"health": {
"type": "boolean"
},
"date": {
"type": "string"
}
},
"example": {
"health": true,
"date": "2018-02-19T15:36:46.758Z"
}
}
}
}
}
}
}
}
}
}

View File

@@ -0,0 +1,31 @@
openapi: 3.0.0
info:
description: "Test swagger specification"
version: "1.0.0"
title: "Test swagger specification"
contact:
email: "super.developer@gmail.com"
servers:
- url: http://localhost:3000/
description: Localhost (uses test data)
paths:
/status:
get:
description: Status route, so we can check if server is alive
tags:
- Status
responses:
200:
description: 'Server is alive'
content:
application/json:
schema:
type: object
properties:
health:
type: boolean
date:
type: string
example:
health: true
date: "2018-02-19T15:36:46.758Z"

View File

@@ -0,0 +1,77 @@
'use strict'
const Fastify = require('fastify')
const qs = require('qs')
const Ajv = require('ajv')
; (async () => {
const ajv = new Ajv({
removeAdditional: true,
useDefaults: true,
coerceTypes: true
})
const fastify = Fastify({
logger: true,
querystringParser: (str) => {
const result = qs.parse(str)
if (result.filter && typeof result.filter === 'string') {
result.filter = JSON.parse(result.filter)
}
return result
}
})
ajv.addKeyword({
keyword: 'x-consume',
code: (ctx) => Promise.resolve(true)
})
fastify.setValidatorCompiler(({ schema }) => ajv.compile(schema))
await fastify.register(require('@fastify/swagger'), {
openapi: {
info: {
title: 'Test swagger',
description: 'testing the fastify swagger api',
version: '0.1.0'
}
}
})
await fastify.register(require('../index'))
await fastify.register(async function (fastify) {
fastify.route({
method: 'GET',
url: '/',
schema: {
querystring: {
type: 'object',
required: ['filter'],
additionalProperties: false,
properties: {
filter: {
type: 'object',
required: ['foo'],
properties: {
foo: { type: 'string' },
bar: { type: 'string' }
},
'x-consume': 'application/json'
}
}
}
},
handler (request, reply) {
reply.send(request.query.filter)
}
})
})
fastify.listen({ port: 3000 }, (err, addr) => {
if (err) throw err
fastify.log.info(`Visit the documentation at ${addr}/documentation/`)
})
})()

View File

@@ -0,0 +1,305 @@
'use strict'
const swaggerOption = {
swagger: {
info: {
title: 'Test swagger',
description: 'testing the fastify swagger api',
version: '0.1.0'
},
host: 'localhost',
schemes: ['http'],
consumes: ['application/json'],
produces: ['application/json'],
tags: [
{ name: 'tag' }
],
externalDocs: {
description: 'Find more info here',
url: 'https://swagger.io'
},
securityDefinitions: {
apiKey: {
type: 'apiKey',
name: 'apiKey',
in: 'header'
}
},
security: [{
apiKey: []
}]
}
}
const openapiOption = {
openapi: {
info: {
title: 'Test swagger',
description: 'testing the fastify swagger api',
version: '0.1.0'
},
servers: [
{
url: 'http://localhost'
}
],
tags: [
{ name: 'tag' }
],
components: {
securitySchemes: {
apiKey: {
type: 'apiKey',
name: 'apiKey',
in: 'header'
}
}
},
security: [{
apiKey: []
}],
externalDocs: {
description: 'Find more info here',
url: 'https://swagger.io'
}
}
}
const openapiRelativeOptions = {
openapi: {
info: {
title: 'Test swagger',
description: 'testing the fastify swagger api',
version: '0.1.0'
},
servers: [
{
url: '/test'
}
],
tags: [
{ name: 'tag' }
],
components: {
securitySchemes: {
apiKey: {
type: 'apiKey',
name: 'apiKey',
in: 'header'
}
}
},
security: [{
apiKey: []
}],
externalDocs: {
description: 'Find more info here',
url: 'https://swagger.io'
}
},
stripBasePath: false
}
const schemaQuerystring = {
schema: {
response: {
200: {
type: 'object',
properties: {
hello: { type: 'string' }
}
}
},
querystring: {
hello: { type: 'string' },
world: { type: 'string' }
}
}
}
const schemaBody = {
schema: {
body: {
type: 'object',
properties: {
hello: { type: 'string' },
obj: {
type: 'object',
properties: {
some: { type: 'string' },
constantProp: { const: 'my-const' }
}
}
},
required: ['hello']
}
}
}
const schemaParams = {
schema: {
params: {
type: 'object',
properties: {
id: {
type: 'string',
description: 'user id'
}
}
}
}
}
const schemaHeaders = {
schema: {
headers: {
type: 'object',
properties: {
authorization: {
type: 'string',
description: 'api token'
}
},
required: ['authorization']
}
}
}
const schemaHeadersParams = {
schema: {
headers: {
type: 'object',
properties: {
'x-api-token': {
type: 'string',
description: 'optional api token'
},
'x-api-version': {
type: 'string',
description: 'optional api version'
}
}
},
params: {
type: 'object',
properties: {
id: {
type: 'string',
description: 'user id'
}
}
}
}
}
const schemaSecurity = {
schema: {
security: [
{
apiKey: []
}
]
}
}
const schemaConsumes = {
schema: {
consumes: ['application/x-www-form-urlencoded'],
body: {
type: 'object',
properties: {
hello: {
description: 'hello',
type: 'string'
}
},
required: ['hello']
}
}
}
const schemaProduces = {
schema: {
produces: ['*/*'],
response: {
200: {
type: 'object',
properties: {
hello: {
description: 'hello',
type: 'string'
}
},
required: ['hello']
}
}
}
}
const schemaCookies = {
schema: {
cookies: {
type: 'object',
properties: {
bar: { type: 'string' }
}
}
}
}
const schemaAllOf = {
schema: {
querystring: {
allOf: [
{
type: 'object',
properties: {
foo: { type: 'string' }
}
}
]
}
}
}
const schemaExtension = {
schema: {
'x-tension': true
}
}
const schemaOperationId = {
schema: {
operationId: 'helloWorld',
response: {
200: {
type: 'object',
properties: {
hello: {
description: 'hello',
type: 'string'
}
},
required: ['hello']
}
}
}
}
module.exports = {
openapiOption,
openapiRelativeOptions,
swaggerOption,
schemaQuerystring,
schemaBody,
schemaParams,
schemaHeaders,
schemaHeadersParams,
schemaSecurity,
schemaConsumes,
schemaProduces,
schemaCookies,
schemaAllOf,
schemaExtension,
schemaOperationId
}

View File

@@ -0,0 +1,21 @@
'use strict'
const Fastify = require('fastify')
; (async () => {
const fastify = Fastify({ logger: true })
await fastify.register(require('@fastify/swagger'), {
mode: 'static',
specification: {
path: './examples/example-static-specification.json'
}
})
await fastify.register(require('../index'))
fastify.listen({ port: 3000 }, (err, addr) => {
if (err) throw err
fastify.log.info(`Visit the documentation at ${addr}/documentation/`)
})
})()

View File

@@ -0,0 +1,21 @@
'use strict'
const Fastify = require('fastify')
; (async () => {
const fastify = Fastify({ logger: true })
await fastify.register(require('@fastify/swagger'), {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml'
}
})
await fastify.register(require('../index'))
fastify.listen({ port: 3000 }, (err, addr) => {
if (err) throw err
fastify.log.info(`Visit the documentation at ${addr}/documentation/`)
})
})()

View File

@@ -0,0 +1 @@
<svg version="1.1" id="example-logo" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 80.3 80.3" style="enable-background:new 0 0 80.3 80.3" xml:space="preserve"><style>.st4{fill:#fff}.st6{fill:#0c2c48}</style><circle cx="40.2" cy="40.2" r="40.2" style="fill:#f6a09c"/><path class="st6" d="M67.7 56.2c0 .7-.5 1.2-1.2 1.2H13.8c-.7 0-1.2-.5-1.2-1.2V17.4c0-.7.5-1.2 1.2-1.2h52.8c.7 0 1.2.5 1.2 1.2v38.8z"/><path style="fill:#bababa" d="M29.8 56.3h20.7v7H29.8z"/><path style="fill:#a3b9c4" d="M15.5 18.6h49.2v30.5H15.5z"/><path class="st4" d="M12.6 48.1v8.1c0 .7.5 1.2 1.2 1.2h52.8c.7 0 1.2-.5 1.2-1.2v-8.1H12.6zM55.7 68.1v-2.2c0-1.7-1.3-3-3-3h-25c-1.7 0-3 1.3-3 3v2.2h31z"/><circle class="st6" cx="40.2" cy="52.5" r="1.5"/><g><path class="st4" d="M32.8 38.2 23.5 34v-1.6l9.3-4.5v2.4l-6.6 2.8v.1l6.6 2.7v2.3z"/><path d="m44.6 24.6-7 16.7h-2.8l6.9-16.7h2.9z" style="fill:#50646f"/><path d="M56.2 33.8 46.9 38v-2.4l6.7-2.7-6.7-2.8v-2.4l9.3 4.4v1.7z" style="fill:#ed6b5a"/></g></svg>

After

Width:  |  Height:  |  Size: 988 B

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,38 @@
'use strict'
const Fastify = require('fastify')
; (async () => {
const fastify = Fastify({ logger: true })
await fastify.register(require('@fastify/swagger'), {
mode: 'static',
specification: {
path: './examples/example-static-specification.json'
}
})
await fastify.register(require('../index'), {
theme: {
js: [
{ filename: 'special.js', content: 'alert("loaded test-theme")' }
],
css: [
{ filename: 'theme.css', content: '* {border: 1px red solid;}' }
],
favicon: [
{
filename: 'favicon.png',
rel: 'icon',
sizes: '16x16',
type: 'image/png',
content: Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAQAAABjX+2PAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAACYktHRAD/h4/MvwAAAAd0SU1FB+cCEQ06N8A8CiUAAADnSURBVBjTrdE/K8QBAMbxz/0TLrnUWcTg7ySLewGEwWDRzSYpyULJbGG6wWBTlMEbkHsFNnVloAwXudIlnDru1O9nOCex3rM89TzL0/eh1Ypo//Zk5CdM6JP2IWFOxbmMKZVmPWzbrJSamG5FNXUFx42yV16oqCQUerNr2pghsSgS1sw4kxNVVvbu3rwjSwJ67Kgq2XMjtO/AnWsnVgwQNy6rQ8GkURWBpCebXnR5gA11j5b1OxT4EKq6dGurMWvQqqw2LPoUKDq1LqPzN4q0rCuvckbE/pOakHdhQfwvwKan8Nzad74AkR8/Ir6qAvAAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjMtMDItMTdUMTM6NTg6NTUrMDA6MDBjkr64AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIzLTAyLTE3VDEzOjU4OjU1KzAwOjAwEs8GBAAAACh0RVh0ZGF0ZTp0aW1lc3RhbXAAMjAyMy0wMi0xN1QxMzo1ODo1NSswMDowMEXaJ9sAAAAASUVORK5CYII=', 'base64')
}
]
}
})
fastify.listen({ port: 3000 }, (err, addr) => {
if (err) throw err
fastify.log.info(`Visit the documentation at ${addr}/documentation/`)
})
})()

Binary file not shown.

Binary file not shown.

35
backend/node_modules/@fastify/swagger-ui/index.js generated vendored Normal file
View File

@@ -0,0 +1,35 @@
'use strict'
const fsPromises = require('node:fs/promises')
const path = require('node:path')
const fp = require('fastify-plugin')
const csp = require('./static/csp.json')
async function fastifySwaggerUi (fastify, opts) {
fastify.decorate('swaggerCSP', csp)
// if no logo is provided, read default static logo
let logoContent = opts.logo
if (logoContent == null) {
const bufferLogoContent = await fsPromises.readFile(path.join(__dirname, './static/logo.svg'))
logoContent = { type: 'image/svg+xml', content: bufferLogoContent }
}
await fastify.register(require('./lib/routes'), {
prefix: opts.routePrefix || '/documentation',
uiConfig: opts.uiConfig || {},
initOAuth: opts.initOAuth || {},
hooks: opts.uiHooks,
theme: opts.theme || {},
logo: logoContent,
...opts
})
}
module.exports = fp(fastifySwaggerUi, {
fastify: '4.x',
name: '@fastify/swagger-ui',
dependencies: ['@fastify/swagger']
})
module.exports.default = fastifySwaggerUi
module.exports.fastifySwaggerUi = fastifySwaggerUi

View File

@@ -0,0 +1,37 @@
'use strict'
function indexHtml (opts) {
const hasLeadingSlash = /^\//.test(opts.prefix)
return (url) => {
const hasTrailingSlash = /\/$/.test(url)
const prefix = hasTrailingSlash ? `.${opts.staticPrefix}` : `${hasLeadingSlash ? '.' : ''}${opts.prefix}${opts.staticPrefix}`
return `<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>${opts.theme?.title || 'Swagger UI'}</title>
<link rel="stylesheet" type="text/css" href="${prefix}/swagger-ui.css" />
<link rel="stylesheet" type="text/css" href="${prefix}/index.css" />
${opts.theme && opts.theme.css ? opts.theme.css.map(css => `<link rel="stylesheet" type="text/css" href="${prefix}/theme/${css.filename}" />\n`).join('') : ''}
${opts.theme && opts.theme.favicon
? opts.theme.favicon.map(favicon => `<link rel="${favicon.rel}" type="${favicon.type}" href="${prefix}/theme/${favicon.filename}" sizes="${favicon.sizes}" />\n`).join('')
: `
<link rel="icon" type="image/png" href="${prefix}/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="${prefix}/favicon-16x16.png" sizes="16x16" />
`}
</head>
<body>
<div id="swagger-ui"></div>
<script src="${prefix}/swagger-ui-bundle.js" charset="UTF-8"> </script>
<script src="${prefix}/swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
<script src="${prefix}/swagger-initializer.js" charset="UTF-8"> </script>
${opts.theme && opts.theme.js ? opts.theme.js.map(js => `<script src="${prefix}/theme/${js.filename}" charset="UTF-8"> </script>\n`).join('') : ''}
</body>
</html>
`
}
}
module.exports = indexHtml

219
backend/node_modules/@fastify/swagger-ui/lib/routes.js generated vendored Normal file
View File

@@ -0,0 +1,219 @@
'use strict'
const path = require('node:path')
const yaml = require('yaml')
const fastifyStatic = require('@fastify/static')
const rfdc = require('rfdc')()
const swaggerInitializer = require('./swagger-initializer')
const indexHtml = require('./index-html')
// URI prefix to separate static assets for swagger UI
const staticPrefix = '/static'
function fastifySwagger (fastify, opts, done) {
let staticCSP = false
if (opts.staticCSP === true) {
const csp = fastify.swaggerCSP
staticCSP = `default-src 'self'; base-uri 'self'; font-src 'self' https: data:; frame-ancestors 'self'; img-src 'self' data: validator.swagger.io; object-src 'none'; script-src 'self' ${csp.script.join(' ')}; script-src-attr 'none'; style-src 'self' https: ${csp.style.join(' ')}; upgrade-insecure-requests;`
}
if (typeof opts.staticCSP === 'string') {
staticCSP = opts.staticCSP
}
if (typeof opts.staticCSP === 'object' && opts.staticCSP !== null) {
staticCSP = ''
Object.keys(opts.staticCSP).forEach(function (key) {
const value = Array.isArray(opts.staticCSP[key]) ? opts.staticCSP[key].join(' ') : opts.staticCSP[key]
staticCSP += `${key.toLowerCase()} ${value}; `
})
}
if (typeof staticCSP === 'string' || typeof opts.transformStaticCSP === 'function') {
fastify.addHook('onSend', function (request, reply, payload, done) {
// set static csp when it is passed
if (typeof staticCSP === 'string') {
reply.header('content-security-policy', staticCSP.trim())
}
// mutate the header when it is passed
const header = reply.getHeader('content-security-policy')
if (header && typeof opts.transformStaticCSP === 'function') {
reply.header('content-security-policy', opts.transformStaticCSP(header))
}
done()
})
}
const hooks = Object.create(null)
if (opts.hooks) {
const additionalHooks = [
'onRequest',
'preHandler'
]
for (const hook of additionalHooks) {
hooks[hook] = opts.hooks[hook]
}
}
if (opts.theme) {
const themePrefix = `${staticPrefix}/theme`
if (opts.theme.css) {
for (const cssFile of opts.theme.css) {
fastify.route({
url: `${themePrefix}/${cssFile.filename}`,
method: 'GET',
schema: { hide: true },
...hooks,
handler: (req, reply) => {
reply
.header('content-type', 'text/css; charset=UTF-8')
.send(cssFile.content)
}
})
}
}
if (opts.theme.js) {
for (const jsFile of opts.theme.js) {
fastify.route({
url: `${themePrefix}/${jsFile.filename}`,
method: 'GET',
schema: { hide: true },
...hooks,
handler: (req, reply) => {
reply
.header('content-type', 'application/javascript; charset=utf-8')
.send(jsFile.content)
}
})
}
}
if (opts.theme.favicon) {
for (const favicon of opts.theme.favicon) {
fastify.route({
url: `${themePrefix}/${favicon.filename}`,
method: 'GET',
schema: { hide: true },
...hooks,
handler: (req, reply) => {
reply
.header('content-type', favicon.type)
.send(favicon.content)
}
})
}
}
}
const indexHtmlContent = indexHtml({ ...opts, staticPrefix })
fastify.route({
url: '/',
method: 'GET',
schema: { hide: true },
...hooks,
handler: (req, reply) => {
reply
.header('content-type', 'text/html; charset=utf-8')
.send(indexHtmlContent(req.url)) // trailing slash alters the relative urls generated in the html
}
})
fastify.route({
url: `${staticPrefix}/index.html`,
method: 'GET',
schema: { hide: true },
...hooks,
handler: (req, reply) => {
reply.redirect(req.url.replace(/\/static\/index\.html$/, '/'))
}
})
const swaggerInitializerContent = swaggerInitializer(opts)
fastify.route({
url: `${staticPrefix}/swagger-initializer.js`,
method: 'GET',
schema: { hide: true },
...hooks,
handler: (req, reply) => {
reply
.header('content-type', 'application/javascript; charset=utf-8')
.send(swaggerInitializerContent)
}
})
const hasTransformSpecificationFn = typeof opts.transformSpecification === 'function'
const shouldCloneSwaggerObject = opts.transformSpecificationClone ?? true
const transformSpecification = opts.transformSpecification
fastify.route({
url: '/json',
method: 'GET',
schema: { hide: true },
...hooks,
handler: hasTransformSpecificationFn
? shouldCloneSwaggerObject
? function (req, reply) {
reply.send(transformSpecification(rfdc(fastify.swagger()), req, reply))
}
: function (req, reply) {
reply.send(transformSpecification(fastify.swagger(), req, reply))
}
: function (req, reply) {
reply.send(fastify.swagger())
}
})
fastify.route({
url: '/yaml',
method: 'GET',
schema: { hide: true },
...hooks,
handler: hasTransformSpecificationFn
? shouldCloneSwaggerObject
? function (req, reply) {
reply
.type('application/x-yaml')
.send(yaml.stringify(transformSpecification(rfdc(fastify.swagger()), req, reply)))
}
: function (req, reply) {
reply
.type('application/x-yaml')
.send(yaml.stringify(transformSpecification(fastify.swagger(), req, reply)))
}
: function (req, reply) {
reply
.type('application/x-yaml')
.send(fastify.swagger({ yaml: true }))
}
})
// serve swagger-ui with the help of @fastify/static
fastify.register(fastifyStatic, {
root: opts.baseDir || path.join(__dirname, '..', 'static'),
prefix: staticPrefix,
decorateReply: false
})
if (opts.baseDir) {
fastify.register(fastifyStatic, {
root: opts.baseDir,
serve: false
})
// Handler for external documentation files passed via $ref
fastify.route({
url: '/*',
method: 'GET',
schema: { hide: true },
...hooks,
handler: function (req, reply) {
const file = req.params['*']
reply.sendFile(file)
}
})
}
done()
}
module.exports = fastifySwagger

View File

@@ -0,0 +1,69 @@
'use strict'
function serialize (value) {
switch (typeof value) {
case 'bigint':
return value.toString() + 'n'
case 'boolean':
return value ? 'true' : 'false'
case 'function':
return value.toString()
case 'number':
return '' + value
case 'object':
if (value === null) {
return 'null'
} else if (Array.isArray(value)) {
return serializeArray(value)
} else if (value instanceof RegExp) {
return `/${value.source}/${value.flags}`
} else if (value instanceof Date) {
return `new Date(${value.getTime()})`
} else if (value instanceof Set) {
return `new Set(${serializeArray(Array.from(value))})`
} else if (value instanceof Map) {
return `new Map(${serializeArray(Array.from(value))})`
} else {
return serializeObject(value)
}
case 'string':
return JSON.stringify(value)
case 'symbol':
return serializeSymbol(value)
case 'undefined':
return 'undefined'
}
}
const symbolRE = /Symbol\((.+)\)/
function serializeSymbol (value) {
return symbolRE.test(value.toString())
? `Symbol("${value.toString().match(symbolRE)[1]}")`
: 'Symbol()'
}
function serializeArray (value) {
let result = '['
const il = value.length
const last = il - 1
for (let i = 0; i < il; ++i) {
result += serialize(value[i])
i !== last && (result += ',')
}
return result + ']'
}
function serializeObject (value) {
let result = '{'
const keys = Object.keys(value)
let i = 0
const il = keys.length
const last = il - 1
for (; i < il; ++i) {
const key = keys[i]
result += `"${key}":${serialize(value[key])}`
i !== last && (result += ',')
}
return result + '}'
}
module.exports = serialize

View File

@@ -0,0 +1,74 @@
'use strict'
const serialize = require('./serialize')
function swaggerInitializer (opts) {
const logoBase64 = Buffer.from(opts.logo.content).toString('base64')
const logoData = `data:${opts.logo.type};base64,${logoBase64}`
return `window.onload = function () {
function waitForElement(selector) {
return new Promise(resolve => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector));
}
const observer = new MutationObserver(mutations => {
if (document.querySelector(selector)) {
observer.disconnect();
resolve(document.querySelector(selector));
}
});
// If you get "parameter 1 is not of type 'Node'" error, see https://stackoverflow.com/a/77855838/492336
observer.observe(document.body, {
childList: true,
subtree: true
});
});
}
function resolveUrl(url) {
var currentHref = window.location.href;
currentHref = currentHref.split('#', 1)[0];
currentHref = currentHref.endsWith('/') ? currentHref : currentHref + '/';
var anchor = document.createElement('a');
anchor.href = currentHref + url;
return anchor.href
}
const config = ${serialize(opts.uiConfig)}
const resConfig = Object.assign({}, {
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout",
validatorUrl: ${serialize(opts.validatorUrl || null)},
}, config, {
url: resolveUrl('./json'),
oauth2RedirectUrl: resolveUrl('./static/oauth2-redirect.html')
});
const ui = SwaggerUIBundle(resConfig)
const logoData = '${logoData}'
if (logoData && resConfig.layout === 'StandaloneLayout') {
waitForElement('#swagger-ui > section > div.topbar > div > div > a').then((link) => {
const img = document.createElement('img')
img.height = 40
img.src = logoData
link.innerHTML = ''
link.appendChild(img)
})
}
ui.initOAuth(${serialize(opts.initOAuth)})
}`
}
module.exports = swaggerInitializer

43
backend/node_modules/@fastify/swagger-ui/logo.svg generated vendored Normal file
View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 6747 2071" style="enable-background:new 0 0 6747 2071;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<path class="st0" d="M6603.4,331.7L6700,81.5l-4.2-15.5l-955.7,251.8C5842,170.4,5807,52.2,5807,52.2S5501.8,247.1,5271,242
c-230.8-5.1-305.2-66.7-659.1,46.2c-353.9,112.8-453.9,459.1-556.5,533.5s-424.5,316.7-424.5,316.7l0.7,4.3l290.2-92.4
c0,0-79.6,75-248.7,302.9c0,0-2.9-2.7-7.9-7.3l0.3,1.6c0,0,135.9,207.7,269.3,169.3c13.4-3.9,28.5-10.3,45-18.7
c53.7,29.9,123.8,59.3,201.2,67.4c0,0-52.4-60.9-96.1-130.2c11.8-7.6,23.9-15.5,36.2-23.5l-5.7,4l110.5,40.6l-12.2-103.9
c0.4-0.2,0.7-0.5,1.1-0.7l108.6,39.9l-13.5-94.5c13.8-7.2,27.5-14,41.2-20.3l113.2-428.2l468.1-319.3l-37.2,93.6
c-94.9,233.4-273.1,288.5-273.1,288.5l-74.4,28.2c-55.3,65.4-78.6,81.5-97.6,301c44.6-11.2,87.2-13.9,125.8-3.5
c200,53.9,269.3,294.9,215.4,361.6c-13.5,16.7-45.6,45.2-86.1,78.7h-81.2l-1.1,65.8c-2.8,2.2-5.6,4.3-8.3,6.5h-82.6l-1,64.2
c-7.3,5.6-14.6,11-21.6,16.3c-77.6,1.6-175.9-66.1-175.9-66.1c0,61.6,51.3,156.4,51.3,156.4s3.4-1.6,9.1-4.4c-5,3.7-7.8,5.7-7.8,5.7
s207.7,138.5,338.5,87.2c116.3-45.6,417.4-283,677.3-395.4l786.5-207.2l103.7-268.7l-599.4,157.9v-241.3L6396,869.1l103.7-268.7
L5692.9,813V571.6L6603.4,331.7z M5176,843.2l186.6-49.2l2.5,9.3l-58.2,150.8l-193.4,51L5176,843.2z M5240.4,1166l-193.4,51
l62.5-162l186.6-49.2l2.5,9.3L5240.4,1166z M5492.4,1111.9l-193.4,51l62.5-162l186.6-49.2l2.5,9.3L5492.4,1111.9z"/>
<g>
<path class="st0" d="M186.7,656.5l6.1-30.8c17-89.3,50.9-166.4,114-224.9c46.2-43.1,114-69.3,191-69.3c49.3,0,86.3,7.7,109.4,15.4
l-43.1,147.9c-18.5-6.2-35.4-9.2-60.1-9.2c-69.3,0-109.4,72.4-121.7,138.6l-6.2,32.3h146.4l-26.2,135.6H353l-118.6,617.8H41.8
l118.6-617.8"/>
<path class="st0" d="M816.8,1409.9c1.5-40,4.6-81.7,6.1-126.3h-4.6c-60.1,100.2-132.5,138.7-192.6,138.7
c-109.4,0-163.3-94-163.3-226.5c0-228,114-551.5,437.5-551.5c75.5,0,151,12.3,197.2,30.8L1014,1094
c-18.5,87.8-32.4,234.2-30.8,315.8H816.8z M886.1,792.1c-15.4-3.1-29.3-4.6-40-4.6c-126.3,0-194.1,251.1-195.7,362.1
c0,66.3,9.3,114,57,114c52.4,0,101.7-86.3,129.4-223.4L886.1,792.1z"/>
<path class="st0" d="M1120.3,1245c30.8,17,67.8,32.3,121.7,30.8c55.5-1.5,86.3-37,86.3-84.7c0-41.6-20-70.9-72.4-112.5
c-64.7-52.4-95.5-118.6-95.5-183.3c0-138.7,107.8-251.1,278.9-251.1c66.3,0,114,12.3,141.7,27.7l-41.6,140.2
c-21.6-12.3-57-23.1-89.3-23.1c-61.6,0-100.1,32.3-100.1,83.2c0,38.5,21.6,61.6,57,90.9c84.7,64.7,112.5,138.6,112.5,197.2
c0,166.4-115.6,258.8-288.1,258.8c-69.3,0-131-20-157.2-38.5L1120.3,1245z"/>
<path class="st0" d="M1970.7,453.1l-38.5,203.4h295.8l-24.7,135.6H1906l-66.3,349.7c-4.6,26.2-6.2,49.3-6.2,63.2
c0,46.2,23.1,63.2,58.6,63.2c13.9,0,33.9,0,52.4-3.1l-23.1,144.8c-35.4,9.3-78.6,12.3-115.6,12.3c-115.5,0-172.6-64.7-172.6-166.4
c0-33.9,6.2-75.5,13.9-112.5l66.3-351.3h-87.8l26.2-135.6h87.8l30.8-155.6L1970.7,453.1z"/>
<path class="st0" d="M2017,1409.9l144.8-753.4h192.6l-144.8,753.4H2017z M2197.2,463.9c0-55.4,40-118.6,107.8-118.6
c63.2,0,92.5,47.7,90.9,100.1c-1.5,77-53.9,120.2-110.9,120.2C2223.4,565.6,2195.7,520.9,2197.2,463.9z"/>
<path class="st0" d="M2474,656.5l6.1-30.8c17-89.3,50.9-166.4,114-224.9c46.2-43.1,114-69.3,191-69.3c49.3,0,86.3,7.7,109.4,15.4
l-43.1,147.9c-18.5-6.2-35.4-9.2-60.1-9.2c-69.3,0-109.4,72.4-121.7,138.6l-6.2,32.3h223.4l-26.2,135.6h-220.3l-118.6,617.8h-192.6
l118.6-617.8"/>
<path class="st0" d="M3007.1,656.5l4.6,362.1c1.5,70.9,3.1,123.3,1.5,178.7h3.1c15.4-61.6,30.8-112.5,57-192.6l114-348.2h194.1
L3135,1249.6c-74,172.6-158.7,317.4-251.1,402.1c-44.7,41.6-97,74-129.4,87.8l-77-157.2c33.9-17,69.3-37,100.1-61.6
c43.2-35.5,84.7-78.6,103.2-120.2c3.1-10.8,6.1-18.5,4.6-33.9l-80.1-710.3H3007.1z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

93
backend/node_modules/@fastify/swagger-ui/package.json generated vendored Normal file
View File

@@ -0,0 +1,93 @@
{
"name": "@fastify/swagger-ui",
"version": "4.2.0",
"description": "Serve Swagger-ui for Fastify",
"main": "index.js",
"type": "commonjs",
"types": "types/index.d.ts",
"scripts": {
"coverage": "npm run unit -- --coverage-report=lcovonly",
"lint": "standard",
"lint:fix": "npm run lint -- --fix",
"prepare": "node scripts/prepare-swagger-ui",
"prepublishOnly": "npm run prepare",
"test": "npm run prepare && npm run coverage && npm run typescript",
"test:dev": "npm run lint && npm run unit && npm run typescript",
"test:e2e:command": "node ./examples/example-e2e.js",
"test:e2e": "npx playwright test",
"test:e2e:ui": "npx playwright test --ui",
"typescript": "tsd",
"unit": "tap",
"unit:report": "npm run unit -- --coverage-report=html",
"unit:verbose": "npm run unit -- -Rspec"
},
"repository": {
"type": "git",
"url": "git+https://github.com/fastify/fastify-swagger-ui.git"
},
"keywords": [
"fastify",
"swagger",
"openapi",
"swagger-ui",
"serve",
"static"
],
"author": "Tomas Della Vedova - @delvedor (http://delved.org)",
"contributors": [
{
"name": "Matteo Collina",
"email": "hello@matteocollina.com"
}
],
"license": "MIT",
"bugs": {
"url": "https://github.com/fastify/fastify-swagger-ui/issues"
},
"homepage": "https://github.com/fastify/fastify-swagger-ui#readme",
"devDependencies": {
"@apidevtools/swagger-parser": "^10.1.0",
"@fastify/basic-auth": "^5.0.0",
"@fastify/helmet": "^11.0.0",
"@fastify/pre-commit": "^2.0.2",
"@fastify/swagger": "^8.0.0",
"@playwright/test": "^1.39.0",
"@tapjs/snapshot": "^2.0.1",
"@types/node": "^20.1.1",
"ajv": "^8.11.0",
"fastify": "^4.0.0",
"fs-extra": "^11.0.0",
"qs": "^6.11.0",
"standard": "^17.0.0",
"swagger-ui-dist": "5.17.14",
"tap": "^18.6.1",
"tsd": "^0.31.0"
},
"dependencies": {
"@fastify/static": "^7.0.0",
"fastify-plugin": "^4.0.0",
"openapi-types": "^12.0.2",
"rfdc": "^1.3.0",
"yaml": "^2.2.2"
},
"standard": {
"ignore": [
"dist"
]
},
"tsd": {
"directory": "types"
},
"pkg": {
"assets": [
"static/**/*"
]
},
"publishConfig": {
"access": "public"
},
"pre-commit": [
"lint",
"test"
]
}

View File

@@ -0,0 +1,32 @@
'use strict'
const { defineConfig, devices } = require('@playwright/test')
const PORT = 3000
/**
* @see https://playwright.dev/docs/test-configuration
*/
module.exports = defineConfig({
testDir: './e2e',
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: process.env.CI ? 1 : undefined,
reporter: 'html',
use: {
baseURL: `http://127.0.0.1:${PORT}/documentation`,
trace: 'on-first-retry'
},
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] }
}
],
webServer: {
command: `PORT=${PORT} npm run test:e2e:command`,
url: `http://127.0.0.1:${PORT}/documentation`,
reuseExistingServer: !process.env.CI
}
})

View File

@@ -0,0 +1,70 @@
'use strict'
const fs = require('node:fs')
const fse = require('fs-extra')
const crypto = require('node:crypto')
const swaggerUiAssetPath = require('swagger-ui-dist').getAbsoluteFSPath()
const resolve = require('node:path').resolve
const folderName = 'static'
fse.emptyDirSync(resolve(`./${folderName}`))
// since the original swagger-ui-dist folder contains non UI files
const filesToCopy = [
'index.html',
'index.css',
'oauth2-redirect.html',
'swagger-ui-bundle.js',
'swagger-ui-standalone-preset.js',
'swagger-ui.css',
'swagger-ui.js'
]
filesToCopy.forEach(filename => {
fse.ensureFileSync(resolve(`./static/${filename}`))
const readableStream = fs.createReadStream(`${swaggerUiAssetPath}/${filename}`, 'utf8')
const writableStream = fs.createWriteStream(resolve(`./static/${filename}`))
// Matches sourceMappingURL comments in .js and .css files
const sourceMapRegex = new RegExp(String.raw`\/.# sourceMappingURL=${filename}.map(\*\/)?$`)
readableStream.on('data', (chunk) => {
// Copy file while removing sourceMappingURL comments
writableStream.write(chunk.replace(sourceMapRegex, ''))
})
})
const overrides = [
'favicon-16x16.png',
'favicon-32x32.png',
'logo.svg'
]
overrides.forEach(filename => {
fse.copySync(`./${filename}`, resolve(`./static/${filename}`))
})
const sha = {
script: [],
style: []
}
function computeCSPHashes (path) {
const scriptRegex = /<script>(.*)<\/script>/gis
const styleRegex = /<style>(.*)<\/style>/gis
const indexSrc = fs.readFileSync(resolve(path)).toString('utf8')
let result = scriptRegex.exec(indexSrc)
while (result !== null) {
const hash = crypto.createHash('sha256')
hash.update(result[1])
sha.script.push(`'sha256-${hash.digest().toString('base64')}'`)
result = scriptRegex.exec(indexSrc)
}
result = styleRegex.exec(indexSrc)
while (result !== null) {
const hash = crypto.createHash('sha256')
hash.update(result[1])
sha.style.push(`'sha256-${hash.digest().toString('base64')}'`)
result = styleRegex.exec(indexSrc)
}
}
computeCSPHashes(`./${folderName}/index.html`)
computeCSPHashes(`./${folderName}/oauth2-redirect.html`)
fse.writeFileSync(resolve(`./${folderName}/csp.json`), JSON.stringify(sha))

View File

@@ -0,0 +1 @@
{"script":[],"style":[]}

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,16 @@
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}

View File

@@ -0,0 +1,19 @@
<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Swagger UI</title>
<link rel="stylesheet" type="text/css" href="./swagger-ui.css" />
<link rel="stylesheet" type="text/css" href="index.css" />
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
</head>
<body>
<div id="swagger-ui"></div>
<script src="./swagger-ui-bundle.js" charset="UTF-8"> </script>
<script src="./swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
<script src="./swagger-initializer.js" charset="UTF-8"> </script>
</body>
</html>

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 6747 2071" style="enable-background:new 0 0 6747 2071;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<path class="st0" d="M6603.4,331.7L6700,81.5l-4.2-15.5l-955.7,251.8C5842,170.4,5807,52.2,5807,52.2S5501.8,247.1,5271,242
c-230.8-5.1-305.2-66.7-659.1,46.2c-353.9,112.8-453.9,459.1-556.5,533.5s-424.5,316.7-424.5,316.7l0.7,4.3l290.2-92.4
c0,0-79.6,75-248.7,302.9c0,0-2.9-2.7-7.9-7.3l0.3,1.6c0,0,135.9,207.7,269.3,169.3c13.4-3.9,28.5-10.3,45-18.7
c53.7,29.9,123.8,59.3,201.2,67.4c0,0-52.4-60.9-96.1-130.2c11.8-7.6,23.9-15.5,36.2-23.5l-5.7,4l110.5,40.6l-12.2-103.9
c0.4-0.2,0.7-0.5,1.1-0.7l108.6,39.9l-13.5-94.5c13.8-7.2,27.5-14,41.2-20.3l113.2-428.2l468.1-319.3l-37.2,93.6
c-94.9,233.4-273.1,288.5-273.1,288.5l-74.4,28.2c-55.3,65.4-78.6,81.5-97.6,301c44.6-11.2,87.2-13.9,125.8-3.5
c200,53.9,269.3,294.9,215.4,361.6c-13.5,16.7-45.6,45.2-86.1,78.7h-81.2l-1.1,65.8c-2.8,2.2-5.6,4.3-8.3,6.5h-82.6l-1,64.2
c-7.3,5.6-14.6,11-21.6,16.3c-77.6,1.6-175.9-66.1-175.9-66.1c0,61.6,51.3,156.4,51.3,156.4s3.4-1.6,9.1-4.4c-5,3.7-7.8,5.7-7.8,5.7
s207.7,138.5,338.5,87.2c116.3-45.6,417.4-283,677.3-395.4l786.5-207.2l103.7-268.7l-599.4,157.9v-241.3L6396,869.1l103.7-268.7
L5692.9,813V571.6L6603.4,331.7z M5176,843.2l186.6-49.2l2.5,9.3l-58.2,150.8l-193.4,51L5176,843.2z M5240.4,1166l-193.4,51
l62.5-162l186.6-49.2l2.5,9.3L5240.4,1166z M5492.4,1111.9l-193.4,51l62.5-162l186.6-49.2l2.5,9.3L5492.4,1111.9z"/>
<g>
<path class="st0" d="M186.7,656.5l6.1-30.8c17-89.3,50.9-166.4,114-224.9c46.2-43.1,114-69.3,191-69.3c49.3,0,86.3,7.7,109.4,15.4
l-43.1,147.9c-18.5-6.2-35.4-9.2-60.1-9.2c-69.3,0-109.4,72.4-121.7,138.6l-6.2,32.3h146.4l-26.2,135.6H353l-118.6,617.8H41.8
l118.6-617.8"/>
<path class="st0" d="M816.8,1409.9c1.5-40,4.6-81.7,6.1-126.3h-4.6c-60.1,100.2-132.5,138.7-192.6,138.7
c-109.4,0-163.3-94-163.3-226.5c0-228,114-551.5,437.5-551.5c75.5,0,151,12.3,197.2,30.8L1014,1094
c-18.5,87.8-32.4,234.2-30.8,315.8H816.8z M886.1,792.1c-15.4-3.1-29.3-4.6-40-4.6c-126.3,0-194.1,251.1-195.7,362.1
c0,66.3,9.3,114,57,114c52.4,0,101.7-86.3,129.4-223.4L886.1,792.1z"/>
<path class="st0" d="M1120.3,1245c30.8,17,67.8,32.3,121.7,30.8c55.5-1.5,86.3-37,86.3-84.7c0-41.6-20-70.9-72.4-112.5
c-64.7-52.4-95.5-118.6-95.5-183.3c0-138.7,107.8-251.1,278.9-251.1c66.3,0,114,12.3,141.7,27.7l-41.6,140.2
c-21.6-12.3-57-23.1-89.3-23.1c-61.6,0-100.1,32.3-100.1,83.2c0,38.5,21.6,61.6,57,90.9c84.7,64.7,112.5,138.6,112.5,197.2
c0,166.4-115.6,258.8-288.1,258.8c-69.3,0-131-20-157.2-38.5L1120.3,1245z"/>
<path class="st0" d="M1970.7,453.1l-38.5,203.4h295.8l-24.7,135.6H1906l-66.3,349.7c-4.6,26.2-6.2,49.3-6.2,63.2
c0,46.2,23.1,63.2,58.6,63.2c13.9,0,33.9,0,52.4-3.1l-23.1,144.8c-35.4,9.3-78.6,12.3-115.6,12.3c-115.5,0-172.6-64.7-172.6-166.4
c0-33.9,6.2-75.5,13.9-112.5l66.3-351.3h-87.8l26.2-135.6h87.8l30.8-155.6L1970.7,453.1z"/>
<path class="st0" d="M2017,1409.9l144.8-753.4h192.6l-144.8,753.4H2017z M2197.2,463.9c0-55.4,40-118.6,107.8-118.6
c63.2,0,92.5,47.7,90.9,100.1c-1.5,77-53.9,120.2-110.9,120.2C2223.4,565.6,2195.7,520.9,2197.2,463.9z"/>
<path class="st0" d="M2474,656.5l6.1-30.8c17-89.3,50.9-166.4,114-224.9c46.2-43.1,114-69.3,191-69.3c49.3,0,86.3,7.7,109.4,15.4
l-43.1,147.9c-18.5-6.2-35.4-9.2-60.1-9.2c-69.3,0-109.4,72.4-121.7,138.6l-6.2,32.3h223.4l-26.2,135.6h-220.3l-118.6,617.8h-192.6
l118.6-617.8"/>
<path class="st0" d="M3007.1,656.5l4.6,362.1c1.5,70.9,3.1,123.3,1.5,178.7h3.1c15.4-61.6,30.8-112.5,57-192.6l114-348.2h194.1
L3135,1249.6c-74,172.6-158.7,317.4-251.1,402.1c-44.7,41.6-97,74-129.4,87.8l-77-157.2c33.9-17,69.3-37,100.1-61.6
c43.2-35.5,84.7-78.6,103.2-120.2c3.1-10.8,6.1-18.5,4.6-33.9l-80.1-710.3H3007.1z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -0,0 +1,79 @@
<!doctype html>
<html lang="en-US">
<head>
<title>Swagger UI: OAuth2 Redirect</title>
</head>
<body>
<script>
'use strict';
function run () {
var oauth2 = window.opener.swaggerUIRedirectOauth2;
var sentState = oauth2.state;
var redirectUrl = oauth2.redirectUrl;
var isValid, qp, arr;
if (/code|token|error/.test(window.location.hash)) {
qp = window.location.hash.substring(1).replace('?', '&');
} else {
qp = location.search.substring(1);
}
arr = qp.split("&");
arr.forEach(function (v,i,_arr) { _arr[i] = '"' + v.replace('=', '":"') + '"';});
qp = qp ? JSON.parse('{' + arr.join() + '}',
function (key, value) {
return key === "" ? value : decodeURIComponent(value);
}
) : {};
isValid = qp.state === sentState;
if ((
oauth2.auth.schema.get("flow") === "accessCode" ||
oauth2.auth.schema.get("flow") === "authorizationCode" ||
oauth2.auth.schema.get("flow") === "authorization_code"
) && !oauth2.auth.code) {
if (!isValid) {
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "warning",
message: "Authorization may be unsafe, passed state was changed in server. The passed state wasn't returned from auth server."
});
}
if (qp.code) {
delete oauth2.state;
oauth2.auth.code = qp.code;
oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});
} else {
let oauthErrorMsg;
if (qp.error) {
oauthErrorMsg = "["+qp.error+"]: " +
(qp.error_description ? qp.error_description+ ". " : "no accessCode received from the server. ") +
(qp.error_uri ? "More info: "+qp.error_uri : "");
}
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "error",
message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server."
});
}
} else {
oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});
}
window.close();
}
if (document.readyState !== 'loading') {
run();
} else {
document.addEventListener('DOMContentLoaded', function () {
run();
});
}
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,49 @@
/* IMPORTANT
* This snapshot file is auto-generated, but designed for humans.
* It should be checked into source control and tracked carefully.
* Re-generate by setting TAP_SNAPSHOT=1 and running tests.
* Make sure to inspect the output below. Do not ignore changes!
*/
'use strict'
exports['test/static.test.js > TAP > postProcessor works, swagger route returns updated yaml > must match snapshot 1'] = `
openapi: 3.0.0
info:
description: Test swagger specification
version: 1.0.0
title: Test swagger specification
contact:
email: super.developer@gmail.com
servers:
- url: http://localhost:4000/
description: Localhost (uses test data)
paths:
/status:
get:
description: Status route, so we can check if server is alive
tags:
- Status
responses:
"200":
description: Server is alive
content:
application/json:
schema:
type: object
properties:
health:
type: boolean
date:
type: string
example:
health: true
date: 2018-02-19T15:36:46.758Z
`
exports['test/static.test.js > TAP > swagger route returns explicitly passed doc > must match snapshot 1'] = `
{
"message": "Route GET:/documentation/json not found",
"error": "Not Found",
"statusCode": 404
}
`

View File

View File

@@ -0,0 +1,230 @@
'use strict'
const { test } = require('tap')
const Fastify = require('fastify')
const fastifyHelmet = require('@fastify/helmet')
const fastifySwagger = require('@fastify/swagger')
const fastifySwaggerUi = require('..')
const {
schemaQuerystring,
schemaBody,
schemaParams,
schemaSecurity,
swaggerOption
} = require('../examples/options')
const csp = require('../static/csp.json')
test('staticCSP = undefined', async (t) => {
t.plan(3)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi)
fastify.get('/', () => {})
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
const res = await fastify.inject({
method: 'GET',
url: '/documentation'
})
t.equal(res.statusCode, 200)
t.equal(typeof res.headers['content-security-policy'], 'undefined')
t.equal(typeof res.payload, 'string')
})
test('staticCSP = true', async (t) => {
t.plan(5)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, {
staticCSP: true
})
fastify.get('/', () => { return '' })
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation'
})
t.equal(res.statusCode, 200)
t.equal(res.headers['content-security-policy'], `default-src 'self'; base-uri 'self'; font-src 'self' https: data:; frame-ancestors 'self'; img-src 'self' data: validator.swagger.io; object-src 'none'; script-src 'self' ${csp.script.join(' ')}; script-src-attr 'none'; style-src 'self' https: ${csp.style.join(' ')}; upgrade-insecure-requests;`)
t.equal(typeof res.payload, 'string')
}
{
const res = await fastify.inject({
method: 'GET',
url: '/'
})
t.equal(res.statusCode, 200)
t.equal(typeof res.headers['content-security-policy'], 'undefined')
}
})
test('staticCSP = "default-src \'self\';"', async (t) => {
t.plan(5)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, {
staticCSP: "default-src 'self';"
})
fastify.get('/', () => { return '' })
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation'
})
t.equal(res.statusCode, 200)
t.equal(res.headers['content-security-policy'], "default-src 'self';")
t.equal(typeof res.payload, 'string')
}
{
const res = await fastify.inject({
method: 'GET',
url: '/'
})
t.equal(res.statusCode, 200)
t.equal(typeof res.headers['content-security-policy'], 'undefined')
}
})
test('staticCSP = object', async (t) => {
t.plan(5)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, {
staticCSP: {
'default-src': ["'self'"],
'script-src': "'self'"
}
})
fastify.get('/', () => { return '' })
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation'
})
t.equal(res.statusCode, 200)
t.equal(res.headers['content-security-policy'], "default-src 'self'; script-src 'self';")
t.equal(typeof res.payload, 'string')
}
{
const res = await fastify.inject({
method: 'GET',
url: '/'
})
t.equal(res.statusCode, 200)
t.equal(typeof res.headers['content-security-policy'], 'undefined')
}
})
test('transformStaticCSP = function', async (t) => {
t.plan(6)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, {
staticCSP: "default-src 'self';",
transformStaticCSP: function (header) {
t.equal(header, "default-src 'self';")
return "default-src 'self'; script-src 'self';"
}
})
fastify.get('/', () => { return '' })
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation'
})
t.equal(res.statusCode, 200)
t.equal(res.headers['content-security-policy'], "default-src 'self'; script-src 'self';")
t.equal(typeof res.payload, 'string')
}
{
const res = await fastify.inject({
method: 'GET',
url: '/'
})
t.equal(res.statusCode, 200)
t.equal(typeof res.headers['content-security-policy'], 'undefined')
}
})
test('transformStaticCSP = function, with @fastify/helmet', async (t) => {
t.plan(6)
const fastify = Fastify()
fastify.register(fastifyHelmet)
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, {
transformStaticCSP: function (header) {
t.equal(header, "default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests")
return "default-src 'self'; script-src 'self';"
}
})
fastify.get('/', () => { return '' })
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation'
})
t.equal(res.statusCode, 200)
t.equal(res.headers['content-security-policy'], "default-src 'self'; script-src 'self';")
t.equal(typeof res.payload, 'string')
}
{
const res = await fastify.inject({
method: 'GET',
url: '/'
})
t.equal(res.statusCode, 200)
t.equal(res.headers['content-security-policy'], "default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests")
}
})

View File

@@ -0,0 +1,18 @@
'use strict'
const { test } = require('tap')
const Fastify = require('fastify')
const fastifySwagger = require('@fastify/swagger')
const fastifySwaggerUi = require('../index')
test('fastify.swaggerCSP should exist', async (t) => {
t.plan(3)
const fastify = Fastify()
await fastify.register(fastifySwagger)
await fastify.register(fastifySwaggerUi)
t.ok(fastify.swaggerCSP)
t.ok(Array.isArray(fastify.swaggerCSP.script))
t.ok(Array.isArray(fastify.swaggerCSP.style))
})

View File

@@ -0,0 +1,140 @@
'use strict'
const { test } = require('tap')
const Fastify = require('fastify')
const yaml = require('yaml')
const fastifySwagger = require('@fastify/swagger')
const fastifySwaggerUi = require('../index')
const { swaggerOption, schemaBody } = require('../examples/options')
const authOptions = {
validate (username, password, req, reply, done) {
if (username === 'admin' && password === 'admin') {
done()
} else {
done(new Error('Winter is coming'))
}
},
authenticate: true
}
function basicAuthEncode (username, password) {
return 'Basic ' + Buffer.from(username + ':' + password).toString('base64')
}
test('hooks on static swagger', async t => {
const fastify = Fastify()
await fastify.register(require('@fastify/basic-auth'), authOptions)
await fastify.register(fastifySwagger, {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml'
}
})
await fastify.register(fastifySwaggerUi, {
uiHooks: {
onRequest: fastify.basicAuth
}
})
let res = await fastify.inject('/documentation')
t.equal(res.statusCode, 401, 'root auth required')
res = await fastify.inject('/documentation/yaml')
t.equal(res.statusCode, 401, 'auth required yaml')
res = await fastify.inject({
method: 'GET',
url: '/documentation/yaml',
headers: { authorization: basicAuthEncode('admin', 'admin') }
})
t.equal(res.statusCode, 200)
t.equal(res.headers['content-type'], 'application/x-yaml')
try {
yaml.parse(res.payload)
t.pass('valid swagger yaml')
} catch (err) {
t.fail(err)
}
res = await fastify.inject('/documentation/json')
t.equal(res.statusCode, 401, 'auth required json')
res = await fastify.inject({
method: 'GET',
url: '/documentation/json',
headers: { authorization: basicAuthEncode('admin', 'admin') }
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/json; charset=utf-8')
try {
yaml.parse(res.payload)
t.pass('valid swagger json')
} catch (err) {
t.fail(err)
}
})
test('hooks on dynamic swagger', async t => {
const fastify = Fastify()
await fastify.register(require('@fastify/basic-auth'), authOptions)
await fastify.register(fastifySwagger, {
...swaggerOption
})
await fastify.register(fastifySwaggerUi, {
uiHooks: {
onRequest: fastify.basicAuth
}
})
fastify.post('/fooBar123', schemaBody, () => {})
let res = await fastify.inject('/documentation')
t.equal(res.statusCode, 401, 'root auth required')
res = await fastify.inject('/documentation/yaml')
t.equal(res.statusCode, 401, 'auth required yaml')
res = await fastify.inject('/documentation/json')
t.equal(res.statusCode, 401, 'auth required json')
res = await fastify.inject({
method: 'GET',
url: '/documentation/json',
headers: { authorization: basicAuthEncode('admin', 'admin') }
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/json; charset=utf-8')
const swaggerObject = res.json()
t.ok(swaggerObject.paths)
t.ok(swaggerObject.paths['/fooBar123'])
})
test('catch all added schema', async t => {
const fastify = Fastify()
await fastify.register(fastifySwagger, {
openapi: {},
refResolver: {
buildLocalReference: (json, baseUri, fragment, i) => {
return json.$id || `def-${i}`
}
}
})
await fastify.register(fastifySwaggerUi)
fastify.addSchema({ $id: 'Root', type: 'object', properties: {} })
fastify.register(async function (instance) {
instance.addSchema({ $id: 'Instance', type: 'object', properties: {} })
await instance.register(async function (instance) {
instance.addSchema({ $id: 'Sub-Instance', type: 'object', properties: {} })
})
})
await fastify.ready()
const openapi = fastify.swagger()
t.same(Object.keys(openapi.components.schemas), ['Root', 'Instance', 'Sub-Instance'])
})

View File

@@ -0,0 +1,47 @@
'use strict'
const { test } = require('tap')
const Fastify = require('fastify')
const fastifySwagger = require('@fastify/swagger')
const fastifyHelmet = require('@fastify/helmet')
const fastifySwaggerUi = require('../index')
const swaggerCSP = require('../static/csp.json')
test('fastify will response swagger csp', async (t) => {
t.plan(1)
const scriptCSP = swaggerCSP.script.length > 0 ? ` ${swaggerCSP.script.join(' ')}` : ''
const styleCSP = swaggerCSP.style.length > 0 ? ` ${swaggerCSP.style.join(' ')}` : ''
const csp = `default-src 'self';img-src 'self' data: validator.swagger.io;script-src 'self'${scriptCSP};style-src 'self' https:${styleCSP};base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests`
const fastify = Fastify()
await fastify.register(fastifySwagger)
await fastify.register(fastifySwaggerUi)
const scriptSrc = ["'self'"].concat(fastify.swaggerCSP.script)
const styleSrc = ["'self'", 'https:'].concat(fastify.swaggerCSP.style)
await fastify.register(fastifyHelmet, {
contentSecurityPolicy: {
directives: {
defaultSrc: ["'self'"],
imgSrc: ["'self'", 'data:', 'validator.swagger.io'],
scriptSrc,
styleSrc
}
}
})
// route for testing CSP headers
fastify.get('/', (req, reply) => {
reply.send({
foo: 'bar'
})
})
const res = await fastify.inject({
method: 'GET',
url: '/'
})
t.same(res.headers['content-security-policy'], csp)
})

View File

@@ -0,0 +1,38 @@
'use strict'
const { test } = require('tap')
const Fastify = require('fastify')
const fastifySwagger = require('@fastify/swagger')
const fastifySwaggerUi = require('../index')
test('Swagger source does not contain sourceMaps', async (t) => {
t.plan(2)
const fastify = Fastify()
await fastify.register(fastifySwagger)
await fastify.register(fastifySwaggerUi)
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/swagger-ui.js'
})
const includesSourceMap = res.payload.includes('sourceMappingURL')
t.equal(includesSourceMap, false)
t.equal(res.headers['content-type'], 'application/javascript; charset=UTF-8')
})
test('Swagger css does not contain sourceMaps', async (t) => {
t.plan(2)
const fastify = Fastify()
await fastify.register(fastifySwagger)
await fastify.register(fastifySwaggerUi)
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/swagger-ui.css'
})
const includesSourceMap = res.payload.includes('sourceMappingURL')
t.equal(includesSourceMap, false)
t.equal(res.headers['content-type'], 'text/css; charset=UTF-8')
})

View File

@@ -0,0 +1,718 @@
'use strict'
const t = require('tap')
const test = t.test
const Fastify = require('fastify')
const Swagger = require('@apidevtools/swagger-parser')
const yaml = require('yaml')
const fastifySwagger = require('@fastify/swagger')
const fastifySwaggerUi = require('../index')
const {
schemaQuerystring,
schemaBody,
schemaParams,
schemaSecurity,
swaggerOption
} = require('../examples/options')
const resolve = require('node:path').resolve
const readFileSync = require('node:fs').readFileSync
const schemaParamsWithoutDesc = {
schema: {
params: {
type: 'object',
properties: {
id: {
type: 'string'
}
}
}
}
}
const schemaParamsWithKey = {
schema: {
params: {
type: 'object',
properties: {
id: {
type: 'string',
description: 'user id'
},
key: {
type: 'string',
description: 'just some random key'
}
}
}
}
}
test('/documentation/json route', async (t) => {
t.plan(1)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi)
fastify.get('/', () => {})
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
const res = await fastify.inject({
method: 'GET',
url: '/documentation/json'
})
const payload = JSON.parse(res.payload)
await Swagger.validate(payload)
t.pass('valid swagger object')
})
test('fastify.swagger should return a valid swagger yaml', async (t) => {
t.plan(3)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi)
fastify.get('/', () => {})
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
fastify.all('/parametersWithoutDesc/:id', schemaParamsWithoutDesc, () => {})
const res = await fastify.inject({
method: 'GET',
url: '/documentation/yaml'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/x-yaml')
yaml.parse(res.payload)
t.pass('valid swagger yaml')
})
test('/documentation should display index html', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi)
fastify.get('/', () => {})
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
const res = await fastify.inject({
method: 'GET',
url: '/documentation'
})
t.equal(res.statusCode, 200)
t.equal(res.headers.location, undefined)
t.equal(typeof res.payload, 'string')
t.equal('text/html; charset=utf-8', res.headers['content-type'])
})
test('/documentation/ should display index html ', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi)
fastify.get('/', () => {})
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
const res = await fastify.inject({
method: 'GET',
url: '/documentation/'
})
t.equal(res.statusCode, 200)
t.equal(res.headers.location, undefined)
t.equal(typeof res.payload, 'string')
t.equal('text/html; charset=utf-8', res.headers['content-type'])
})
test('/v1/documentation should display index html', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { routePrefix: '/v1/documentation' })
fastify.get('/', () => {})
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
const res = await fastify.inject({
method: 'GET',
url: '/v1/documentation'
})
t.equal(res.statusCode, 200)
t.equal(res.headers.location, undefined)
t.equal(typeof res.payload, 'string')
t.equal('text/html; charset=utf-8', res.headers['content-type'])
})
test('/v1/documentation/ should display index html', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { routePrefix: '/v1/documentation' })
fastify.get('/', () => {})
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
const res = await fastify.inject({
method: 'GET',
url: '/v1/documentation/'
})
t.equal(res.statusCode, 200)
t.equal(res.headers.location, undefined)
t.equal(typeof res.payload, 'string')
t.equal('text/html; charset=utf-8', res.headers['content-type'])
})
test('/v1/foobar should display index html', async (t) => {
t.plan(4)
const fastify = Fastify()
fastify.register(async function (fastify, options) {
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { routePrefix: '/foobar', noRedirect: true })
fastify.get('/', () => {})
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
}, { prefix: '/v1' })
const res = await fastify.inject({
method: 'GET',
url: '/v1/foobar'
})
t.equal(res.statusCode, 200)
t.equal(res.headers.location, undefined)
t.equal(typeof res.payload, 'string')
t.equal('text/html; charset=utf-8', res.headers['content-type'])
})
test('/v1/foobar/ should display index html', async (t) => {
t.plan(4)
const fastify = Fastify()
fastify.register(async function (fastify, options) {
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { routePrefix: '/foobar' })
fastify.get('/', () => {})
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
}, { prefix: '/v1' })
const res = await fastify.inject({
method: 'GET',
url: '/v1/foobar/'
})
t.equal(res.statusCode, 200)
t.equal(res.headers.location, undefined)
t.equal(typeof res.payload, 'string')
t.equal('text/html; charset=utf-8', res.headers['content-type'])
})
test('with routePrefix: \'/\' should display index html', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { routePrefix: '/' })
fastify.get('/foo', () => {})
const res = await fastify.inject({
method: 'GET',
url: '/'
})
t.equal(res.statusCode, 200)
t.equal(res.headers.location, undefined)
t.equal(typeof res.payload, 'string')
t.equal('text/html; charset=utf-8', res.headers['content-type'])
})
test('/documentation/static/:file should send back the correct file', async (t) => {
t.plan(21)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi)
fastify.get('/', () => {})
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
await fastify.ready()
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/index.html'
})
t.equal(res.statusCode, 302)
t.equal(res.headers.location, '/documentation/')
}
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'text/html; charset=UTF-8')
t.equal(
readFileSync(
resolve(__dirname, '..', 'static', 'index.html'),
'utf8'
),
res.payload
)
t.ok(res.payload.indexOf('swagger-initializer.js') !== -1)
}
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/swagger-initializer.js'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/javascript; charset=utf-8')
t.ok(res.payload.indexOf('resolveUrl') !== -1)
}
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/oauth2-redirect.html'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'text/html; charset=UTF-8')
t.equal(
readFileSync(
resolve(__dirname, '..', 'static', 'oauth2-redirect.html'),
'utf8'
),
res.payload
)
}
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/swagger-ui.css'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'text/css; charset=UTF-8')
t.equal(
readFileSync(
resolve(__dirname, '..', 'static', 'swagger-ui.css'),
'utf8'
),
res.payload
)
}
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/swagger-ui-bundle.js'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/javascript; charset=UTF-8')
t.equal(
readFileSync(
resolve(__dirname, '..', 'static', 'swagger-ui-bundle.js'),
'utf8'
),
res.payload
)
}
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/swagger-ui-standalone-preset.js'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/javascript; charset=UTF-8')
t.equal(
readFileSync(
resolve(__dirname, '..', 'static', 'swagger-ui-standalone-preset.js'),
'utf8'
),
res.payload
)
}
})
test('/documentation/static/:file should send back file from baseDir', async (t) => {
t.plan(2)
const fastify = Fastify()
const uiConfig = {
baseDir: resolve(__dirname, '..', 'examples', 'static')
}
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, uiConfig)
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/example-logo.svg'
})
t.equal(res.statusCode, 200)
t.equal(
res.payload,
readFileSync(
resolve(__dirname, '..', 'examples', 'static', 'example-logo.svg'),
'utf8'
)
)
}
})
test('/documentation/static/:file 404', async (t) => {
t.plan(2)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi)
fastify.get('/', () => {})
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/stuff.css'
})
const payload = JSON.parse(res.payload)
t.equal(res.statusCode, 404)
t.match(payload, {
error: 'Not Found',
statusCode: 404
})
})
test('/documentation2/json route (overwrite)', async (t) => {
t.plan(1)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { routePrefix: '/documentation2' })
fastify.get('/', () => {})
fastify.post('/', () => {})
fastify.get('/example', schemaQuerystring, () => {})
fastify.post('/example', schemaBody, () => {})
fastify.get('/parameters/:id', schemaParams, () => {})
fastify.get('/example1', schemaSecurity, () => {})
fastify.get('/parameters/:id/:key', schemaParamsWithKey, () => {})
const res = await fastify.inject({
method: 'GET',
url: '/documentation2/json'
})
const payload = JSON.parse(res.payload)
await Swagger.validate(payload)
t.pass('valid swagger object')
})
test('/documentation/:myfile should return 404 in dynamic mode', async (t) => {
t.plan(1)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi)
const res = await fastify.inject({
method: 'GET',
url: '/documentation/swagger-ui.js'
})
t.equal(res.statusCode, 404)
})
test('/documentation/:myfile should run custom NotFoundHandler in dynamic mode', async (t) => {
t.plan(1)
const fastify = Fastify()
const notFoundHandler = function (req, reply) {
reply.code(410).send()
}
fastify.setNotFoundHandler(notFoundHandler)
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi)
const res = await fastify.inject({
method: 'GET',
url: '/documentation/swagger-ui.js'
})
t.equal(res.statusCode, 410)
})
test('/documentation/* should not return module files when baseDir not set', async (t) => {
t.plan(1)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi)
const res = await fastify.inject({
method: 'GET',
url: '/documentation/README.md'
})
t.equal(res.statusCode, 404)
})
test('should return silent log level of route /documentation', async (t) => {
const fastify = Fastify()
fastify.addHook('onRoute', function (route) {
t.equal(route.logLevel, 'silent')
})
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { logLevel: 'silent' })
const res = await fastify.inject({
method: 'GET',
url: '/documentation/'
})
t.equal(res.statusCode, 200)
t.equal(res.headers['content-type'], 'text/html; charset=utf-8')
})
test('should return empty log level of route /documentation', async (t) => {
const fastify = Fastify()
fastify.addHook('onRoute', function (route) {
t.equal(route.logLevel, '')
})
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi)
const res = await fastify.inject({
method: 'GET',
url: '/documentation/'
})
t.equal(res.statusCode, 200)
t.equal(res.headers['content-type'], 'text/html; charset=utf-8')
})
test('/documentation should display index html with correct asset urls', async (t) => {
t.plan(6)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { theme: { js: [{ filename: 'theme-js.js' }] } })
const res = await fastify.inject({
method: 'GET',
url: '/documentation'
})
t.equal(res.payload.includes('href="./documentation/static/index.css"'), true)
t.equal(res.payload.includes('src="./documentation/static/theme/theme-js.js"'), true)
t.equal(res.payload.includes('href="./documentation/index.css"'), false)
t.equal(res.payload.includes('src="./documentation/theme/theme-js.js"'), false)
let cssRes = await fastify.inject({
method: 'GET',
url: '/documentation/static/index.css'
})
t.equal(cssRes.statusCode, 200)
cssRes = await fastify.inject({
method: 'GET',
url: './documentation/static/index.css'
})
t.equal(cssRes.statusCode, 200)
})
/**
* This emulates when the server is inside an NGINX application that routes by path
*/
test('/documentation should display index html with correct asset urls when nested', async (t) => {
t.plan(5)
const fastify = Fastify()
await fastify.register(
async () => {
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { theme: { js: [{ filename: 'theme-js.js' }] } })
},
{
prefix: '/swagger-app'
}
)
const res = await fastify.inject({
method: 'GET',
url: '/swagger-app/documentation'
})
t.equal(res.payload.includes('href="./documentation/static/index.css"'), true)
t.equal(res.payload.includes('src="./documentation/static/theme/theme-js.js"'), true)
t.equal(res.payload.includes('href="./documentation/index.css"'), false)
t.equal(res.payload.includes('src="./documentation/theme/theme-js.js"'), false)
const cssRes = await fastify.inject({
method: 'GET',
url: '/swagger-app/documentation/static/index.css'
})
t.equal(cssRes.statusCode, 200)
})
test('/documentation/ should display index html with correct asset urls', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { theme: { js: [{ filename: 'theme-js.js' }] } })
const res = await fastify.inject({
method: 'GET',
url: '/documentation/'
})
t.equal(res.payload.includes('href="./static/index.css"'), true)
t.equal(res.payload.includes('src="./static/theme/theme-js.js"'), true)
t.equal(res.payload.includes('href="./index.css"'), false)
t.equal(res.payload.includes('src="./theme/theme-js.js"'), false)
})
test('/docs should display index html with correct asset urls when documentation prefix is set', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { theme: { js: [{ filename: 'theme-js.js' }] }, routePrefix: '/docs' })
const res = await fastify.inject({
method: 'GET',
url: '/docs'
})
t.equal(res.payload.includes('href="./docs/static/index.css"'), true)
t.equal(res.payload.includes('src="./docs/static/theme/theme-js.js"'), true)
t.equal(res.payload.includes('href="./docs/index.css"'), false)
t.equal(res.payload.includes('src="./docs/theme/theme-js.js"'), false)
})
test('/docs should display index html with correct asset urls when documentation prefix is set with no leading slash', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { theme: { js: [{ filename: 'theme-js.js' }] }, routePrefix: 'docs' })
const res = await fastify.inject({
method: 'GET',
url: '/docs'
})
t.equal(res.payload.includes('href="docs/static/index.css"'), true)
t.equal(res.payload.includes('src="docs/static/theme/theme-js.js"'), true)
t.equal(res.payload.includes('href="docs/index.css"'), false)
t.equal(res.payload.includes('src="docs/theme/theme-js.js"'), false)
})
test('/docs/ should display index html with correct asset urls when documentation prefix is set', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { theme: { js: [{ filename: 'theme-js.js' }] }, routePrefix: '/docs' })
const res = await fastify.inject({
method: 'GET',
url: '/docs/'
})
t.equal(res.payload.includes('href="./static/index.css"'), true)
t.equal(res.payload.includes('src="./static/theme/theme-js.js"'), true)
t.equal(res.payload.includes('href="./index.css"'), false)
t.equal(res.payload.includes('src="./theme/theme-js.js"'), false)
})
test('/documentation/ should display index html with correct asset urls', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { theme: { js: [{ filename: 'theme-js.js' }] } })
const res = await fastify.inject({
method: 'GET',
url: '/documentation/'
})
t.equal(res.payload.includes('href="./static/index.css"'), true)
t.equal(res.payload.includes('src="./static/theme/theme-js.js"'), true)
t.equal(res.payload.includes('href="./index.css"'), false)
t.equal(res.payload.includes('src="./theme/theme-js.js"'), false)
})
test('/docs should display index html with correct asset urls when documentation prefix is set', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { theme: { js: [{ filename: 'theme-js.js' }] }, routePrefix: '/docs' })
const res = await fastify.inject({
method: 'GET',
url: '/docs'
})
t.equal(res.payload.includes('href="./docs/static/index.css"'), true)
t.equal(res.payload.includes('src="./docs/static/theme/theme-js.js"'), true)
t.equal(res.payload.includes('href="./docs/index.css"'), false)
t.equal(res.payload.includes('src="./docs/theme/theme-js.js"'), false)
})
test('/docs/ should display index html with correct asset urls when documentation prefix is set', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, swaggerOption)
await fastify.register(fastifySwaggerUi, { theme: { js: [{ filename: 'theme-js.js' }] }, routePrefix: '/docs' })
const res = await fastify.inject({
method: 'GET',
url: '/docs/'
})
t.equal(res.payload.includes('href="./static/index.css"'), true)
t.equal(res.payload.includes('src="./static/theme/theme-js.js"'), true)
t.equal(res.payload.includes('href="./index.css"'), false)
t.equal(res.payload.includes('src="./theme/theme-js.js"'), false)
})

View File

@@ -0,0 +1,128 @@
'use strict'
const { test } = require('tap')
const serialize = require('../lib/serialize')
test('serialize', async (t) => {
t.plan(8)
t.test('boolean', t => {
t.plan(2)
t.equal(serialize(true), 'true')
t.equal(serialize(false), 'false')
})
t.test('number', t => {
t.plan(7)
t.equal(serialize(0), '0')
t.equal(serialize(1), '1')
t.equal(serialize(1.0), '1')
t.equal(serialize(1.01), '1.01')
t.equal(serialize(Infinity), 'Infinity')
t.equal(serialize(-Infinity), '-Infinity')
t.equal(serialize(NaN), 'NaN')
})
t.test('string', t => {
t.plan(3)
t.equal(serialize('0'), '"0"')
t.equal(serialize('abc'), '"abc"')
t.equal(serialize('"a'), '"\\\"a"') // eslint-disable-line no-useless-escape
})
t.test('bigint', t => {
t.plan(3)
t.equal(serialize(0n), '0n')
t.equal(serialize(1000000000n), '1000000000n')
t.equal(serialize(-9999n), '-9999n')
})
t.test('function', t => {
t.plan(7)
t.equal(serialize(function a () {}), 'function a () {}')
t.equal(serialize(async function a () {}), 'async function a () {}')
t.equal(serialize(() => {}), '() => {}')
t.equal(serialize(async () => {}), 'async () => {}')
t.equal(serialize(() => Date.now), '() => Date.now')
t.equal(serialize(function () {}), 'function () {}')
t.equal(serialize(async function () {}), 'async function () {}')
})
t.test('undefined', t => {
t.plan(1)
t.equal(serialize(undefined), 'undefined')
})
t.test('symbol', t => {
t.plan(2)
t.equal(serialize(Symbol('a')), 'Symbol("a")')
t.equal(serialize(Symbol()), 'Symbol()') // eslint-disable-line symbol-description
})
t.test('object', t => {
t.plan(7)
t.test('null', t => {
t.plan(1)
t.equal(serialize(null), 'null')
})
t.test('RegExp', t => {
t.plan(1)
t.equal(serialize(/0-9/gi), '/0-9/gi')
})
t.test('Date', t => {
t.plan(1)
t.equal(serialize(new Date(0)), 'new Date(0)')
})
t.test('Array', t => {
t.plan(5)
t.equal(serialize([]), '[]')
t.equal(serialize(['a']), '["a"]')
t.equal(serialize([1, 1n, 'a', true]), '[1,1n,"a",true]')
t.equal(serialize([{}]), '[{}]')
t.equal(serialize([{ a: [{}] }]), '[{"a":[{}]}]')
})
t.test('POJO', t => {
t.plan(3)
t.equal(serialize({}), '{}')
t.equal(serialize({ key: 'value' }), '{"key":"value"}')
t.equal(serialize({ null: null, undefined }), '{"null":null,"undefined":undefined}')
})
t.test('Set', t => {
t.plan(3)
t.equal(serialize(new Set()), 'new Set([])')
t.equal(serialize(new Set(['a'])), 'new Set(["a"])')
t.equal(serialize(new Set(['a', {}])), 'new Set(["a",{}])')
})
t.test('Map', t => {
t.plan(3)
t.equal(serialize(new Map()), 'new Map([])')
t.equal(serialize(new Map([['a', 1]])), 'new Map([["a",1]])')
const map = new Map()
map.set('b', 1)
t.equal(serialize(map), 'new Map([["b",1]])')
})
})
})

View File

@@ -0,0 +1,407 @@
'use strict'
const fs = require('node:fs')
const resolve = require('node:path').resolve
const { test } = require('tap')
const yaml = require('yaml')
const Fastify = require('fastify')
const fastifySwagger = require('@fastify/swagger')
const fastifySwaggerUi = require('../index')
const oauthRedirectHtml = fs.readFileSync(resolve(__dirname, '..', 'static', 'oauth2-redirect.html'), 'utf8')
const exampleStaticSpecificationYaml = fs.readFileSync(
resolve(__dirname, '..', 'examples', 'example-static-specification.yaml'),
'utf8'
)
test('swagger route returns yaml', async (t) => {
t.plan(3)
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml'
}
}
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi)
// check that yaml is there
const res = await fastify.inject({
method: 'GET',
url: '/documentation/yaml'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/x-yaml')
yaml.parse(res.payload)
t.pass('valid swagger yaml')
})
test('swagger route returns json', async (t) => {
t.plan(3)
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.json'
}
}
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi)
// check that json is there
const res = await fastify.inject({
method: 'GET',
url: '/documentation/json'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/json; charset=utf-8')
yaml.parse(res.payload)
t.pass('valid swagger json')
})
test('postProcessor works, swagger route returns updated yaml', async (t) => {
t.plan(4)
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml',
postProcessor: function (swaggerObject) {
swaggerObject.servers[0].url = 'http://localhost:4000/'
return swaggerObject
}
}
}
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi)
// check that yaml is there
const res = await fastify.inject({
method: 'GET',
url: '/documentation/yaml'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/x-yaml')
yaml.parse(res.payload)
t.matchSnapshot(res.payload)
t.pass('valid swagger yaml')
})
test('swagger route returns explicitly passed doc', async (t) => {
t.plan(2)
const document = {
info: {
title: 'Test swagger',
description: 'testing the fastify swagger api',
version: '0.1.0'
}
}
const config = {
mode: 'static',
specification: {
document
}
}
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
// check that json is there
const res = await fastify.inject({
method: 'GET',
url: '/documentation/json'
})
const payload = JSON.parse(res.payload)
t.matchSnapshot(JSON.stringify(payload, null, 2))
t.pass('valid explicitly passed spec document')
})
test('/documentation/:file should serve static file from the location of main specification file', async (t) => {
t.plan(4)
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml'
}
}
const uiConfig = {
baseDir: resolve(__dirname, '..', 'examples')
}
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi, uiConfig)
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/non-existing-file'
})
t.equal(res.statusCode, 404)
}
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/example-static-specification.yaml'
})
t.equal(res.statusCode, 200)
t.equal(exampleStaticSpecificationYaml, res.payload)
}
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/dynamic-swagger.js'
})
t.equal(res.statusCode, 200)
}
})
test('/documentation/non-existing-file calls custom NotFoundHandler', async (t) => {
t.plan(1)
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml'
}
}
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi)
fastify.setNotFoundHandler((request, reply) => {
reply.code(410).send()
})
const res = await fastify.inject({
method: 'GET',
url: '/documentation/some-file-that-does-not-exist.js'
})
t.equal(res.statusCode, 410)
})
test('/documentation/:file should be served from custom location', async (t) => {
t.plan(2)
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml',
baseDir: resolve(__dirname, '..', 'static')
}
}
const uiConfig = {
baseDir: resolve(__dirname, '..', 'static')
}
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi, uiConfig)
const res = await fastify.inject({
method: 'GET',
url: '/documentation/oauth2-redirect.html'
})
t.equal(res.statusCode, 200)
t.equal(oauthRedirectHtml, res.payload)
})
test('/documentation/:file should be served from custom location with trailing slash(es)', async (t) => {
t.plan(2)
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml'
}
}
const uiConfig = {
baseDir: resolve(__dirname, '..', 'static') + '/'
}
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi, uiConfig)
const res = await fastify.inject({
method: 'GET',
url: '/documentation/oauth2-redirect.html'
})
t.equal(res.statusCode, 200)
t.equal(oauthRedirectHtml, res.payload)
})
test('/documentation/yaml returns cache.swaggerString on second request in static mode', async (t) => {
t.plan(6)
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml'
}
}
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi)
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/yaml'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/x-yaml')
yaml.parse(res.payload)
t.pass('valid swagger yaml')
}
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/yaml'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/x-yaml')
yaml.parse(res.payload)
t.pass('valid swagger yaml')
}
})
test('/documentation/json returns cache.swaggerObject on second request in static mode', async (t) => {
t.plan(6)
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.json'
}
}
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi)
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/json'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/json; charset=utf-8')
t.pass('valid swagger json')
}
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/json'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/json; charset=utf-8')
t.pass('valid swagger json')
}
})
test('/documentation/yaml returns cache.swaggerString on second request in dynamic mode', async (t) => {
t.plan(6)
const config = {
specification: {
path: './examples/example-static-specification.yaml'
}
}
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi)
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/yaml'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/x-yaml')
yaml.parse(res.payload)
t.pass('valid swagger yaml')
}
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/yaml'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/x-yaml')
yaml.parse(res.payload)
t.pass('valid swagger yaml')
}
})
test('/documentation/json returns cache.swaggerObject on second request in dynamic mode', async (t) => {
t.plan(6)
const config = {
specification: {
path: './examples/example-static-specification.json'
}
}
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi)
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/json'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/json; charset=utf-8')
t.pass('valid swagger json')
}
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/json'
})
t.equal(typeof res.payload, 'string')
t.equal(res.headers['content-type'], 'application/json; charset=utf-8')
t.pass('valid swagger json')
}
})

View File

@@ -0,0 +1,94 @@
'use strict'
const { test } = require('tap')
const Fastify = require('fastify')
const fastifySwagger = require('@fastify/swagger')
const fastifySwaggerUi = require('../index')
test('/documentation/static/swagger-initializer.js should have default uiConfig', async (t) => {
t.plan(2)
const fastify = Fastify()
await fastify.register(fastifySwagger)
await fastify.register(fastifySwaggerUi)
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/swagger-initializer.js'
})
t.equal(res.statusCode, 200)
t.ok(res.payload.includes('const config = {}'))
})
test('/documentation/static/swagger-initializer.js should have configurable uiConfig', async (t) => {
t.plan(2)
const fastify = Fastify()
await fastify.register(fastifySwagger)
await fastify.register(fastifySwaggerUi, {
// eslint-disable-next-line no-undef
uiConfig: { onComplete: () => { alert('test') } }
})
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/swagger-initializer.js'
})
t.equal(res.statusCode, 200)
t.ok(res.payload.includes("const config = {\"onComplete\":() => { alert('test') }}"))
})
test('/documentation/static/swagger-initializer.js should have default initOAuth', async (t) => {
t.plan(2)
const fastify = Fastify()
await fastify.register(fastifySwagger)
await fastify.register(fastifySwaggerUi)
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/swagger-initializer.js'
})
t.equal(res.statusCode, 200)
t.ok(res.payload.includes('ui.initOAuth({})'))
})
test('/documentation/static/swagger-initializer.js should have configurable initOAuth', async (t) => {
t.plan(2)
const fastify = Fastify()
await fastify.register(fastifySwagger)
await fastify.register(fastifySwaggerUi, {
initOAuth: {
clientId: 'someId'
}
})
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/swagger-initializer.js'
})
t.equal(res.statusCode, 200)
t.ok(res.payload.includes('ui.initOAuth({"clientId":"someId"})'))
})
test('customize logo', async (t) => {
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml'
}
}
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi, { logo: { type: 'image/png', content: 'foobar' } })
const res = await fastify.inject('/documentation/static/swagger-initializer.js')
t.equal(res.body.indexOf(Buffer.from('foobar').toString('base64')) > -1, true)
})

View File

@@ -0,0 +1,244 @@
'use strict'
const { test } = require('tap')
const Fastify = require('fastify')
const fastifySwagger = require('@fastify/swagger')
const fastifySwaggerUi = require('../index')
test('swagger route does not return additional theme', async (t) => {
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml'
}
}
t.plan(5)
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi, { theme: null })
const res = await fastify.inject({
method: 'GET',
url: '/documentation'
})
t.equal(typeof res.payload, 'string')
t.notMatch(res.payload, /theme\/special\.js/)
t.notMatch(res.payload, /theme\/favicon\.png/)
t.notMatch(res.payload, /theme\/theme\.css/)
t.equal(res.headers['content-type'], 'text/html; charset=utf-8')
})
test('swagger route returns additional theme', async (t) => {
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml'
}
}
t.plan(9)
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi, {
theme: {
js: [
{ filename: 'special.js', content: 'alert("loaded test-theme")' }
],
css: [
{ filename: 'theme.css', content: '* {border: 1px red solid;}' }
],
favicon: [
{
filename: 'favicon.png',
rel: 'icon',
sizes: '16x16',
type: 'image/png',
content: Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAQAAABjX+2PAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAACYktHRAD/h4/MvwAAAAd0SU1FB+cCEQ06N8A8CiUAAADnSURBVBjTrdE/K8QBAMbxz/0TLrnUWcTg7ySLewGEwWDRzSYpyULJbGG6wWBTlMEbkHsFNnVloAwXudIlnDru1O9nOCex3rM89TzL0/eh1Ypo//Zk5CdM6JP2IWFOxbmMKZVmPWzbrJSamG5FNXUFx42yV16oqCQUerNr2pghsSgS1sw4kxNVVvbu3rwjSwJ67Kgq2XMjtO/AnWsnVgwQNy6rQ8GkURWBpCebXnR5gA11j5b1OxT4EKq6dGurMWvQqqw2LPoUKDq1LqPzN4q0rCuvckbE/pOakHdhQfwvwKan8Nzad74AkR8/Ir6qAvAAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjMtMDItMTdUMTM6NTg6NTUrMDA6MDBjkr64AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIzLTAyLTE3VDEzOjU4OjU1KzAwOjAwEs8GBAAAACh0RVh0ZGF0ZTp0aW1lc3RhbXAAMjAyMy0wMi0xN1QxMzo1ODo1NSswMDowMEXaJ9sAAAAASUVORK5CYII=', 'base64')
}
]
}
})
const res = await fastify.inject({
method: 'GET',
url: '/documentation'
})
t.equal(typeof res.payload, 'string')
t.match(res.payload, /theme\/special\.js/)
t.match(res.payload, /theme\/favicon\.png/)
t.match(res.payload, /theme\/theme\.css/)
t.equal(res.headers['content-type'], 'text/html; charset=utf-8')
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/theme/special.js'
})
t.equal(res.payload, 'alert("loaded test-theme")')
}
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/theme/favicon.png'
})
t.equal(res.statusCode, 200)
t.equal(res.headers['content-type'], 'image/png')
}
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/theme/theme.css'
})
t.equal(res.payload, '* {border: 1px red solid;}')
}
})
test('swagger route returns additional theme - only js', async (t) => {
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml'
}
}
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi, {
theme: {
js: [
{ filename: 'special.js', content: 'alert("loaded test-theme")' }
]
}
})
const res = await fastify.inject({
method: 'GET',
url: '/documentation'
})
t.equal(typeof res.payload, 'string')
t.match(res.payload, /theme\/special\.js/)
t.equal(res.headers['content-type'], 'text/html; charset=utf-8')
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/theme/special.js'
})
t.equal(res.payload, 'alert("loaded test-theme")')
}
})
test('swagger route returns additional theme - only css', async (t) => {
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml'
}
}
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi, {
theme: {
css: [
{ filename: 'theme.css', content: '* {border: 1px red solid;}' }
]
}
})
const res = await fastify.inject({
method: 'GET',
url: '/documentation'
})
t.equal(typeof res.payload, 'string')
t.match(res.payload, /theme\/theme\.css/)
t.equal(res.headers['content-type'], 'text/html; charset=utf-8')
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/theme/theme.css'
})
t.equal(res.payload, '* {border: 1px red solid;}')
}
})
test('swagger route returns additional theme - only favicon', async (t) => {
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml'
}
}
t.plan(5)
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi, {
theme: {
favicon: [
{
filename: 'favicon.png',
rel: 'icon',
sizes: '16x16',
type: 'image/png',
content: Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAQAAABjX+2PAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAACYktHRAD/h4/MvwAAAAd0SU1FB+cCEQ06N8A8CiUAAADnSURBVBjTrdE/K8QBAMbxz/0TLrnUWcTg7ySLewGEwWDRzSYpyULJbGG6wWBTlMEbkHsFNnVloAwXudIlnDru1O9nOCex3rM89TzL0/eh1Ypo//Zk5CdM6JP2IWFOxbmMKZVmPWzbrJSamG5FNXUFx42yV16oqCQUerNr2pghsSgS1sw4kxNVVvbu3rwjSwJ67Kgq2XMjtO/AnWsnVgwQNy6rQ8GkURWBpCebXnR5gA11j5b1OxT4EKq6dGurMWvQqqw2LPoUKDq1LqPzN4q0rCuvckbE/pOakHdhQfwvwKan8Nzad74AkR8/Ir6qAvAAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjMtMDItMTdUMTM6NTg6NTUrMDA6MDBjkr64AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIzLTAyLTE3VDEzOjU4OjU1KzAwOjAwEs8GBAAAACh0RVh0ZGF0ZTp0aW1lc3RhbXAAMjAyMy0wMi0xN1QxMzo1ODo1NSswMDowMEXaJ9sAAAAASUVORK5CYII=', 'base64')
}
]
}
})
const res = await fastify.inject({
method: 'GET',
url: '/documentation'
})
t.equal(typeof res.payload, 'string')
t.match(res.payload, /theme\/favicon\.png/)
t.equal(res.headers['content-type'], 'text/html; charset=utf-8')
{
const res = await fastify.inject({
method: 'GET',
url: '/documentation/static/theme/favicon.png'
})
t.equal(res.statusCode, 200)
t.equal(res.headers['content-type'], 'image/png')
}
})
test('swagger route returns additional theme - only title', async (t) => {
const config = {
mode: 'static',
specification: {
path: './examples/example-static-specification.yaml'
}
}
t.plan(3)
const fastify = Fastify()
await fastify.register(fastifySwagger, config)
await fastify.register(fastifySwaggerUi, {
theme: {
title: 'My custom title'
}
})
const res = await fastify.inject({
method: 'GET',
url: '/documentation'
})
t.equal(typeof res.payload, 'string')
t.match(res.payload, /<title>My custom title<\/title>/)
t.equal(res.headers['content-type'], 'text/html; charset=utf-8')
})

View File

@@ -0,0 +1,269 @@
'use strict'
const { test } = require('tap')
const Fastify = require('fastify')
const fastifySwagger = require('@fastify/swagger')
const fastifySwaggerUi = require('../index')
const yaml = require('yaml')
test('transformSpecification should modify the json', async (t) => {
t.plan(5)
const fastify = Fastify()
await fastify.register(fastifySwagger, {
swagger: {
info: {
title: 'Test swagger',
description: 'Testing the Fastify swagger API',
version: '0.1.0'
},
externalDocs: {
url: 'https://swagger.io',
description: 'Find more info here'
},
host: 'localhost',
schemes: ['http'],
consumes: ['application/json'],
produces: ['application/json'],
tags: [
{ name: 'user', description: 'User related end-points' },
{ name: 'code', description: 'Code related end-points' }
],
definitions: {
User: {
type: 'object',
required: ['id', 'email'],
properties: {
id: { type: 'string', format: 'uuid' },
firstName: { type: 'string' },
lastName: { type: 'string' },
email: { type: 'string', format: 'email' }
}
}
},
securityDefinitions: {
apiKey: {
type: 'apiKey',
name: 'apiKey',
in: 'header'
}
}
}
})
await fastify.register(fastifySwaggerUi, {
transformSpecification: function (swaggerObject, req, reply) {
t.not(swaggerObject, fastify.swagger())
t.ok(req)
t.ok(reply)
swaggerObject.swagger = '2.1'
return swaggerObject
}
})
await fastify.ready()
const res = await fastify.inject({
method: 'GET',
url: '/documentation/json'
})
t.notSame(fastify.swagger(), JSON.parse(res.body))
t.equal(JSON.parse(res.body).swagger, '2.1')
})
test('transformSpecificationClone false should not deepclone fastify.swagger() /1', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, {
swagger: {
info: {
title: 'Test swagger',
description: 'Testing the Fastify swagger API',
version: '0.1.0'
},
externalDocs: {
url: 'https://swagger.io',
description: 'Find more info here'
},
host: 'localhost',
schemes: ['http'],
consumes: ['application/json'],
produces: ['application/json'],
tags: [
{ name: 'user', description: 'User related end-points' },
{ name: 'code', description: 'Code related end-points' }
],
definitions: {
User: {
type: 'object',
required: ['id', 'email'],
properties: {
id: { type: 'string', format: 'uuid' },
firstName: { type: 'string' },
lastName: { type: 'string' },
email: { type: 'string', format: 'email' }
}
}
},
securityDefinitions: {
apiKey: {
type: 'apiKey',
name: 'apiKey',
in: 'header'
}
}
}
})
await fastify.register(fastifySwaggerUi, {
transformSpecificationClone: false,
transformSpecification: function (swaggerObject, req, reply) {
t.equal(swaggerObject, fastify.swagger())
t.ok(req)
t.ok(reply)
return swaggerObject
}
})
await fastify.ready()
const res = await fastify.inject({
method: 'GET',
url: '/documentation/json'
})
const swagger = fastify.swagger()
Object.getOwnPropertySymbols(swagger.definitions.User).forEach((symbol) => delete swagger.definitions.User[symbol])
t.strictSame(swagger, JSON.parse(res.body))
})
test('transformSpecification should modify the yaml', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, {
swagger: {
info: {
title: 'Test swagger',
description: 'Testing the Fastify swagger API',
version: '0.1.0'
},
externalDocs: {
url: 'https://swagger.io',
description: 'Find more info here'
},
host: 'localhost',
schemes: ['http'],
consumes: ['application/json'],
produces: ['application/json'],
tags: [
{ name: 'user', description: 'User related end-points' },
{ name: 'code', description: 'Code related end-points' }
],
definitions: {
User: {
type: 'object',
required: ['id', 'email'],
properties: {
id: { type: 'string', format: 'uuid' },
firstName: { type: 'string' },
lastName: { type: 'string' },
email: { type: 'string', format: 'email' }
}
}
},
securityDefinitions: {
apiKey: {
type: 'apiKey',
name: 'apiKey',
in: 'header'
}
}
}
})
await fastify.register(fastifySwaggerUi, {
transformSpecification: function (swaggerObject, req, reply) {
swaggerObject.swagger = '2.1'
t.ok(req)
t.ok(reply)
return swaggerObject
}
})
await fastify.ready()
const swaggerPre = fastify.swagger()
const res = await fastify.inject({
method: 'GET',
url: '/documentation/yaml'
})
t.same(fastify.swagger(), swaggerPre)
t.equal(yaml.parse(res.body).swagger, '2.1')
})
test('transformSpecificationClone false should not deepclone fastify.swagger() /2', async (t) => {
t.plan(4)
const fastify = Fastify()
await fastify.register(fastifySwagger, {
swagger: {
info: {
title: 'Test swagger',
description: 'Testing the Fastify swagger API',
version: '0.1.0'
},
externalDocs: {
url: 'https://swagger.io',
description: 'Find more info here'
},
host: 'localhost',
schemes: ['http'],
consumes: ['application/json'],
produces: ['application/json'],
tags: [
{ name: 'user', description: 'User related end-points' },
{ name: 'code', description: 'Code related end-points' }
],
definitions: {
User: {
type: 'object',
required: ['id', 'email'],
properties: {
id: { type: 'string', format: 'uuid' },
firstName: { type: 'string' },
lastName: { type: 'string' },
email: { type: 'string', format: 'email' }
}
}
},
securityDefinitions: {
apiKey: {
type: 'apiKey',
name: 'apiKey',
in: 'header'
}
}
}
})
await fastify.register(fastifySwaggerUi, {
transformSpecificationClone: false,
transformSpecification: function (swaggerObject, req, reply) {
t.equal(swaggerObject, fastify.swagger())
t.ok(req)
t.ok(reply)
return swaggerObject
}
})
await fastify.ready()
const swaggerPre = fastify.swagger()
await fastify.inject({
method: 'GET',
url: '/documentation/yaml'
})
t.same(fastify.swagger(), swaggerPre)
})

View File

View File

@@ -0,0 +1,36 @@
import fastify from 'fastify';
import fastifySwagger from '@fastify/swagger';
import fastifySwaggerUi from '..';
const app = fastify({
http2: true
});
app.register(fastifySwagger);
app.register(fastifySwaggerUi);
app.register(fastifySwaggerUi, {});
app.register(fastifySwaggerUi, {
routePrefix: '/documentation',
});
app.put('/some-route/:id', {
schema: {
description: 'put me some data',
tags: ['user', 'code'],
summary: 'qwerty',
security: [{ apiKey: []}]
}
}, (req, reply) => {});
app.get('/public/route', {
schema: {
description: 'returns 200 OK',
summary: 'qwerty',
security: []
}
}, (_req, _reply) => {});
app
.register(fastifySwaggerUi, {
routePrefix: '/documentation',
})

View File

@@ -0,0 +1,14 @@
import fastify from "fastify";
import swaggerDefault, { fastifySwaggerUi, FastifySwaggerUiOptions } from "..";
import * as fastifySwaggerStar from "..";
const app = fastify();
const fastifySwaggerOptions: FastifySwaggerUiOptions = {
routePrefix: "/documentation",
};
app.register(swaggerDefault, fastifySwaggerOptions);
app.register(fastifySwaggerUi, fastifySwaggerOptions);
app.register(fastifySwaggerStar.default, fastifySwaggerOptions);
app.register(fastifySwaggerStar.fastifySwaggerUi, fastifySwaggerOptions);

View File

@@ -0,0 +1,490 @@
/// <reference lib="dom" />
import { FastifyPluginCallback, FastifyReply, FastifyRequest, onRequestHookHandler, preHandlerHookHandler } from 'fastify';
/**
* Swagger-UI Vendor Extensions
* @see https://support.smartbear.com/swaggerhub/docs/apis/vendor-extensions.html#api-docs-x-tokenname
*/
declare module 'openapi-types' {
namespace OpenAPIV3 {
interface OAuth2SecurityScheme {
'x-tokenName'?: string;
}
}
namespace OpenAPIV2 {
interface SecuritySchemeOauth2Base {
'x-tokenName'?: string;
}
}
}
declare module 'fastify' {
interface FastifyInstance {
swaggerCSP: {
script: string[];
style: string[];
}
}
}
type FastifySwaggerUi = FastifyPluginCallback<fastifySwaggerUi.FastifySwaggerUiOptions>;
declare namespace fastifySwaggerUi {
export interface FastifySwaggerUiOptions {
baseDir?: string;
/**
* Overwrite the swagger url end-point
* @default /documentation
*/
routePrefix?: string;
/**
* Swagger UI Config
*/
uiConfig?: FastifySwaggerUiConfigOptions
initOAuth?: FastifySwaggerInitOAuthOptions
/**
* CSP Config
*/
staticCSP?: boolean | string | Record<string, string | string[]>
transformStaticCSP?: (header: string) => string
/**
* route hooks
*/
uiHooks?: FastifySwaggerUiHooksOptions
theme?: FastifySwaggerUiTheme
logo?: FastifySwaggerUILogo
transformSpecification?: (swaggerObject: Readonly<Record<string, any>>, request: FastifyRequest, reply: FastifyReply) => Record<string, any>
transformSpecificationClone?: boolean
/**
* Use this parameter to set a validator URL
*
* @default false
*/
validatorUrl?: string | false
}
type FastifySwaggerUiTheme = {
title?: string;
css?: { filename: string; content: string; }[];
js?: { filename: string; content: string; }[];
favicon?: { filename: string; rel: string; type: string; sizes: string; content: string | Buffer; }[];
}
type FastifySwaggerUILogo = {
type: string;
content: string | Buffer;
}
type SupportedHTTPMethods = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace";
interface PluginsOptions {
/**
* Control behavior of plugins when targeting the same component with wrapComponent.<br/>
* - `legacy` (default) : last plugin takes precedence over the others<br/>
* - `chain` : chain wrapComponents when targeting the same core component,
* allowing multiple plugins to wrap the same component
* @default 'legacy'
*/
pluginLoadType?: PluginLoadType;
}
type PluginLoadType = 'legacy' | 'chain';
type SorterLike =
| "alpha"
| "method"
| {
(name1: string, name2: string): number;
};
interface Request {
[prop: string]: any;
}
interface Response {
[prop: string]: any;
}
/**
* See https://swagger.io/docs/open-source-tools/swagger-ui/customization/plugin-api/
*/
interface SwaggerUIPlugin {
(system: any): {
statePlugins?: {
[stateKey: string]: {
actions?: Indexable | undefined;
reducers?: Indexable | undefined;
selectors?: Indexable | undefined;
wrapActions?: Indexable | undefined;
wrapSelectors?: Indexable | undefined;
};
} | undefined;
components?: Indexable | undefined;
wrapComponents?: Indexable | undefined;
rootInjects?: Indexable | undefined;
afterLoad?: ((system: any) => any) | undefined;
fn?: Indexable | undefined;
};
}
interface Indexable {
[index: string]: any;
}
export type FastifySwaggerUiConfigOptions = {
// Core
/**
* URL to fetch external configuration document from.
*/
configUrl?: string | undefined;
/**
* REQUIRED if domNode is not provided. The ID of a DOM element inside which SwaggerUI will put its user interface.
*/
dom_id?: string | undefined;
/**
* REQUIRED if dom_id is not provided. The HTML DOM element inside which SwaggerUI will put its user interface. Overrides dom_id.
*/
domNode?: HTMLElement | null | undefined;
/**
* A JavaScript object describing the OpenAPI definition. When used, the url parameter will not be parsed. This is useful for testing manually-generated definitions without hosting them
*/
spec?: { [propName: string]: any } | undefined;
/**
* The URL pointing to API definition (normally swagger.json or swagger.yaml). Will be ignored if urls or spec is used.
*/
url?: string | undefined;
/**
* An array of API definition objects ([{url: "<url1>", name: "<name1>"},{url: "<url2>", name: "<name2>"}])
* used by Topbar plugin. When used and Topbar plugin is enabled, the url parameter will not be parsed.
* Names and URLs must be unique among all items in this array, since they're used as identifiers.
*/
urls?: Array<{
url: string;
name: string;
}> | undefined;
// Plugin system
/**
* The name of a component available via the plugin system to use as the top-level layout
* for Swagger UI.
*/
layout?: string | undefined;
/**
* A Javascript object to configure plugin integration and behaviors
*/
pluginsOptions?: PluginsOptions;
/**
* An array of plugin functions to use in Swagger UI.
*/
plugins?: SwaggerUIPlugin[] | undefined;
/**
* An array of presets to use in Swagger UI.
* Usually, you'll want to include ApisPreset if you use this option.
*/
presets?: SwaggerUIPlugin[] | undefined;
// Display
/**
* If set to true, enables deep linking for tags and operations.
* See the Deep Linking documentation for more information.
*/
deepLinking?: boolean | undefined;
/**
* Controls the display of operationId in operations list. The default is false.
*/
displayOperationId?: boolean | undefined;
/**
* The default expansion depth for models (set to -1 completely hide the models).
*/
defaultModelsExpandDepth?: number | undefined;
/**
* The default expansion depth for the model on the model-example section.
*/
defaultModelExpandDepth?: number | undefined;
/**
* Controls how the model is shown when the API is first rendered.
* (The user can always switch the rendering for a given model by clicking the
* 'Model' and 'Example Value' links.)
*/
defaultModelRendering?: "example" | "model" | undefined;
/**
* Controls the display of the request duration (in milliseconds) for "Try it out" requests.
*/
displayRequestDuration?: boolean | undefined;
/**
* Controls the default expansion setting for the operations and tags.
* It can be 'list' (expands only the tags), 'full' (expands the tags and operations)
* or 'none' (expands nothing).
*/
docExpansion?: "list" | "full" | "none" | undefined;
/**
* If set, enables filtering.
* The top bar will show an edit box that you can use to filter the tagged operations that are shown.
* Can be Boolean to enable or disable, or a string, in which case filtering will be enabled
* using that string as the filter expression.
* Filtering is case sensitive matching the filter expression anywhere inside the tag.
*/
filter?: boolean | string | undefined;
/**
* If set, limits the number of tagged operations displayed to at most this many.
* The default is to show all operations.
*/
maxDisplayedTags?: number | undefined;
/**
* Apply a sort to the operation list of each API.
* It can be 'alpha' (sort by paths alphanumerically),
* 'method' (sort by HTTP method) or a function (see Array.prototype.sort() to know how sort function works).
* Default is the order returned by the server unchanged.
*/
operationsSorter?: SorterLike | undefined;
/**
* Controls the display of vendor extension (x-) fields and values for Operations,
* Parameters, Responses, and Schema.
*/
showExtensions?: boolean | undefined;
/**
* Controls the display of extensions (pattern, maxLength, minLength, maximum, minimum) fields
* and values for Parameters.
*/
showCommonExtensions?: boolean | undefined;
/**
* Apply a sort to the tag list of each API.
* It can be 'alpha' (sort by paths alphanumerically)
* or a function (see Array.prototype.sort() to learn how to write a sort function).
* Two tag name strings are passed to the sorter for each pass.
* Default is the order determined by Swagger UI.
*/
tagsSorter?: SorterLike | undefined;
/**
* When enabled, sanitizer will leave style, class and data-* attributes untouched
* on all HTML Elements declared inside markdown strings.
* This parameter is Deprecated and will be removed in 4.0.0.
* @deprecated
*/
useUnsafeMarkdown?: boolean | undefined;
/**
* Provides a mechanism to be notified when Swagger UI has finished rendering a newly provided definition.
*/
onComplete?: (() => any) | undefined;
/**
* Set to false to deactivate syntax highlighting of payloads and cURL command,
* can be otherwise an object with the activate and theme properties.
*/
syntaxHighlight?:
| false
| {
/**
* Whether syntax highlighting should be activated or not.
*/
activate?: boolean | undefined;
/**
* Highlight.js syntax coloring theme to use. (Only these 6 styles are available.)
*/
theme?: "agate" | "arta" | "monokai" | "nord" | "obsidian" | "tomorrow-night" | undefined;
} | undefined;
/**
* Controls whether the "Try it out" section should be enabled by default.
*/
tryItOutEnabled?: boolean | undefined;
/**
* This is the default configuration section for the the requestSnippets plugin.
*/
requestSnippets?: {
generators?: {
[genName: string]: {
title: string;
syntax: string;
};
} | undefined;
defaultExpanded?: boolean | undefined;
/**
* e.g. only show curl bash = ["curl_bash"]
*/
languagesMask?: string[] | undefined;
} | undefined;
// Network
/**
* OAuth redirect URL.
*/
oauth2RedirectUrl?: string | undefined;
/**
* MUST be a function. Function to intercept remote definition,
* "Try it out", and OAuth 2.0 requests.
* Accepts one argument requestInterceptor(request) and must return the modified request,
* or a Promise that resolves to the modified request.
*/
requestInterceptor?: ((a: Request) => Request | Promise<Request>) | undefined;
/**
* MUST be a function. Function to intercept remote definition,
* "Try it out", and OAuth 2.0 responses.
* Accepts one argument responseInterceptor(response) and must return the modified response,
* or a Promise that resolves to the modified response.
*/
responseInterceptor?: ((a: Response) => Response | Promise<Response>) | undefined;
/**
* If set to true, uses the mutated request returned from a requestInterceptor
* to produce the curl command in the UI, otherwise the request
* beforethe requestInterceptor was applied is used.
*/
showMutatedRequest?: boolean | undefined;
/**
* List of HTTP methods that have the "Try it out" feature enabled.
* An empty array disables "Try it out" for all operations.
* This does not filter the operations from the display.
*/
supportedSubmitMethods?: SupportedHTTPMethods[] | undefined;
/**
* By default, Swagger UI attempts to validate specs against swagger.io's online validator.
* You can use this parameter to set a different validator URL,
* for example for locally deployed validators (Validator Badge).
* Setting it to either none, 127.0.0.1 or localhost will disable validation.
*/
validatorUrl?: string | undefined | null;
/**
* If set to true, enables passing credentials, as defined in the Fetch standard,
* in CORS requests that are sent by the browser.
* Note that Swagger UI cannot currently set cookies cross-domain (see swagger-js#1163)
* - as a result, you will have to rely on browser-supplied
* cookies (which this setting enables sending) that Swagger UI cannot control.
*/
withCredentials?: boolean | undefined;
// Macros
/**
* Function to set default values to each property in model.
* Accepts one argument modelPropertyMacro(property), property is immutable
*/
modelPropertyMacro?: ((propName: Readonly<any>) => any) | undefined;
/**
* Function to set default value to parameters.
* Accepts two arguments parameterMacro(operation, parameter).
* Operation and parameter are objects passed for context, both remain immutable
*/
parameterMacro?: ((operation: Readonly<any>, parameter: Readonly<any>) => any) | undefined;
// Authorization
/**
* If set to true, it persists authorization data and it would not be lost on browser close/refresh
*/
persistAuthorization?: boolean | undefined;
}
export type FastifySwaggerInitOAuthOptions = {
/**
* Default clientId.
*/
clientId?: string;
/**
* Never use this parameter in your production environment.
* It exposes crucial security information. This feature is intended for
* dev/test environments only.
* Default clientSecret.
*/
clientSecret?: string,
/**
* realm query parameter (for oauth1) added to authorizationUrl and tokenUrl.
*/
realm?: string;
/**
* application name, displayed in authorization popup.
*/
appName?: string;
/**
* scope separator for passing scopes, encoded before calling, default
* value is a space (encoded value %20).
*
* @default ' '
*/
scopeSeparator?: string;
/**
* string array or scope separator (i.e. space) separated string of
* initially selected oauth scopes
*
* @default []
*/
scopes?: string | string[];
/**
* Additional query parameters added to authorizationUrl and tokenUrl.
* MUST be an object
*/
additionalQueryStringParams?: { [key: string]: any };
/**
* Only activated for the accessCode flow. During the authorization_code
* request to the tokenUrl, pass the Client Password using the HTTP Basic
* Authentication scheme (Authorization header with Basic
* base64encode(client_id + client_secret)).
*
* @default false
*/
useBasicAuthenticationWithAccessCodeGrant?: boolean;
/**
* Only applies to Authorization Code flows. Proof Key for Code Exchange
* brings enhanced security for OAuth public clients.
*
* @default false
*/
usePkceWithAuthorizationCodeGrant?: boolean
}
export type FastifySwaggerUiHooksOptions = Partial<{
onRequest?: onRequestHookHandler,
preHandler?: preHandlerHookHandler,
}>
export const fastifySwaggerUi: FastifySwaggerUi
export { fastifySwaggerUi as default }
}
declare function fastifySwaggerUi(...params: Parameters<FastifySwaggerUi>): ReturnType<FastifySwaggerUi>
export = fastifySwaggerUi;

View File

@@ -0,0 +1,112 @@
import { OpenAPIV2, OpenAPIV3 } from 'openapi-types'
const xTokenNameOpenAPIv3: OpenAPIV3.Document = {
openapi: '3.0.0',
info: {
'version': '1.0.0',
'title': 'Test OpenApiv3 specification',
},
components: {
securitySchemes: {
myAuth: {
type: 'oauth2',
'x-tokenName': 'id_token',
flows: {
implicit: {
authorizationUrl: `http.../login/oauth/authorize`,
scopes: {},
},
},
},
}
},
paths: {}
}
const xTokenNameOpenAPIv2: OpenAPIV2.Document = {
swagger: '2.0.0',
info: {
title: 'Test OpenApiv2 specification',
version: '2.0.0'
},
securityDefinitions: {
OAuth2AccessCodeFlow: {
type: "oauth2",
flow: "accessCode",
authorizationUrl: "https://example.com/oauth/authorize",
tokenUrl: "https://example.com/oauth/token",
"x-tokenName": 'id_token',
scopes: { }
},
OAuth2ApplicationFlow: {
type: "oauth2",
flow: "application",
tokenUrl: "https://example.com/oauth/token",
"x-tokenName": 'id_token',
scopes: { }
},
OAuth2ImplicitFlow: {
type: "oauth2",
flow: "implicit",
authorizationUrl: "https://example.com/oauth/authorize",
"x-tokenName": 'id_token',
scopes: { }
},
OAuth2PasswordFlow: {
type: "oauth2",
flow: "password",
tokenUrl: "https://example.com/oauth/token",
"x-tokenName": 'id_token',
scopes: { }
},
},
paths: {}
}
const xExampleOpenAPIv2: OpenAPIV2.Document = {
swagger: '2.0.0',
info: {
title: 'Test OpenApiv2 specification',
version: '2.0.0'
},
paths: {
"/users/{userId}": {
'get': {
summary: "Gets a user by ID.",
responses: {
},
parameters: [
{
in: "path",
name: "userId",
type: "integer",
required: true,
description: "Numeric ID of the user to get.",
'x-example': 'BADC0FFEE'
},
{
in: "query",
name: "offset",
type: "integer",
description: "The number of items to skip before starting to collect the result set.",
'x-example': 1337
},
{
in: "header",
name: "X-Request-ID",
type: "string",
required: true,
'x-example': 'wget'
},
{
in: "formData",
name: "name",
type: "string",
description: "A person's name.",
'x-example': 'John Doe'
}
]
}
}
}
}

View File

@@ -0,0 +1,180 @@
import fastify, { FastifyReply, FastifyRequest } from 'fastify';
import { expectType } from 'tsd';
import fastifySwaggerUi, {
FastifySwaggerUiOptions,
FastifySwaggerInitOAuthOptions,
FastifySwaggerUiConfigOptions,
FastifySwaggerUiHooksOptions,
} from ".."
const app = fastify();
const uiConfig: FastifySwaggerUiConfigOptions = {
deepLinking: true,
defaultModelsExpandDepth: -1,
defaultModelExpandDepth: 1,
validatorUrl: null,
layout: 'BaseLayout',
supportedSubmitMethods: ['get'],
persistAuthorization: false,
};
const initOAuth: FastifySwaggerInitOAuthOptions = {
scopes: ['openid', 'profile', 'email', 'offline_access'],
};
const uiHooks: FastifySwaggerUiHooksOptions = {
onRequest: (request, reply, done) => {done()},
preHandler: (request, reply, done) => {done()},
}
app.register(fastifySwaggerUi);
app.register(fastifySwaggerUi, {});
app.register(fastifySwaggerUi, {
routePrefix: '/documentation',
});
const fastifySwaggerOptions: FastifySwaggerUiOptions = {
routePrefix: '/documentation',
}
app.register(fastifySwaggerUi, fastifySwaggerOptions);
app.get('/deprecated', {
schema: {
deprecated: true,
hide: true
}
}, (req, reply) => {});
app.put('/some-route/:id', {
schema: {
description: 'put me some data',
tags: ['user', 'code'],
summary: 'qwerty',
consumes: ['application/json', 'multipart/form-data'],
security: [{ apiKey: []}],
operationId: 'opeId',
externalDocs: {
url: 'https://swagger.io',
description: 'Find more info here'
},
}
}, (req, reply) => {});
app.put('/image.png', {
schema: {
description: 'returns an image',
summary: 'qwerty',
consumes: ['application/json', 'multipart/form-data'],
produces: ['image/png'],
response: {
200: {
type: 'string',
format: 'binary'
}
}
}
}, async (req, reply) => { reply
.type('image/png')
.send(Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAAgSURBVBhXY/iPCkB8BgYkEiSIBICiCCEoB0SBwf///wGHRzXLSklJLQAAAABJRU5ErkJggg==', 'base64'));
});
app.get('/public/route', {
schema: {
description: 'returns 200 OK',
summary: 'qwerty',
security: [],
response: { 200: {} }
},
links: {
200: {'some-route': { operationId: 'opeId'}}
}
}, (req, reply) => {});
app
.register(fastifySwaggerUi, {
routePrefix: '/documentation',
})
app
.register(fastifySwaggerUi, {
initOAuth
})
.ready((err) => {
app.swagger();
});
app.register(fastifySwaggerUi, {
uiConfig
})
app.register(fastifySwaggerUi, {
staticCSP: true,
})
app.register(fastifySwaggerUi, {
staticCSP: "default-src: 'self'",
})
app.register(fastifySwaggerUi, {
staticCSP: {
'default-src': "'self'",
'script-src': ["'self'"]
},
})
app.register(fastifySwaggerUi, {
staticCSP: true,
transformStaticCSP(header) {
return header
}
})
app.register(fastifySwaggerUi, {
uiHooks,
})
app.register(fastifySwaggerUi, {
transformSpecificationClone: true,
transformSpecification: (swaggerObj, request, reply) => {
expectType<FastifyRequest>(request)
expectType<FastifyReply>(reply)
expectType<Readonly<Record<string, any>>>(swaggerObj)
return swaggerObj
}
})
app.register(fastifySwaggerUi, {
logo: {
type: 'image/png',
content: 'somethingsomething'
}
})
app.register(fastifySwaggerUi, {
theme: {}
})
app.register(fastifySwaggerUi, {
theme: {
favicon: [
{
filename: 'favicon-16x16.png',
rel: 'icon',
sizes: '16x16',
type: 'image/png',
content: Buffer.from('somethingsomething')
}
],
},
})
app.register(fastifySwaggerUi, {
theme: {
title: 'My Awesome Swagger Title'
},
})
app.register(fastifySwaggerUi, {
validatorUrl: false
})
app.register(fastifySwaggerUi, {
validatorUrl: 'https://validator.swagger.io/validator'
})