diff --git a/.github/dependabot.yml b/.github/dependabot.yml index b18fd293..a9412c36 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,6 +1,6 @@ version: 2 updates: - - package-ecosystem: 'github-actions' - directory: '/' - schedule: - interval: 'weekly' + - package-ecosystem: 'github-actions' + directory: '/' + schedule: + interval: 'weekly' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4c4da4cd..46ad960e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,25 +1,25 @@ name: Test on: - push: - branches: [master] - pull_request: - branches: [master] + push: + branches: [master] + pull_request: + branches: [master] permissions: - contents: read + contents: read jobs: - test: - runs-on: ubuntu-latest + test: + runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v6 - - name: Use Node.js - uses: actions/setup-node@v6 - with: - node-version: 22 - cache: 'pnpm' - - run: pnpm install --frozen-lockfile - - run: pnpm test + steps: + - uses: actions/checkout@v6 + - uses: pnpm/action-setup@v6 + - name: Use Node.js + uses: actions/setup-node@v6 + with: + node-version: 22 + cache: 'pnpm' + - run: pnpm install --frozen-lockfile + - run: pnpm test diff --git a/.oxfmtrc.json b/.oxfmtrc.json deleted file mode 100644 index b945198b..00000000 --- a/.oxfmtrc.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "./node_modules/oxfmt/configuration_schema.json", - "singleQuote": true, - "printWidth": 120, - "sortPackageJson": false, - "sortImports": { - "groups": [ - "builtin", - "external", - ["internal", "parent", "sibling", "index"], - "type-builtin", - "type-external", - ["type-internal", "type-parent", "type-sibling", "type-index"] - ] - }, - "ignorePatterns": [], - "overrides": [ - { - "files": ["generated/**"], - "options": { - "printWidth": 80 - } - } - ] -} diff --git a/.oxlintrc.json b/.oxlintrc.json deleted file mode 100644 index 698338e8..00000000 --- a/.oxlintrc.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "$schema": "./node_modules/oxlint/configuration_schema.json", - "plugins": ["typescript", "unicorn", "vue"], - "env": { - "node": true, - "browser": true - }, - "categories": { - "correctness": "error", - "perf": "error", - "suspicious": "error", - "pedantic": "warn", - "style": "warn", - "nursery": "warn" - }, - "globals": { - "defineProps": "readonly", - "defineModel": "readonly" - }, - "rules": { - "id-length": "off", - "init-declarations": "off", - "max-depth": "off", - "max-lines-per-function": "off", - "max-params": "off", - "max-statements": "off", - "no-await-in-loop": "off", - "no-duplicate-imports": ["error", { "allowSeparateTypeImports": true }], - "no-magic-numbers": "off", - "no-ternary": "off", - "prefer-global-this": "off", - "sort-imports": "off", - "typescript/consistent-type-imports": ["error", { "prefer": "type-imports", "fixStyle": "separate-type-imports" }], - "unicorn/filename-case": "off", - "unicorn/no-null": "off", - "unicorn/prefer-node-protocol": "error" - } -} diff --git a/.vitepress/config.ts b/.vitepress/config.ts index 04439154..ba128731 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -1,206 +1,209 @@ import { defineConfig } from 'vitepress'; import { groupIconMdPlugin, groupIconVitePlugin } from 'vitepress-plugin-group-icons'; -import modulesData from '../generated/metadata/modules.json' with { type: 'json' }; -import hapiInfo from '../generated/modules/hapi/info.json' with { type: 'json' }; -import pluginsData from '../src/plugins.json' with { type: 'json' }; import { formatVersion } from './utils.js'; +import ModulesData from '../generated/metadata/modules.json' with { type: 'json' }; +import HapiInfo from '../generated/modules/hapi/info.json' with { type: 'json' }; +import PluginsData from '../src/plugins.json' with { type: 'json' }; -const modulesItems = Object.keys(modulesData) - .filter((name) => name !== 'hapi') - .map((name) => ({ - link: `/module/${name}/api/${modulesData[name as keyof typeof modulesData].latestVersion}`, - text: name, - })); +const modulesItems = Object.keys(ModulesData) + .filter((name) => name !== 'hapi') + .map((name) => ({ + link: `/module/${name}/api/${ModulesData[name as keyof typeof ModulesData].latestVersion}`, + text: name, + })); const getModuleSidebar = (moduleName: string) => { - const moduleData = modulesData[moduleName as keyof typeof modulesData]; + const moduleData = ModulesData[moduleName as keyof typeof ModulesData]; - const items: { link: string; text: string; items?: { link: string; text: string }[] }[] = [ - { - items: [...moduleData.versions].toReversed().map((version) => ({ - link: `/module/${moduleName}/api/${formatVersion(version.name)}`, - text: formatVersion(version.name), - })), - link: `/module/${moduleName}/api/${moduleData.latestVersion}`, - text: 'API', - }, - { link: `/module/${moduleName}/changelog`, text: 'Changelog' }, - ]; + const items: { link: string; text: string; items?: { link: string; text: string }[] }[] = [ + { + items: [...moduleData.versions].toReversed().map((version) => ({ + link: `/module/${moduleName}/api/${formatVersion(version.name)}`, + text: formatVersion(version.name), + })), + link: `/module/${moduleName}/api/${moduleData.latestVersion}`, + text: 'API', + }, + { link: `/module/${moduleName}/changelog`, text: 'Changelog' }, + ]; - if (moduleName === 'bell') { - items.push({ link: '/module/bell/examples', text: 'Examples' }); - items.push({ link: '/module/bell/providers', text: 'Providers' }); - } + if (moduleName === 'bell') { + items.push({ link: '/module/bell/examples', text: 'Examples' }); + items.push({ link: '/module/bell/providers', text: 'Providers' }); + } - return [ - { - items, - text: moduleName, - }, - { - collapsed: true, - items: [{ link: '/module/', text: 'All Modules' }, ...modulesItems], - text: 'Other Modules', - }, - ]; + return [ + { + items, + text: moduleName, + }, + { + collapsed: true, + items: [{ link: '/module/', text: 'All Modules' }, ...modulesItems], + text: 'Other Modules', + }, + ]; }; const moduleSidebars = Object.fromEntries( - Object.keys(modulesData) - .filter((name) => name !== 'hapi') - .map((name) => [`/module/${name}/`, getModuleSidebar(name)]), + Object.keys(ModulesData) + .filter((name) => name !== 'hapi') + .map((name) => [`/module/${name}/`, getModuleSidebar(name)]), ); const tutorialItems = [ - { slug: 'getting-started', text: 'Getting Started' }, - { slug: 'auth', text: 'Authentication' }, - { slug: 'caching', text: 'Caching' }, - { slug: 'cookies', text: 'Cookies' }, - { slug: 'logging', text: 'Logging' }, - { slug: 'plugins', text: 'Plugins' }, - { slug: 'routing', text: 'Routing' }, - { slug: 'server-methods', text: 'Server Methods' }, - { slug: 'serving-files', text: 'Serving Files' }, - { slug: 'testing', text: 'Testing' }, - { slug: 'validation', text: 'Validation' }, - { slug: 'views', text: 'Views' }, - { slug: 'community', text: 'Community' }, - { slug: 'express-to-hapi', text: 'Express to hapi' }, + { slug: 'getting-started', text: 'Getting Started' }, + { slug: 'auth', text: 'Authentication' }, + { slug: 'caching', text: 'Caching' }, + { slug: 'cookies', text: 'Cookies' }, + { slug: 'logging', text: 'Logging' }, + { slug: 'plugins', text: 'Plugins' }, + { slug: 'routing', text: 'Routing' }, + { slug: 'server-methods', text: 'Server Methods' }, + { slug: 'serving-files', text: 'Serving Files' }, + { slug: 'testing', text: 'Testing' }, + { slug: 'validation', text: 'Validation' }, + { slug: 'views', text: 'Views' }, + { slug: 'community', text: 'Community' }, + { slug: 'express-to-hapi', text: 'Express to hapi' }, ]; const getTutorialSidebar = (locale: string) => [ - { - items: tutorialItems.map((t) => ({ - link: `/tutorials/${locale}/${t.slug}`, - text: t.text, - })), - text: 'Tutorials', - }, + { + items: tutorialItems.map((t) => ({ + link: `/tutorials/${locale}/${t.slug}`, + text: t.text, + })), + text: 'Tutorials', + }, ]; export default defineConfig({ - appearance: true, - cleanUrls: true, - description: 'The Simple, Secure Framework Developers Trust', - head: [['link', { href: '/favicon.png', rel: 'icon', type: 'image/png' }]], - ignoreDeadLinks: true, - markdown: { - config(md) { - md.use(groupIconMdPlugin); - }, - lineNumbers: true, - theme: { - dark: 'vitesse-dark', - light: 'vitesse-light', - }, - }, - outDir: 'dist', - srcDir: 'docs', - themeConfig: { - docFooter: { - next: false, - prev: false, - }, - footer: { - copyright: 'Copyright © 2012-present hapi.js team', - message: - 'Deploys by Netlify', - }, - logo: '/img/hapi.svg', - nav: [ - { link: '/', text: 'Home' }, - { activeMatch: '^/api/', link: `/api/${formatVersion(hapiInfo.versions.at(-1)!.name)}`, text: 'API' }, - { activeMatch: '^/tutorials/', link: '/tutorials/en_US/getting-started', text: 'Tutorials' }, - { activeMatch: '^/plugins', link: '/plugins', text: 'Plugins' }, - { - activeMatch: '^/resources/', - link: '/resources/changelog', - text: 'Resources', - }, - { activeMatch: '^/module/', link: '/module/', text: 'Modules' }, - { activeMatch: '^/policies/', link: '/policies/coc', text: 'Policies' }, - { link: '/support', text: 'Support' }, - { link: 'https://hapi.threadless.com', target: '_blank', text: 'Shop' }, - ], - outline: { - label: 'On this page', - level: 'deep', - }, - sidebar: { - '/api/': [ - { - items: [ - { - items: [...hapiInfo.versions].toReversed().map((version) => ({ - link: `/api/${formatVersion(version.name)}`, - text: formatVersion(version.name), - })), - link: `/api/${formatVersion(hapiInfo.versions.at(-1)!.name)}`, - text: 'API', - }, - ], - text: '@hapi/hapi', + appearance: true, + cleanUrls: true, + description: 'The Simple, Secure Framework Developers Trust', + head: [['link', { href: '/favicon.png', rel: 'icon', type: 'image/png' }]], + ignoreDeadLinks: true, + markdown: { + config(md) { + md.use(groupIconMdPlugin); }, - ], - '/module/': [ - { - items: [{ link: '/module/', text: 'All Modules' }, ...modulesItems], - text: 'Modules', + lineNumbers: true, + theme: { + dark: 'vitesse-dark', + light: 'vitesse-light', }, - ], - '/plugins': [ - { - items: pluginsData.map((category) => ({ - link: `/plugins#${category.anchor}`, - text: category.name, - })), - text: 'Plugins', + }, + outDir: 'dist', + srcDir: 'docs', + themeConfig: { + docFooter: { + next: false, + prev: false, }, - ], - '/policies/': [ - { - items: [ - { link: '/policies/coc', text: 'Code of Conduct' }, - { link: '/policies/contributing', text: 'Contributing' }, - { link: '/policies/license', text: 'License' }, - { link: '/policies/security', text: 'Security' }, - { link: '/policies/sponsors', text: 'Sponsors' }, - { link: '/policies/styleguide', text: 'Style Guide' }, - { link: '/policies/support', text: 'Support' }, - ], - text: 'Policies', + footer: { + copyright: 'Copyright © 2012-present hapi.js team', + message: + 'Deploys by Netlify', }, - ], - '/resources/': [ - { - items: [ - { link: '/resources/changelog', text: 'Changelog' }, - { link: '/resources/status', text: 'Module Status' }, - { link: '/resources/list#books', text: 'Books' }, - { link: '/resources/list#boilerplates', text: 'Boilerplates' }, - { link: '/resources/list#projects', text: 'Projects' }, - { link: '/resources/list#videos', text: 'Videos' }, - ], - text: 'Resources', + logo: '/img/hapi.svg', + nav: [ + { link: '/', text: 'Home' }, + { activeMatch: '^/api/', link: `/api/${formatVersion(HapiInfo.versions.at(-1)!.name)}`, text: 'API' }, + { activeMatch: '^/tutorials/', link: '/tutorials/en_US/getting-started', text: 'Tutorials' }, + { activeMatch: '^/plugins', link: '/plugins', text: 'Plugins' }, + { + activeMatch: '^/resources/', + link: '/resources/changelog', + text: 'Resources', + }, + { activeMatch: '^/module/', link: '/module/', text: 'Modules' }, + { activeMatch: '^/policies/', link: '/policies/coc', text: 'Policies' }, + { link: '/support', text: 'Support' }, + { link: 'https://hapi.threadless.com', target: '_blank', text: 'Shop' }, + ], + outline: { + label: 'On this page', + level: 'deep', }, - ], - '/tutorials/en_US/': getTutorialSidebar('en_US'), - '/tutorials/ko_KR/': getTutorialSidebar('ko_KR'), - '/tutorials/pt_BR/': getTutorialSidebar('pt_BR'), - '/tutorials/tr_TR/': getTutorialSidebar('tr_TR'), - '/tutorials/zh_CN/': getTutorialSidebar('zh_CN'), - ...moduleSidebars, + sidebar: { + '/api/': [ + { + items: [ + { + items: [...HapiInfo.versions].toReversed().map((version) => ({ + link: `/api/${formatVersion(version.name)}`, + text: formatVersion(version.name), + })), + link: `/api/${formatVersion(HapiInfo.versions.at(-1)!.name)}`, + text: 'API', + }, + ], + text: '@hapi/hapi', + }, + ], + '/module/': [ + { + items: [{ link: '/module/', text: 'All Modules' }, ...modulesItems], + text: 'Modules', + }, + ], + '/plugins': [ + { + items: PluginsData.map((category) => ({ + link: `/plugins#${category.anchor}`, + text: category.name, + })), + text: 'Plugins', + }, + ], + '/policies/': [ + { + items: [ + { link: '/policies/coc', text: 'Code of Conduct' }, + { link: '/policies/contributing', text: 'Contributing' }, + { link: '/policies/license', text: 'License' }, + { link: '/policies/security', text: 'Security' }, + { link: '/policies/sponsors', text: 'Sponsors' }, + { link: '/policies/styleguide', text: 'Style Guide' }, + { link: '/policies/support', text: 'Support' }, + ], + text: 'Policies', + }, + ], + '/resources/': [ + { + items: [ + { link: '/resources/changelog', text: 'Changelog' }, + { link: '/resources/status', text: 'Module Status' }, + { link: '/resources/list#books', text: 'Books' }, + { link: '/resources/list#boilerplates', text: 'Boilerplates' }, + { link: '/resources/list#projects', text: 'Projects' }, + { link: '/resources/list#videos', text: 'Videos' }, + ], + text: 'Resources', + }, + ], + '/tutorials/en_US/': getTutorialSidebar('en_US'), + '/tutorials/ko_KR/': getTutorialSidebar('ko_KR'), + '/tutorials/pt_BR/': getTutorialSidebar('pt_BR'), + '/tutorials/tr_TR/': getTutorialSidebar('tr_TR'), + '/tutorials/zh_CN/': getTutorialSidebar('zh_CN'), + ...moduleSidebars, + }, + socialLinks: [ + { icon: 'github', link: 'https://github.com/hapijs/hapi' }, + { + icon: 'slack', + link: 'https://join.slack.com/t/hapihour/shared_invite/zt-g5ortpsk-ErlnRA2rUcPIWES21oXBOg', + }, + { icon: 'discord', link: 'https://discord.gg/YYxZhpKKvu' }, + ], + }, + title: 'hapi.dev', + titleTemplate: 'hapi.dev - :title', + vite: { + plugins: [groupIconVitePlugin()], }, - socialLinks: [ - { icon: 'github', link: 'https://github.com/hapijs/hapi' }, - { icon: 'slack', link: 'https://join.slack.com/t/hapihour/shared_invite/zt-g5ortpsk-ErlnRA2rUcPIWES21oXBOg' }, - { icon: 'discord', link: 'https://discord.gg/YYxZhpKKvu' }, - ], - }, - title: 'hapi.dev', - titleTemplate: 'hapi.dev - :title', - vite: { - plugins: [groupIconVitePlugin()], - }, }); diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts index 55578287..7b3d9503 100644 --- a/.vitepress/theme/index.ts +++ b/.vitepress/theme/index.ts @@ -1,9 +1,11 @@ import DefaultTheme from 'vitepress/theme'; import { defineAsyncComponent, h } from 'vue'; +// oxfmt-ignore import './variables.css'; import './main.css'; import 'virtual:group-icons.css'; + import { getRedirectPath } from './redirect.js'; import type { Theme } from 'vitepress'; @@ -17,33 +19,33 @@ const StatusContent = defineAsyncComponent(() => import('../../components/Status const TutorialLang = defineAsyncComponent(() => import('../../components/TutorialLang.vue')); export default { - Layout() { - return h(DefaultTheme.Layout, null, { - 'sidebar-nav-after': () => h(CarbonAds), - }); - }, - enhanceApp({ app, router }) { - app.component('ApiOutline', ApiOutline); - app.component('HomeContent', HomeContent); - app.component('ModuleIndex', ModuleIndex); - app.component('PluginsDirectory', PluginsDirectory); - app.component('StatusContent', StatusContent); - app.component('TutorialLang', TutorialLang); + Layout() { + return h(DefaultTheme.Layout, null, { + 'sidebar-nav-after': () => h(CarbonAds), + }); + }, + enhanceApp({ app, router }) { + app.component('ApiOutline', ApiOutline); + app.component('HomeContent', HomeContent); + app.component('ModuleIndex', ModuleIndex); + app.component('PluginsDirectory', PluginsDirectory); + app.component('StatusContent', StatusContent); + app.component('TutorialLang', TutorialLang); - if (typeof window !== 'undefined') { - router.onBeforeRouteChange = (to) => { - const target = getRedirectPath(to); - if (target) { - router.go(target); - return false; - } - }; + if (typeof window !== 'undefined') { + router.onBeforeRouteChange = (to) => { + const target = getRedirectPath(to); + if (target) { + router.go(target); + return false; + } + }; - const initialTarget = getRedirectPath(window.location.pathname); - if (initialTarget) { - router.go(initialTarget); - } - } - }, - extends: DefaultTheme, + const initialTarget = getRedirectPath(window.location.pathname); + if (initialTarget) { + router.go(initialTarget); + } + } + }, + extends: DefaultTheme, } satisfies Theme; diff --git a/.vitepress/theme/main.css b/.vitepress/theme/main.css index eec770c6..d0502269 100644 --- a/.vitepress/theme/main.css +++ b/.vitepress/theme/main.css @@ -1,192 +1,192 @@ /* ---------- Fonts ---------- */ @font-face { - font-family: 'IBM Plex Sans'; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url('./fonts/IBMPlexSans-Regular.ttf') format('truetype'); + font-family: 'IBM Plex Sans'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url('./fonts/IBMPlexSans-Regular.ttf') format('truetype'); } @font-face { - font-family: 'IBM Plex Sans'; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url('./fonts/IBMPlexSans-Italic.ttf') format('truetype'); + font-family: 'IBM Plex Sans'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url('./fonts/IBMPlexSans-Italic.ttf') format('truetype'); } @font-face { - font-family: 'IBM Plex Sans'; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url('./fonts/IBMPlexSans-Medium.ttf') format('truetype'); + font-family: 'IBM Plex Sans'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url('./fonts/IBMPlexSans-Medium.ttf') format('truetype'); } @font-face { - font-family: 'IBM Plex Sans'; - font-style: italic; - font-weight: 500; - font-display: swap; - src: url('./fonts/IBMPlexSans-MediumItalic.ttf') format('truetype'); + font-family: 'IBM Plex Sans'; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url('./fonts/IBMPlexSans-MediumItalic.ttf') format('truetype'); } @font-face { - font-family: 'IBM Plex Sans'; - font-style: normal; - font-weight: 600; - font-display: swap; - src: url('./fonts/IBMPlexSans-SemiBold.ttf') format('truetype'); + font-family: 'IBM Plex Sans'; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url('./fonts/IBMPlexSans-SemiBold.ttf') format('truetype'); } @font-face { - font-family: 'IBM Plex Sans'; - font-style: italic; - font-weight: 600; - font-display: swap; - src: url('./fonts/IBMPlexSans-SemiBoldItalic.ttf') format('truetype'); + font-family: 'IBM Plex Sans'; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url('./fonts/IBMPlexSans-SemiBoldItalic.ttf') format('truetype'); } @font-face { - font-family: 'IBM Plex Sans'; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url('./fonts/IBMPlexSans-Bold.ttf') format('truetype'); + font-family: 'IBM Plex Sans'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url('./fonts/IBMPlexSans-Bold.ttf') format('truetype'); } @font-face { - font-family: 'IBM Plex Sans'; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url('./fonts/IBMPlexSans-BoldItalic.ttf') format('truetype'); + font-family: 'IBM Plex Sans'; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url('./fonts/IBMPlexSans-BoldItalic.ttf') format('truetype'); } @font-face { - font-family: 'IBM Plex Mono'; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url('./fonts/IBMPlexMono-Regular.ttf') format('truetype'); + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url('./fonts/IBMPlexMono-Regular.ttf') format('truetype'); } @font-face { - font-family: 'IBM Plex Mono'; - font-style: normal; - font-weight: 600; - font-display: swap; - src: url('./fonts/IBMPlexMono-SemiBold.ttf') format('truetype'); + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url('./fonts/IBMPlexMono-SemiBold.ttf') format('truetype'); } :root { - --vp-font-family-base: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; - --vp-font-family-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; + --vp-font-family-base: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + --vp-font-family-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; } /* ---------- Shared card ---------- */ .card { - position: relative; - border: 1px solid var(--vp-c-divider); - border-radius: 14px; - padding: 22px 20px; - background: var(--vp-c-bg-soft); - box-shadow: var(--shadow-card); - transition: - transform 0.2s ease, - border-color 0.2s ease, - box-shadow 0.2s ease; - overflow: hidden; + position: relative; + border: 1px solid var(--vp-c-divider); + border-radius: 14px; + padding: 22px 20px; + background: var(--vp-c-bg-soft); + box-shadow: var(--shadow-card); + transition: + transform 0.2s ease, + border-color 0.2s ease, + box-shadow 0.2s ease; + overflow: hidden; } .card::after { - content: ''; - position: absolute; - inset: 0; - background: radial-gradient(circle at 50% 50%, var(--vp-c-brand-soft), transparent 70%); - opacity: 0; - transition: opacity 0.3s ease; - pointer-events: none; + content: ''; + position: absolute; + inset: 0; + background: radial-gradient(circle at 50% 50%, var(--vp-c-brand-soft), transparent 70%); + opacity: 0; + transition: opacity 0.3s ease; + pointer-events: none; } .card:hover::after { - opacity: 1; + opacity: 1; } .card > * { - position: relative; - z-index: 1; + position: relative; + z-index: 1; } .card:hover { - transform: translateY(-2px); - border-color: var(--vp-c-brand-1); - box-shadow: var(--shadow-card-hover); + transform: translateY(-2px); + border-color: var(--vp-c-brand-1); + box-shadow: var(--shadow-card-hover); } /* ---------- Shared form controls ---------- */ .form-control { - padding: 12px 16px; - border: 1px solid var(--vp-c-divider); - border-radius: 10px; - background: var(--vp-c-bg-soft); - font-family: var(--vp-font-family-base); - font-size: 0.95em; - color: var(--vp-c-text-1); - transition: - border-color 0.15s ease, - box-shadow 0.15s ease; + padding: 12px 16px; + border: 1px solid var(--vp-c-divider); + border-radius: 10px; + background: var(--vp-c-bg-soft); + font-family: var(--vp-font-family-base); + font-size: 0.95em; + color: var(--vp-c-text-1); + transition: + border-color 0.15s ease, + box-shadow 0.15s ease; } .form-control:focus { - outline: none; - border-color: var(--vp-c-brand-1); - box-shadow: 0 0 0 3px var(--vp-c-brand-soft); + outline: none; + border-color: var(--vp-c-brand-1); + box-shadow: 0 0 0 3px var(--vp-c-brand-soft); } /* Selects: appearance:none + custom chevron fixes native popup mispositioning on Chromium when selects carry custom padding/font. */ select.form-control { - appearance: none; - -webkit-appearance: none; - padding-right: 40px; - background-image: url("data:image/svg+xml;utf8,"); - background-repeat: no-repeat; - background-position: right 14px center; - cursor: pointer; + appearance: none; + -webkit-appearance: none; + padding-right: 40px; + background-image: url("data:image/svg+xml;utf8,"); + background-repeat: no-repeat; + background-position: right 14px center; + cursor: pointer; } /* ---------- Shared buttons ---------- * Two styles used site-wide: .btn.btn-primary (gradient) and .btn.btn-ghost. */ .btn { - display: inline-block; - border-radius: 10px; - padding: 12px 24px; - font-size: 0.95em; - font-weight: 700; - text-decoration: none; - border: 2px solid transparent; - cursor: pointer; - transition: - transform 0.15s ease, - box-shadow 0.2s ease, - border-color 0.2s ease, - color 0.2s ease; + display: inline-block; + border-radius: 10px; + padding: 12px 24px; + font-size: 0.95em; + font-weight: 700; + text-decoration: none; + border: 2px solid transparent; + cursor: pointer; + transition: + transform 0.15s ease, + box-shadow 0.2s ease, + border-color 0.2s ease, + color 0.2s ease; } .btn-primary { - background: linear-gradient(135deg, var(--vp-c-brand-1), var(--vp-c-brand-2)); - color: #fff; - box-shadow: 0 8px 24px var(--vp-c-brand-soft); + background: linear-gradient(135deg, var(--vp-c-brand-1), var(--vp-c-brand-2)); + color: #fff; + box-shadow: 0 8px 24px var(--vp-c-brand-soft); } .btn-primary:hover { - transform: translateY(-2px); - box-shadow: 0 12px 28px var(--vp-c-brand-soft); - color: #fff; + transform: translateY(-2px); + box-shadow: 0 12px 28px var(--vp-c-brand-soft); + color: #fff; } .btn-ghost { - background: var(--vp-c-bg-soft); - border-color: var(--vp-c-divider); - color: var(--vp-c-text-1); + background: var(--vp-c-bg-soft); + border-color: var(--vp-c-divider); + color: var(--vp-c-text-1); } .btn-ghost:hover { - border-color: var(--vp-c-brand-1); - color: var(--vp-c-brand-1); + border-color: var(--vp-c-brand-1); + color: var(--vp-c-brand-1); } /* ---------- Doc typography ---------- @@ -197,65 +197,65 @@ select.form-control { * - h4-h6 uppercased */ :root { - --vp-code-color: var(--vp-c-text-1); - --vp-code-bg: var(--vp-c-bg-soft); - --vp-code-link-color: var(--vp-c-brand-1); + --vp-code-color: var(--vp-c-text-1); + --vp-code-bg: var(--vp-c-bg-soft); + --vp-code-link-color: var(--vp-c-brand-1); } .vp-doc p { - line-height: 1.75; - margin: 20px 0; + line-height: 1.75; + margin: 20px 0; } .vp-doc ul, .vp-doc ol { - margin: 20px 0; + margin: 20px 0; } .vp-doc li + li, .vp-doc li > ol, .vp-doc li > ul { - margin-top: 16px; + margin-top: 16px; } .vp-doc h2 { - margin-top: 64px; + margin-top: 64px; } .vp-doc h3 { - margin-top: 40px; + margin-top: 40px; } .vp-doc h4, .vp-doc h5, .vp-doc h6 { - margin-top: 32px; - text-transform: uppercase; - letter-spacing: 0.06em; + margin-top: 32px; + text-transform: uppercase; + letter-spacing: 0.06em; } .vp-doc h4 { - font-size: 15px; + font-size: 15px; } .vp-doc h5 { - font-size: 13px; + font-size: 13px; } .vp-doc h6 { - font-size: 12px; - color: var(--vp-c-text-2); + font-size: 12px; + color: var(--vp-c-text-2); } .vp-doc a { - text-decoration: none; + text-decoration: none; } .vp-doc a:hover { - text-decoration: underline; + text-decoration: underline; } .vp-doc :not(pre) > code { - border: 1px solid color-mix(in srgb, var(--vp-code-color) 7%, transparent); + border: 1px solid color-mix(in srgb, var(--vp-code-color) 7%, transparent); } .vp-doc a > code { - background: var(--vp-c-brand-soft); - border-color: color-mix(in srgb, var(--vp-code-link-color) 7%, transparent); + background: var(--vp-c-brand-soft); + border-color: color-mix(in srgb, var(--vp-code-link-color) 7%, transparent); } .vp-doc pre { - max-width: 100%; - overflow-x: auto; + max-width: 100%; + overflow-x: auto; } /* ---------- Doc tables ---------- @@ -263,161 +263,161 @@ select.form-control { * without per-component overrides. */ .vp-doc table { - display: table; - width: 100%; - max-width: 100%; - border-collapse: separate; - border-spacing: 0; - margin: 20px 0; - border: 1px solid var(--vp-c-divider); - border-radius: 12px; - overflow: hidden; - background: var(--vp-c-bg); + display: table; + width: 100%; + max-width: 100%; + border-collapse: separate; + border-spacing: 0; + margin: 20px 0; + border: 1px solid var(--vp-c-divider); + border-radius: 12px; + overflow: hidden; + background: var(--vp-c-bg); } .vp-doc thead { - background: var(--vp-c-bg-soft); + background: var(--vp-c-bg-soft); } .vp-doc th { - padding: 10px 14px; - text-align: left; - font-size: 0.72em; - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.08em; - color: var(--vp-c-text-2); - border: none; - border-bottom: 1px solid var(--vp-c-divider); - background: var(--vp-c-bg-soft); + padding: 10px 14px; + text-align: left; + font-size: 0.72em; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--vp-c-text-2); + border: none; + border-bottom: 1px solid var(--vp-c-divider); + background: var(--vp-c-bg-soft); } .vp-doc tr { - background: transparent; - border: none; + background: transparent; + border: none; } .vp-doc tr:nth-child(2n) { - background: transparent; + background: transparent; } .vp-doc td { - padding: 10px 14px; - border: none; - border-bottom: 1px solid var(--vp-c-divider); - font-size: 0.95em; + padding: 10px 14px; + border: none; + border-bottom: 1px solid var(--vp-c-divider); + font-size: 0.95em; } .vp-doc tbody tr:last-child td { - border-bottom: none; + border-bottom: none; } .VPSidebar > .nav { - display: flex; - flex-direction: column; - min-height: calc(100vh - var(--vp-nav-height) - 128px); + display: flex; + flex-direction: column; + min-height: calc(100vh - var(--vp-nav-height) - 128px); } .breaking-badge { - display: inline-flex; - align-items: center; - padding: 0 6px; - font-size: 11px; - font-weight: 600; - height: 18px; - line-height: 18px; - border-radius: 4px; - background-color: var(--vp-c-brand-1); - color: var(--vp-c-white); - text-transform: uppercase; - vertical-align: middle; - margin-left: 8px; - box-sizing: border-box; + display: inline-flex; + align-items: center; + padding: 0 6px; + font-size: 11px; + font-weight: 600; + height: 18px; + line-height: 18px; + border-radius: 4px; + background-color: var(--vp-c-brand-1); + color: var(--vp-c-white); + text-transform: uppercase; + vertical-align: middle; + margin-left: 8px; + box-sizing: border-box; } .breaking-badge::after { - content: 'breaking changes'; + content: 'breaking changes'; } .release-notes-link { - display: inline-flex; - align-items: center; - padding: 0 6px; - font-size: 11px; - font-weight: 600; - height: 18px; - line-height: 18px; - border-radius: 4px; - background-color: var(--release-notes-bg); - color: var(--vp-c-black) !important; - text-transform: uppercase; - vertical-align: middle; - margin-left: 8px; - text-decoration: none !important; - box-sizing: border-box; + display: inline-flex; + align-items: center; + padding: 0 6px; + font-size: 11px; + font-weight: 600; + height: 18px; + line-height: 18px; + border-radius: 4px; + background-color: var(--release-notes-bg); + color: var(--vp-c-black) !important; + text-transform: uppercase; + vertical-align: middle; + margin-left: 8px; + text-decoration: none !important; + box-sizing: border-box; } .release-notes-link::after { - content: 'release notes'; - margin-left: 10px; + content: 'release notes'; + margin-left: 10px; } .release-notes-link span { - margin-left: 10px; + margin-left: 10px; } .release-notes-link:hover { - opacity: 0.8; + opacity: 0.8; } .release-notes-img { - width: 12px; - height: 12px; + width: 12px; + height: 12px; } .atom-link { - display: inline-flex; - align-items: center; - vertical-align: middle; - color: var(--vp-c-text-2); - transition: color 0.2s; - text-decoration: none !important; - margin-left: 12px; + display: inline-flex; + align-items: center; + vertical-align: middle; + color: var(--vp-c-text-2); + transition: color 0.2s; + text-decoration: none !important; + margin-left: 12px; } .atom-link:hover { - color: var(--vp-c-orange) !important; + color: var(--vp-c-orange) !important; } .atom-icon { - width: 24px; - height: 24px; - fill: currentColor; + width: 24px; + height: 24px; + fill: currentColor; } .sponsors-page ul { - columns: 3; - list-style: none; - padding-left: 0; + columns: 3; + list-style: none; + padding-left: 0; } .sponsors-page ul li { - border-left: 3px solid var(--vp-c-brand-1); - padding-left: 15px; - margin-bottom: 8px; - break-inside: avoid; + border-left: 3px solid var(--vp-c-brand-1); + padding-left: 15px; + margin-bottom: 8px; + break-inside: avoid; } @media screen and (max-width: 900px) { - .sponsors-page ul { - columns: 2; - } + .sponsors-page ul { + columns: 2; + } } @media screen and (max-width: 500px) { - .sponsors-page ul { - columns: 1; - } + .sponsors-page ul { + columns: 1; + } } .vp-doc img.resources-book { - float: right; - height: 160px; - max-width: none; - border: 1px solid var(--vp-c-divider); - margin: 0 0 0 20px; + float: right; + height: 160px; + max-width: none; + border: 1px solid var(--vp-c-divider); + margin: 0 0 0 20px; } diff --git a/.vitepress/theme/redirect.ts b/.vitepress/theme/redirect.ts index 1d7c2d03..718bb260 100644 --- a/.vitepress/theme/redirect.ts +++ b/.vitepress/theme/redirect.ts @@ -1,117 +1,117 @@ import Semver from 'semver'; -import modulesData from '../../generated/metadata/modules.json' with { type: 'json' }; -import hapiInfo from '../../generated/modules/hapi/info.json' with { type: 'json' }; +import ModulesData from '../../generated/metadata/modules.json' with { type: 'json' }; +import HapiInfo from '../../generated/modules/hapi/info.json' with { type: 'json' }; import { formatVersion } from '../utils.js'; const tutorialRenames: Record = { - expresstohapi: 'express-to-hapi', - gettingstarted: 'getting-started', - servermethods: 'server-methods', - servingfiles: 'serving-files', + expresstohapi: 'express-to-hapi', + gettingstarted: 'getting-started', + servermethods: 'server-methods', + servingfiles: 'serving-files', }; export const getRedirectPath = (toPath: string) => { - const [urlPath, hash] = toPath.split('#'); - const path = urlPath.replace(/\/$/, '').replace(/\.html$/, '') || '/'; - const suffix = hash ? `#${hash}` : ''; - - // Handle /api with optional version - const apiMatch = path.match(/^\/api(?:\/([^/]+))?$/); - if (apiMatch) { - return resolveHapiVersion(apiMatch.at(1), 'api', suffix); - } - - // Handle /family/{name} -> /module/{name}/api/{version} - const familyMatch = path.match(/^\/family\/([^/]+)(?:\/(.*))?$/); - if (familyMatch) { - const [, name, rest] = familyMatch; - if (rest === 'api') { - return `/module/${name}/api${suffix}`; + const [urlPath, hash] = toPath.split('#'); + const path = urlPath.replace(/\/$/, '').replace(/\.html$/, '') || '/'; + const suffix = hash ? `#${hash}` : ''; + + // Handle /api with optional version + const apiMatch = path.match(/^\/api(?:\/([^/]+))?$/); + if (apiMatch) { + return resolveHapiVersion(apiMatch.at(1), 'api', suffix); } - if (rest) { - return `/module/${name}/${rest}${suffix}`; + + // Handle /family/{name} -> /module/{name}/api/{version} + const familyMatch = path.match(/^\/family\/([^/]+)(?:\/(.*))?$/); + if (familyMatch) { + const [, name, rest] = familyMatch; + if (rest === 'api') { + return `/module/${name}/api${suffix}`; + } + if (rest) { + return `/module/${name}/${rest}${suffix}`; + } + return resolveModuleLatest(name, suffix); } - return resolveModuleLatest(name, suffix); - } - - // Handle /module/{name} without subpath -> /module/{name}/api/{version} - const moduleMatch = path.match(/^\/module\/([^/]+)$/); - if (moduleMatch) { - return resolveModuleLatest(moduleMatch[1], suffix); - } - - // Handle /module/{name}/install -> /module/{name}/api/{version} - const installMatch = path.match(/^\/module\/([^/]+)\/install$/); - if (installMatch) { - return resolveModuleLatest(installMatch[1], suffix); - } - - // Handle old tutorial URLs -> new /tutorials/{locale}/{slug} format - const tutorialMatch = path.match(/^\/tutorials\/([^/]+)$/); - if (tutorialMatch) { - const oldName = tutorialMatch.at(1)!; - // If it's a locale code, skip (it's a directory) - if (['en_US', 'ko_KR', 'pt_BR', 'tr_TR', 'zh_CN'].includes(oldName)) { - return null; + + // Handle /module/{name} without subpath -> /module/{name}/api/{version} + const moduleMatch = path.match(/^\/module\/([^/]+)$/); + if (moduleMatch) { + return resolveModuleLatest(moduleMatch[1], suffix); } - const newName = tutorialRenames[oldName] ?? oldName; - return `/tutorials/en_US/${newName}${suffix}`; - } - // Handle /resources -> /resources/changelog - if (path === '/resources') { - return `/resources/changelog${suffix}`; - } + // Handle /module/{name}/install -> /module/{name}/api/{version} + const installMatch = path.match(/^\/module\/([^/]+)\/install$/); + if (installMatch) { + return resolveModuleLatest(installMatch[1], suffix); + } - // Handle /policies -> /policies/coc - if (path === '/policies') { - return `/policies/coc${suffix}`; - } + // Handle old tutorial URLs -> new /tutorials/{locale}/{slug} format + const tutorialMatch = path.match(/^\/tutorials\/([^/]+)$/); + if (tutorialMatch) { + const oldName = tutorialMatch.at(1)!; + // If it's a locale code, skip (it's a directory) + if (['en_US', 'ko_KR', 'pt_BR', 'tr_TR', 'zh_CN'].includes(oldName)) { + return null; + } + const newName = tutorialRenames[oldName] ?? oldName; + return `/tutorials/en_US/${newName}${suffix}`; + } - return null; + // Handle /resources -> /resources/changelog + if (path === '/resources') { + return `/resources/changelog${suffix}`; + } + + // Handle /policies -> /policies/coc + if (path === '/policies') { + return `/policies/coc${suffix}`; + } + + return null; }; const resolveModuleLatest = (name: string, suffix: string) => { - const mod = modulesData[name as keyof typeof modulesData]; - if (!mod) { - return null; - } - return `/module/${name}/api/${mod.latestVersion}${suffix}`; + const mod = ModulesData[name as keyof typeof ModulesData]; + if (!mod) { + return null; + } + return `/module/${name}/api/${mod.latestVersion}${suffix}`; }; const resolveHapiVersion = (version: string | undefined, type: string, suffix: string) => { - const [latestVersion] = hapiInfo.versionsArray; - const latestMasked = formatVersion(latestVersion); + const [latestVersion] = HapiInfo.versionsArray; + const latestMasked = formatVersion(latestVersion); - if (!version) { - return `/${type}/${latestMasked}${suffix}`; - } + if (!version) { + return `/${type}/${latestMasked}${suffix}`; + } - const maskedVersions = hapiInfo.versionsArray.map(formatVersion); - if (maskedVersions.includes(version)) { - return null; - } - - let targetVersion = latestVersion; - try { - const coerced = Semver.coerce(version); - if (coerced) { - const major = Semver.major(coerced); - const sameMajor = hapiInfo.versionsArray.find((v) => Semver.major(v) === major); - if (sameMajor) { - targetVersion = sameMajor; - } + const maskedVersions = HapiInfo.versionsArray.map(formatVersion); + if (maskedVersions.includes(version)) { + return null; } - } catch { - // Keep targetVersion as latest if coercion fails - } - const finalTarget = formatVersion(targetVersion); + let targetVersion = latestVersion; + try { + const coerced = Semver.coerce(version); + if (coerced) { + const major = Semver.major(coerced); + const sameMajor = HapiInfo.versionsArray.find((v) => Semver.major(v) === major); + if (sameMajor) { + targetVersion = sameMajor; + } + } + } catch { + // Keep targetVersion as latest if coercion fails + } - if (finalTarget === version) { - return null; - } + const finalTarget = formatVersion(targetVersion); + + if (finalTarget === version) { + return null; + } - return `/${type}/${finalTarget}${suffix}`; + return `/${type}/${finalTarget}${suffix}`; }; diff --git a/.vitepress/theme/variables.css b/.vitepress/theme/variables.css index 6a54a153..914a670a 100644 --- a/.vitepress/theme/variables.css +++ b/.vitepress/theme/variables.css @@ -1,18 +1,18 @@ :root { - /* Brand Colors - hapi orange */ - --vp-c-brand-1: #ed7d31; - --vp-c-brand-2: #d06a20; - --vp-c-brand-3: #b85a15; - --vp-c-brand-soft: rgba(237, 125, 49, 0.14); + /* Brand Colors - hapi orange */ + --vp-c-brand-1: #ed7d31; + --vp-c-brand-2: #d06a20; + --vp-c-brand-3: #b85a15; + --vp-c-brand-soft: rgba(237, 125, 49, 0.14); - /* Release Notes Badge */ - --release-notes-bg: #fad8c7; + /* Release Notes Badge */ + --release-notes-bg: #fad8c7; - /* Shadows */ - --shadow-card: 0 6px 20px rgba(0, 0, 0, 0.04); - --shadow-card-hover: 0 14px 30px rgba(0, 0, 0, 0.08); - --shadow-elevated: 0 8px 24px rgba(0, 0, 0, 0.06); + /* Shadows */ + --shadow-card: 0 6px 20px rgba(0, 0, 0, 0.04); + --shadow-card-hover: 0 14px 30px rgba(0, 0, 0, 0.08); + --shadow-elevated: 0 8px 24px rgba(0, 0, 0, 0.06); - /* Atom Icon */ - --vp-c-orange: #f26522; + /* Atom Icon */ + --vp-c-orange: #f26522; } diff --git a/.vitepress/utils.ts b/.vitepress/utils.ts index 0c481df7..3b16b7a0 100644 --- a/.vitepress/utils.ts +++ b/.vitepress/utils.ts @@ -1,4 +1,4 @@ export const formatVersion = (version: string) => { - const [major] = version.split('.'); - return `${major}.x.x`; + const [major] = version.split('.'); + return `${major}.x.x`; }; diff --git a/cli/generateChangelog.ts b/cli/generateChangelog.ts index a46d5edf..a57f842f 100644 --- a/cli/generateChangelog.ts +++ b/cli/generateChangelog.ts @@ -1,5 +1,5 @@ -import fs from 'node:fs/promises'; -import path from 'node:path'; +import Fs from 'node:fs/promises'; +import Path from 'node:path'; import { Semaphore } from 'es-toolkit'; import { Feed } from 'feed'; @@ -12,167 +12,169 @@ import { getExisting, getModuleChangelogPath, getModuleMarkdownChangelogPath, PU import type { ChangelogItem } from './types.js'; export const generateChangelog = async (moduleName: string) => { - let foundNewMilestones = false; - - const filePath = getModuleChangelogPath(moduleName); - const existing = await getExisting(filePath); - const existingMap = new Map(existing?.map((c) => [c.version, c])); - - console.info(`[changelog] Generating for ${moduleName}`); - - const milestones = await getMilestones(moduleName); - - const changelog: ChangelogItem[] = []; - - const limit = new Semaphore(10); - const tasks = milestones.map(async (milestone) => { - if (existingMap.has(milestone.title)) { - console.info(`[changelog] Skipping ${moduleName}@${milestone.title}`); - return existingMap.get(milestone.title)!; - } + let foundNewMilestones = false; + + const filePath = getModuleChangelogPath(moduleName); + const existing = await getExisting(filePath); + const existingMap = new Map(existing?.map((c) => [c.version, c])); + + console.info(`[changelog] Generating for ${moduleName}`); + + const milestones = await getMilestones(moduleName); + + const changelog: ChangelogItem[] = []; + + const limit = new Semaphore(10); + const tasks = milestones.map(async (milestone) => { + if (existingMap.has(milestone.title)) { + console.info(`[changelog] Skipping ${moduleName}@${milestone.title}`); + return existingMap.get(milestone.title)!; + } + + await limit.acquire(); + try { + console.info(`[changelog] Getting issues for ${moduleName}@${milestone.title}`); + + const issues = await getMilestoneIssues(moduleName, milestone.number); + + foundNewMilestones = true; + + return { + date: milestone.closed_at, + id: milestone.id, + issues: issues.map((issue) => ({ + id: issue.id, + labels: issue.labels.map((label) => label.name), + number: issue.number, + title: issue.title, + url: issue.html_url, + })), + number: milestone.number, + url: milestone.html_url, + version: milestone.title, + }; + } finally { + limit.release(); + } + }); - await limit.acquire(); - try { - console.info(`[changelog] Getting issues for ${moduleName}@${milestone.title}`); - - const issues = await getMilestoneIssues(moduleName, milestone.number); - - foundNewMilestones = true; - - return { - date: milestone.closed_at, - id: milestone.id, - issues: issues.map((issue) => ({ - id: issue.id, - labels: issue.labels.map((label) => label.name), - number: issue.number, - title: issue.title, - url: issue.html_url, - })), - number: milestone.number, - url: milestone.html_url, - version: milestone.title, - }; - } finally { - limit.release(); - } - }); + changelog.push(...(await Promise.all(tasks))); - changelog.push(...(await Promise.all(tasks))); + const sortedChangelog = changelog.toSorted((a, b) => { + const aCoerced = Semver.coerce(a.version); + const bCoerced = Semver.coerce(b.version); + if (aCoerced && bCoerced) { + return Semver.compare(bCoerced, aCoerced); + } + return b.version.localeCompare(a.version); + }); - const sortedChangelog = changelog.toSorted((a, b) => { - const aCoerced = Semver.coerce(a.version); - const bCoerced = Semver.coerce(b.version); - if (aCoerced && bCoerced) { - return Semver.compare(bCoerced, aCoerced); + if (foundNewMilestones) { + await Fs.writeFile(filePath, JSON.stringify(sortedChangelog, null, 2)); } - return b.version.localeCompare(a.version); - }); - - if (foundNewMilestones) { - await fs.writeFile(filePath, JSON.stringify(sortedChangelog, null, 2)); - } - await generateModuleMarkdownChangelog(moduleName, sortedChangelog); - await generateModuleAtom(moduleName, sortedChangelog); + await generateModuleMarkdownChangelog(moduleName, sortedChangelog); + await generateModuleAtom(moduleName, sortedChangelog); }; const generateModuleAtom = async (moduleName: string, sortedChangelog: ChangelogItem[]) => { - const isHapi = moduleName === 'hapi'; - const spec = modules[moduleName]; - const fullModuleName = spec?.package ?? moduleName; - const baseLink = isHapi ? 'https://hapi.dev' : `https://hapi.dev/module/${moduleName}`; - const changelogLink = isHapi - ? 'https://hapi.dev/resources/changelog' - : `https://hapi.dev/module/${moduleName}/changelog`; - - const feed = new Feed({ - favicon: 'https://hapi.dev/favicon.png', - id: baseLink, - image: 'https://hapi.dev/img/logo.png', - language: 'en', - link: baseLink, - title: `${fullModuleName} changelog`, - updated: new Date(sortedChangelog[0]?.date ?? Date.now()), - }); - - const items = sortedChangelog.slice(0, 50); - - for (const item of items) { - const title = `${fullModuleName} v${item.version}`; - const link = `${changelogLink}#${item.version}`; - const date = new Date(item.date); - - let content = '
    '; - for (const issue of item.issues) { - content += `
  • [#${issue.number}] ${escapeHtml(issue.title)}
  • `; - } - content += '
'; - - feed.addItem({ - content, - date, - description: title, - id: item.url, - link, - title, + const isHapi = moduleName === 'hapi'; + const spec = modules[moduleName]; + const fullModuleName = spec?.package ?? moduleName; + const baseLink = isHapi ? 'https://hapi.dev' : `https://hapi.dev/module/${moduleName}`; + const changelogLink = isHapi + ? 'https://hapi.dev/resources/changelog' + : `https://hapi.dev/module/${moduleName}/changelog`; + + const feed = new Feed({ + favicon: 'https://hapi.dev/favicon.png', + id: baseLink, + image: 'https://hapi.dev/img/logo.png', + language: 'en', + link: baseLink, + title: `${fullModuleName} changelog`, + updated: new Date(sortedChangelog[0]?.date ?? Date.now()), }); - } - const atomPath = path.join(PUBLIC_ATOM_DIR, `${moduleName}.atom`); - await fs.mkdir(path.dirname(atomPath), { recursive: true }); - await fs.writeFile(atomPath, feed.atom1()); + const items = sortedChangelog.slice(0, 50); + + for (const item of items) { + const title = `${fullModuleName} v${item.version}`; + const link = `${changelogLink}#${item.version}`; + const date = new Date(item.date); + + let content = '
    '; + for (const issue of item.issues) { + content += `
  • [#${issue.number}] ${escapeHtml(issue.title)}
  • `; + } + content += '
'; + + feed.addItem({ + content, + date, + description: title, + id: item.url, + link, + title, + }); + } + + const atomPath = Path.join(PUBLIC_ATOM_DIR, `${moduleName}.atom`); + await Fs.mkdir(Path.dirname(atomPath), { recursive: true }); + await Fs.writeFile(atomPath, feed.atom1()); }; const generateModuleMarkdownChangelog = async (moduleName: string, sortedChangelog: ChangelogItem[]) => { - const majorVersions = new Set(); - sortedChangelog.forEach((m) => { - const [major] = m.version.split('.'); - if (major) { - majorVersions.add(major); - } - }); + const majorVersions = new Set(); + sortedChangelog.forEach((m) => { + const [major] = m.version.split('.'); + if (major) { + majorVersions.add(major); + } + }); - const changelogPath = getModuleMarkdownChangelogPath(moduleName); - await fs.mkdir(path.dirname(changelogPath), { recursive: true }); - let content = ''; + const changelogPath = getModuleMarkdownChangelogPath(moduleName); + await Fs.mkdir(Path.dirname(changelogPath), { recursive: true }); + let content = ''; - const sortedMajors = [...majorVersions].toSorted((a, b) => parseInt(b, 10) - parseInt(a, 10)); + const sortedMajors = [...majorVersions].toSorted((a, b) => parseInt(b, 10) - parseInt(a, 10)); - for (const major of sortedMajors) { - content += `## Version ${major} {#v${major}}\n\n`; + for (const major of sortedMajors) { + content += `## Version ${major} {#v${major}}\n\n`; - const milestones = sortedChangelog.filter((m) => m.version.startsWith(`${major}.`)); + const milestones = sortedChangelog.filter((m) => m.version.startsWith(`${major}.`)); - for (const milestone of milestones) { - const hasBreaking = milestone.issues.some((issue) => issue.labels.some((label) => label === 'breaking changes')); + for (const milestone of milestones) { + const hasBreaking = milestone.issues.some((issue) => + issue.labels.some((label) => label === 'breaking changes'), + ); - const releaseNotesIssue = milestone.issues.find((issue) => - issue.labels.some((label) => label === 'release notes'), - ); + const releaseNotesIssue = milestone.issues.find((issue) => + issue.labels.some((label) => label === 'release notes'), + ); - content += `### [${milestone.version}](${milestone.url}) `; + content += `### [${milestone.version}](${milestone.url}) `; - if (releaseNotesIssue) { - content += ` `; - } + if (releaseNotesIssue) { + content += ` `; + } - if (hasBreaking) { - content += ` `; - } + if (hasBreaking) { + content += ` `; + } - content += `{#${milestone.version}} `; + content += `{#${milestone.version}} `; - content += `\n\n`; + content += `\n\n`; - for (const issue of milestone.issues) { - content += `- [#${issue.number}](${issue.url}) ${escapeHtml(issue.title)}\n`; - } - content += '\n'; + for (const issue of milestone.issues) { + content += `- [#${issue.number}](${issue.url}) ${escapeHtml(issue.title)}\n`; + } + content += '\n'; + } } - } - await fs.writeFile(changelogPath, content); + await Fs.writeFile(changelogPath, content); }; const escapeHtml = (text: string) => text.replaceAll('<', '<').replaceAll('>', '>'); diff --git a/cli/getModuleInfo.ts b/cli/getModuleInfo.ts index 87e03a5e..479309a0 100644 --- a/cli/getModuleInfo.ts +++ b/cli/getModuleInfo.ts @@ -1,6 +1,6 @@ import { execFileSync } from 'node:child_process'; -import fs from 'node:fs/promises'; -import path from 'node:path'; +import Fs from 'node:fs/promises'; +import Path from 'node:path'; import { Semaphore, uniq } from 'es-toolkit'; import Semver from 'semver'; @@ -10,33 +10,33 @@ import { generateChangelog } from './generateChangelog.js'; import { getDirectoryListing, getRawContent, getRepoInfo } from './gh.js'; import { modules } from './modules.js'; import { - API_DIR, - MARKDOWN_DIR, - METADATA_DIR, - POLICIES_GENERATED_DIR, - getExisting, - getModuleInfoPath, - getModuleMarkdownPath, - getModuleStoragePath, + API_DIR, + MARKDOWN_DIR, + METADATA_DIR, + POLICIES_GENERATED_DIR, + getExisting, + getModuleInfoPath, + getModuleMarkdownPath, + getModuleStoragePath, } from './paths.js'; import type { ModuleInfo, ModuleSpec, VersionInfo } from './types.js'; const getFilteredVersions = (specs: ModuleSpec, versions: string[]): VersionInfo[] => { - const compatibilityVersions = Object.keys(specs.compatibility); - const minVersion = Math.min(...compatibilityVersions.map((v) => parseInt(v, 10))); - const prefilteredVersions = versions.filter((v) => Semver.satisfies(v, `>=${minVersion}`)); - const publishedMajorVersions = uniq(prefilteredVersions.map((v) => Semver.major(v))); - const semveredMajors = compatibilityVersions.map((v) => `${v}.0.0`); - - return publishedMajorVersions.map((major) => { - const closestMatchingVersion = Semver.maxSatisfying(semveredMajors, `<= ${major}`); - return { - fullVersion: Semver.maxSatisfying(prefilteredVersions, `^${major}`)!, - major, - nodeVersion: closestMatchingVersion ? specs.compatibility[Semver.major(closestMatchingVersion)] : '', - }; - }); + const compatibilityVersions = Object.keys(specs.compatibility); + const minVersion = Math.min(...compatibilityVersions.map((v) => parseInt(v, 10))); + const prefilteredVersions = versions.filter((v) => Semver.satisfies(v, `>=${minVersion}`)); + const publishedMajorVersions = uniq(prefilteredVersions.map((v) => Semver.major(v))); + const semveredMajors = compatibilityVersions.map((v) => `${v}.0.0`); + + return publishedMajorVersions.map((major) => { + const closestMatchingVersion = Semver.maxSatisfying(semveredMajors, `<= ${major}`); + return { + fullVersion: Semver.maxSatisfying(prefilteredVersions, `^${major}`)!, + major, + nodeVersion: closestMatchingVersion ? specs.compatibility[Semver.major(closestMatchingVersion)] : '', + }; + }); }; const md = await createMarkdownRenderer('.'); @@ -46,168 +46,168 @@ const repos: Record> = {}; const limit = new Semaphore(4); const processModule = async (moduleName: string, specs: ModuleSpec) => { - console.info(`Processing ${moduleName}`); - - await fs.mkdir(getModuleStoragePath(moduleName), { - recursive: true, - }); + console.info(`Processing ${moduleName}`); - const filePath = getModuleInfoPath(moduleName); + await Fs.mkdir(getModuleStoragePath(moduleName), { + recursive: true, + }); - const existing = await getExisting(filePath); + const filePath = getModuleInfoPath(moduleName); + + const existing = await getExisting(filePath); + + // Get published versions from npm + const versions = JSON.parse( + execFileSync('npm', ['view', specs.package, 'versions', '--json'], { + encoding: 'utf8', + }), + ) as string[]; + + const currentModule: ModuleInfo = { + api: false, + forks: 0, + isPlugin: specs.isPlugin ?? false, + latestVersion: '', + link: '', + name: moduleName, + package: specs.package, + slogan: '', + sloganHtml: '', + stars: 0, + updated: '', + versions: [], + versionsArray: [], + }; + repos[moduleName] = currentModule; + + // Keep only latest versions from majors listed in specs + const filteredVersions = getFilteredVersions(specs, versions); + + currentModule.versionsArray = filteredVersions.map((v) => v.fullVersion).toSorted((a, b) => Semver.compare(b, a)); + currentModule.latestVersion = `${currentModule.versionsArray[0].split('.')[0]}.x.x`; + + const versionLimit = new Semaphore(10); + const versionTasks = filteredVersions.map(async ({ nodeVersion, fullVersion, major }) => { + const hasApi = specs.hasApi ?? false; + + if (!hasApi) { + return { + apiExists: false, + branch: `v${fullVersion}`, + license: 'BSD', + name: fullVersion, + node: nodeVersion, + }; + } + + const apiPath = getModuleMarkdownPath(moduleName, major); + const apiExists = await Fs.access(apiPath) + .then(() => true) + .catch(() => false); + + const existingVersion = existing?.versions.find((v) => v.name === fullVersion); + + if (existingVersion && apiExists) { + console.info(`[docs] Skipping ${moduleName}@${major}`); + return { + apiExists: true, + branch: existingVersion.branch, + license: existingVersion.license, + name: existingVersion.name, + node: existingVersion.node, + }; + } + + await versionLimit.acquire(); + try { + console.info(`[docs] Processing ${moduleName}@${fullVersion}`); + const tagName = `v${fullVersion}`; + + const api = await getRawContent(moduleName, 'API.md', tagName); + + await Fs.mkdir(Path.dirname(apiPath), { recursive: true }); + + await Fs.writeFile(apiPath, api.data); + console.info(`[docs] Wrote ${apiPath}`); + + return { + apiExists: true, + branch: tagName, + license: 'BSD', + name: fullVersion, + node: nodeVersion, + }; + } finally { + versionLimit.release(); + } + }); - // Get published versions from npm - const versions = JSON.parse( - execFileSync('npm', ['view', specs.package, 'versions', '--json'], { - encoding: 'utf8', - }), - ) as string[]; - - const currentModule: ModuleInfo = { - api: false, - forks: 0, - isPlugin: specs.isPlugin ?? false, - latestVersion: '', - link: '', - name: moduleName, - package: specs.package, - slogan: '', - sloganHtml: '', - stars: 0, - updated: '', - versions: [], - versionsArray: [], - }; - repos[moduleName] = currentModule; - - // Keep only latest versions from majors listed in specs - const filteredVersions = getFilteredVersions(specs, versions); - - currentModule.versionsArray = filteredVersions.map((v) => v.fullVersion).toSorted((a, b) => Semver.compare(b, a)); - currentModule.latestVersion = `${currentModule.versionsArray[0].split('.')[0]}.x.x`; - - const versionLimit = new Semaphore(10); - const versionTasks = filteredVersions.map(async ({ nodeVersion, fullVersion, major }) => { - const hasApi = specs.hasApi ?? false; - - if (!hasApi) { - return { - apiExists: false, - branch: `v${fullVersion}`, - license: 'BSD', - name: fullVersion, - node: nodeVersion, - }; + const versionResults = await Promise.all(versionTasks); + for (const result of versionResults) { + currentModule.versions.push({ + branch: result.branch, + license: result.license, + name: result.name, + node: result.node, + }); + if (result.apiExists) { + currentModule.api = true; + } } - const apiPath = getModuleMarkdownPath(moduleName, major); - const apiExists = await fs - .access(apiPath) - .then(() => true) - .catch(() => false); - - const existingVersion = existing?.versions.find((v) => v.name === fullVersion); - - if (existingVersion && apiExists) { - console.info(`[docs] Skipping ${moduleName}@${major}`); - return { - apiExists: true, - branch: existingVersion.branch, - license: existingVersion.license, - name: existingVersion.name, - node: existingVersion.node, - }; - } + currentModule.versions.sort((a, b) => Semver.compare(a.name, b.name)); - await versionLimit.acquire(); - try { - console.info(`[docs] Processing ${moduleName}@${fullVersion}`); - const tagName = `v${fullVersion}`; + const [readme, repoInfo] = await Promise.all([ + existing ? Promise.resolve({ data: '' }) : getRawContent(moduleName, 'README.md'), + getRepoInfo(moduleName), + ]); - const api = await getRawContent(moduleName, 'API.md', tagName); + const readmeMatch = readme.data.match(/####(.*)/gm); + const rawSlogan = + readmeMatch === null ? (existing?.slogan ?? 'Description coming soon...') : readmeMatch[0].slice(5); - await fs.mkdir(path.dirname(apiPath), { recursive: true }); + currentModule.slogan = rawSlogan.trim(); + currentModule.sloganHtml = md.renderInline(currentModule.slogan); + currentModule.forks = repoInfo.data.forks_count; + currentModule.stars = repoInfo.data.stargazers_count; + currentModule.updated = repoInfo.data.pushed_at; + currentModule.link = repoInfo.data.html_url; - await fs.writeFile(apiPath, api.data); - console.info(`[docs] Wrote ${apiPath}`); + const moduleDir = getModuleStoragePath(moduleName); + await Fs.mkdir(moduleDir, { recursive: true }); - return { - apiExists: true, - branch: tagName, - license: 'BSD', - name: fullVersion, - node: nodeVersion, - }; - } finally { - versionLimit.release(); - } - }); - - const versionResults = await Promise.all(versionTasks); - for (const result of versionResults) { - currentModule.versions.push({ - branch: result.branch, - license: result.license, - name: result.name, - node: result.node, - }); - if (result.apiExists) { - currentModule.api = true; + await Fs.writeFile(filePath, JSON.stringify(currentModule, null, 2)); + + if (moduleName === 'hapi') { + await Fs.mkdir(API_DIR, { recursive: true }); } - } - - currentModule.versions.sort((a, b) => Semver.compare(a.name, b.name)); - - const [readme, repoInfo] = await Promise.all([ - existing ? Promise.resolve({ data: '' }) : getRawContent(moduleName, 'README.md'), - getRepoInfo(moduleName), - ]); - - const readmeMatch = readme.data.match(/####(.*)/gm); - const rawSlogan = readmeMatch === null ? (existing?.slogan ?? 'Description coming soon...') : readmeMatch[0].slice(5); - - currentModule.slogan = rawSlogan.trim(); - currentModule.sloganHtml = md.renderInline(currentModule.slogan); - currentModule.forks = repoInfo.data.forks_count; - currentModule.stars = repoInfo.data.stargazers_count; - currentModule.updated = repoInfo.data.pushed_at; - currentModule.link = repoInfo.data.html_url; - - const moduleDir = getModuleStoragePath(moduleName); - await fs.mkdir(moduleDir, { recursive: true }); - - await fs.writeFile(filePath, JSON.stringify(currentModule, null, 2)); - - if (moduleName === 'hapi') { - await fs.mkdir(API_DIR, { recursive: true }); - } - - await generateChangelog(moduleName); - - await fs.writeFile(filePath, JSON.stringify(currentModule, null, 2)); - - repos[moduleName] = { - forks: currentModule.forks, - isPlugin: currentModule.isPlugin, - latestVersion: currentModule.latestVersion, - link: currentModule.link, - package: currentModule.package, - slogan: currentModule.slogan, - sloganHtml: currentModule.sloganHtml, - stars: currentModule.stars, - updated: currentModule.updated, - versions: currentModule.versions, - versionsArray: currentModule.versionsArray, - }; + + await generateChangelog(moduleName); + + await Fs.writeFile(filePath, JSON.stringify(currentModule, null, 2)); + + repos[moduleName] = { + forks: currentModule.forks, + isPlugin: currentModule.isPlugin, + latestVersion: currentModule.latestVersion, + link: currentModule.link, + package: currentModule.package, + slogan: currentModule.slogan, + sloganHtml: currentModule.sloganHtml, + stars: currentModule.stars, + updated: currentModule.updated, + versions: currentModule.versions, + versionsArray: currentModule.versionsArray, + }; }; const moduleTasks = Object.entries(modules).map(async ([moduleName, specs]) => { - await limit.acquire(); - try { - await processModule(moduleName, specs); - } finally { - limit.release(); - } + await limit.acquire(); + try { + await processModule(moduleName, specs); + } finally { + limit.release(); + } }); await Promise.all(moduleTasks); @@ -215,71 +215,71 @@ await Promise.all(moduleTasks); const sortedRepos = Object.fromEntries(Object.keys(modules).map((name) => [name, repos[name]])); const policies: [string, string, string?][] = [ - ['coc', 'CODE_OF_CONDUCT'], - ['contributing', 'CONTRIBUTING'], - ['license', 'LICENSE'], - ['security', 'SECURITY'], - ['sponsors', 'SPONSORS'], - ['styleguide', 'STYLE', 'assets'], - ['support', 'SUPPORT'], + ['coc', 'CODE_OF_CONDUCT'], + ['contributing', 'CONTRIBUTING'], + ['license', 'LICENSE'], + ['security', 'SECURITY'], + ['sponsors', 'SPONSORS'], + ['styleguide', 'STYLE', 'assets'], + ['support', 'SUPPORT'], ]; -await fs.mkdir(POLICIES_GENERATED_DIR, { recursive: true }); +await Fs.mkdir(POLICIES_GENERATED_DIR, { recursive: true }); await Promise.all( - policies.map(async ([policy, fileName, repo]) => { - const policyPath = path.join(POLICIES_GENERATED_DIR, `${policy}.md`); - const existingPolicy = await fs.readFile(policyPath, 'utf8').catch(() => null); - if (existingPolicy) { - console.info(`[policy] Skipping ${policy}`); - return; - } - const { data } = await getRawContent(repo ?? '.github', `${fileName}.md`, 'master'); - await fs.writeFile(policyPath, data); - }), + policies.map(async ([policy, fileName, repo]) => { + const policyPath = Path.join(POLICIES_GENERATED_DIR, `${policy}.md`); + const existingPolicy = await Fs.readFile(policyPath, 'utf8').catch(() => null); + if (existingPolicy) { + console.info(`[policy] Skipping ${policy}`); + return; + } + const { data } = await getRawContent(repo ?? '.github', `${fileName}.md`, 'master'); + await Fs.writeFile(policyPath, data); + }), ); // Fetch bell-specific content (examples and providers) -const bellMarkdownDir = path.join(MARKDOWN_DIR, 'bell'); -await fs.mkdir(bellMarkdownDir, { recursive: true }); +const bellMarkdownDir = Path.join(MARKDOWN_DIR, 'bell'); +await Fs.mkdir(bellMarkdownDir, { recursive: true }); -const bellProvidersPath = path.join(bellMarkdownDir, 'providers.md'); -const existingProviders = await fs.readFile(bellProvidersPath, 'utf8').catch(() => null); +const bellProvidersPath = Path.join(bellMarkdownDir, 'providers.md'); +const existingProviders = await Fs.readFile(bellProvidersPath, 'utf8').catch(() => null); if (existingProviders) { - console.info('[bell] Skipping Providers.md'); + console.info('[bell] Skipping Providers.md'); } else { - console.info('[bell] Fetching Providers.md'); - const { data: providersData } = await getRawContent('bell', 'Providers.md', 'master'); - await fs.writeFile(bellProvidersPath, providersData); + console.info('[bell] Fetching Providers.md'); + const { data: providersData } = await getRawContent('bell', 'Providers.md', 'master'); + await Fs.writeFile(bellProvidersPath, providersData); } -const bellExamplesPath = path.join(bellMarkdownDir, 'examples.md'); -const existingExamples = await fs.readFile(bellExamplesPath, 'utf8').catch(() => null); +const bellExamplesPath = Path.join(bellMarkdownDir, 'examples.md'); +const existingExamples = await Fs.readFile(bellExamplesPath, 'utf8').catch(() => null); if (existingExamples) { - console.info('[bell] Skipping examples'); + console.info('[bell] Skipping examples'); } else { - console.info('[bell] Fetching examples'); - const { data: exampleFiles } = await getDirectoryListing('bell', 'examples', 'master'); - let examplesContent = ''; - for (const file of exampleFiles) { - if (file.type === 'file' && file.name.endsWith('.js')) { - const name = file.name.replace(/\.js$/, ''); - const label = name.charAt(0).toUpperCase() + name.slice(1); - const { data: code } = await getRawContent('bell', file.path, 'master'); - examplesContent += `## ${label}\n\n\`\`\`js\n${code}\n\`\`\`\n\n`; + console.info('[bell] Fetching examples'); + const { data: exampleFiles } = await getDirectoryListing('bell', 'examples', 'master'); + let examplesContent = ''; + for (const file of exampleFiles) { + if (file.type === 'file' && file.name.endsWith('.js')) { + const name = file.name.replace(/\.js$/, ''); + const label = name.charAt(0).toUpperCase() + name.slice(1); + const { data: code } = await getRawContent('bell', file.path, 'master'); + examplesContent += `## ${label}\n\n\`\`\`js\n${code}\n\`\`\`\n\n`; + } } - } - await fs.writeFile(bellExamplesPath, examplesContent); + await Fs.writeFile(bellExamplesPath, examplesContent); } -await fs.mkdir(METADATA_DIR, { recursive: true }); -await fs.writeFile(path.join(METADATA_DIR, 'modules.json'), JSON.stringify(sortedRepos, null, 2)); +await Fs.mkdir(METADATA_DIR, { recursive: true }); +await Fs.writeFile(Path.join(METADATA_DIR, 'modules.json'), JSON.stringify(sortedRepos, null, 2)); console.info('Running oxfmt...'); try { - execFileSync('oxfmt', ['./generated'], { stdio: 'inherit' }); + execFileSync('oxfmt', ['./generated'], { stdio: 'inherit' }); - // Apparently oxfmt sometimes needs a 2nd pass - execFileSync('oxfmt', ['./generated'], { stdio: 'inherit' }); + // Apparently oxfmt sometimes needs a 2nd pass + execFileSync('oxfmt', ['./generated'], { stdio: 'inherit' }); } catch (error: unknown) { - console.error('Failed to run oxfmt:', error instanceof Error ? error.message : error); + console.error('Failed to run oxfmt:', error instanceof Error ? error.message : error); } diff --git a/cli/gh.ts b/cli/gh.ts index b22ab81d..4917f947 100644 --- a/cli/gh.ts +++ b/cli/gh.ts @@ -7,79 +7,79 @@ import type { Issue, Milestone } from './types.js'; const MyOctokit = Octokit.plugin(throttling); const gh = new MyOctokit({ - auth: process.env.GITHUB_TOKEN, - throttle: { - onRateLimit: (retryAfter, options, octokit, retryCount) => { - octokit.log.warn(`Request quota exhausted for request ${options.method} ${options.url}`); + auth: process.env.GITHUB_TOKEN, + throttle: { + onRateLimit: (retryAfter, options, octokit, retryCount) => { + octokit.log.warn(`Request quota exhausted for request ${options.method} ${options.url}`); - if (retryCount < 1) { - // Only retries once - octokit.log.info(`Retrying after ${retryAfter} seconds!`); - return true; - } + if (retryCount < 1) { + // Only retries once + octokit.log.info(`Retrying after ${retryAfter} seconds!`); + return true; + } + }, + onSecondaryRateLimit: (retryAfter, options, octokit) => { + // Does not retry, only logs a warning + octokit.log.warn(`Secondary quota exhausted for request ${options.method} ${options.url}`); + }, }, - onSecondaryRateLimit: (retryAfter, options, octokit) => { - // Does not retry, only logs a warning - octokit.log.warn(`Secondary quota exhausted for request ${options.method} ${options.url}`); - }, - }, }); export const getRawContent = async (repoName: string, filePath: string, tagName?: string) => - (await gh.repos.getContent({ - mediaType: { - format: 'raw', - }, - owner: 'hapijs', - path: filePath, - ref: tagName, - repo: repoName, - })) as unknown as { data: string }; + (await gh.repos.getContent({ + mediaType: { + format: 'raw', + }, + owner: 'hapijs', + path: filePath, + ref: tagName, + repo: repoName, + })) as unknown as { data: string }; export const getDirectoryListing = async (repoName: string, dirPath: string, ref?: string) => - (await gh.repos.getContent({ - owner: 'hapijs', - path: dirPath, - ref, - repo: repoName, - })) as unknown as { data: { name: string; path: string; type: string }[] }; + (await gh.repos.getContent({ + owner: 'hapijs', + path: dirPath, + ref, + repo: repoName, + })) as unknown as { data: { name: string; path: string; type: string }[] }; export const getRepoInfo = async (moduleName: string) => - await gh.repos.get({ - owner: 'hapijs', - repo: moduleName, - }); + await gh.repos.get({ + owner: 'hapijs', + repo: moduleName, + }); export const getMilestones = async (moduleName: string) => { - const milestones: Milestone[] = []; - for await (const response of gh.paginate.iterator(gh.issues.listMilestones, { - owner: 'hapijs', - per_page: 100, - repo: moduleName, - state: 'closed', - })) { - milestones.push(...(response.data as Milestone[])); - } - return milestones.toSorted((a, b) => { - const aCoerced = Semver.coerce(a.title); - const bCoerced = Semver.coerce(b.title); - if (aCoerced && bCoerced) { - return Semver.compare(aCoerced, bCoerced); + const milestones: Milestone[] = []; + for await (const response of gh.paginate.iterator(gh.issues.listMilestones, { + owner: 'hapijs', + per_page: 100, + repo: moduleName, + state: 'closed', + })) { + milestones.push(...(response.data as Milestone[])); } - return a.title.localeCompare(b.title); - }); + return milestones.toSorted((a, b) => { + const aCoerced = Semver.coerce(a.title); + const bCoerced = Semver.coerce(b.title); + if (aCoerced && bCoerced) { + return Semver.compare(aCoerced, bCoerced); + } + return a.title.localeCompare(b.title); + }); }; export const getMilestoneIssues = async (moduleName: string, milestoneNumber: number) => { - const issues: Issue[] = []; - for await (const response of gh.paginate.iterator(gh.issues.listForRepo, { - milestone: milestoneNumber.toString(), - owner: 'hapijs', - per_page: 100, - repo: moduleName, - state: 'closed', - })) { - issues.push(...(response.data as Issue[])); - } - return issues; + const issues: Issue[] = []; + for await (const response of gh.paginate.iterator(gh.issues.listForRepo, { + milestone: milestoneNumber.toString(), + owner: 'hapijs', + per_page: 100, + repo: moduleName, + state: 'closed', + })) { + issues.push(...(response.data as Issue[])); + } + return issues; }; diff --git a/cli/modules.ts b/cli/modules.ts index 23b8ef7e..eb4e03a3 100644 --- a/cli/modules.ts +++ b/cli/modules.ts @@ -1,262 +1,267 @@ import type { ModuleSpec } from './types.js'; export const modules: Record = { - accept: { - compatibility: { 6: '>= 16' }, - hasApi: true, - package: '@hapi/accept', - }, - ammo: { - compatibility: { 6: '>= 16' }, - hasApi: true, - package: '@hapi/ammo', - }, - b64: { - compatibility: { 6: '>= 16' }, - hasApi: true, - package: '@hapi/b64', - }, - basic: { - compatibility: { 7: '>= 16' }, - hasApi: true, - isPlugin: true, - package: '@hapi/basic', - }, - bell: { - compatibility: { 13: '>= 16' }, - hasApi: true, - isPlugin: true, - package: '@hapi/bell', - }, - boom: { - compatibility: { 10: '>= 16' }, - hasApi: true, - package: '@hapi/boom', - }, - bossy: { - compatibility: { 5: '>= 16' }, - hasApi: true, - package: '@hapi/bossy', - }, - bounce: { - compatibility: { 3: '>= 16' }, - hasApi: true, - package: '@hapi/bounce', - }, - bourne: { - compatibility: { 3: '>= 16' }, - hasApi: true, - package: '@hapi/bourne', - }, - call: { - compatibility: { 9: '>= 16' }, - hasApi: true, - package: '@hapi/call', - }, - catbox: { - compatibility: { 12: '>= 16' }, - hasApi: true, - package: '@hapi/catbox', - }, - 'catbox-memcached': { - compatibility: { 4: '>= 16' }, - hasApi: true, - package: '@hapi/catbox-memcached', - }, - 'catbox-memory': { - compatibility: { 6: '>= 16' }, - hasApi: true, - package: '@hapi/catbox-memory', - }, - 'catbox-object': { - compatibility: { 3: '>= 16' }, - hasApi: true, - package: '@hapi/catbox-object', - }, - 'catbox-redis': { - compatibility: { 7: '>= 16' }, - hasApi: true, - isPlugin: true, - package: '@hapi/catbox-redis', - }, - code: { - compatibility: { 9: '>= 16' }, - hasApi: true, - package: '@hapi/code', - }, - content: { - compatibility: { 6: '>= 16' }, - hasApi: true, - package: '@hapi/content', - }, - cookie: { - compatibility: { 12: '>= 16' }, - hasApi: true, - isPlugin: true, - package: '@hapi/cookie', - }, - crumb: { - compatibility: { 9: '>= 16' }, - hasApi: true, - isPlugin: true, - package: '@hapi/crumb', - }, - cryptiles: { - compatibility: { 6: '>= 16' }, - hasApi: true, - package: '@hapi/cryptiles', - }, - 'eslint-plugin': { - compatibility: { 6: '>= 16' }, - hasApi: true, - package: '@hapi/eslint-plugin', - }, - file: { - compatibility: { 3: '>= 16' }, - hasApi: true, - package: '@hapi/file', - }, - glue: { - compatibility: { 9: '>= 16' }, - hasApi: true, - package: '@hapi/glue', - }, - h2o2: { - compatibility: { 10: '>= 16' }, - hasApi: true, - isPlugin: true, - package: '@hapi/h2o2', - }, - hapi: { - compatibility: { 20: '>= 16', 21: '>= 16' }, - hasApi: true, - package: '@hapi/hapi', - }, - heavy: { - compatibility: { 8: '>= 16' }, - hasApi: true, - package: '@hapi/heavy', - }, - hoek: { - compatibility: { 11: '>= 16' }, - hasApi: true, - package: '@hapi/hoek', - }, - inert: { - compatibility: { 7: '>= 16' }, - hasApi: true, - isPlugin: true, - package: '@hapi/inert', - }, - iron: { - compatibility: { 7: '>= 16' }, - hasApi: true, - package: '@hapi/iron', - }, - jwt: { - compatibility: { 3: '>= 16' }, - hasApi: true, - isPlugin: true, - package: '@hapi/jwt', - }, - lab: { - compatibility: { 25: '>= 16' }, - hasApi: true, - package: '@hapi/lab', - }, - log: { - compatibility: { 2: '>= 16' }, - hasApi: true, - isPlugin: true, - package: '@hapi/log', - }, - mimos: { - compatibility: { 7: '>= 16' }, - hasApi: true, - package: '@hapi/mimos', - }, - nes: { - compatibility: { 13: '>= 16' }, - hasApi: true, - isPlugin: true, - package: '@hapi/nes', - }, - nigel: { - compatibility: { 5: '>= 16' }, - package: '@hapi/nigel', - }, - oppsy: { - compatibility: { 3: '>= 16' }, - hasApi: true, - package: '@hapi/oppsy', - }, - pez: { - compatibility: { 6: '>= 16' }, - package: '@hapi/pez', - }, - podium: { - compatibility: { 5: '>= 16' }, - hasApi: true, - package: '@hapi/podium', - }, - scooter: { - compatibility: { 7: '>= 16' }, - hasApi: true, - isPlugin: true, - package: '@hapi/scooter', - }, - shot: { - compatibility: { 6: '>= 16' }, - hasApi: true, - package: '@hapi/shot', - }, - somever: { - compatibility: { 4: '>= 16' }, - package: '@hapi/somever', - }, - sse: { - compatibility: { 1: '>= 22' }, - hasApi: true, - isPlugin: true, - package: '@hapi/sse', - }, - statehood: { - compatibility: { 8: '>= 16' }, - package: '@hapi/statehood', - }, - subtext: { - compatibility: { 8: '>= 16' }, - hasApi: true, - package: '@hapi/subtext', - }, - teamwork: { - compatibility: { 6: '>= 16' }, - package: '@hapi/teamwork', - }, - topo: { - compatibility: { 6: '>= 16' }, - hasApi: true, - package: '@hapi/topo', - }, - vise: { - compatibility: { 5: '>= 16' }, - package: '@hapi/vise', - }, - vision: { - compatibility: { 7: '>= 16' }, - hasApi: true, - isPlugin: true, - package: '@hapi/vision', - }, - wreck: { - compatibility: { 18: '>= 16' }, - hasApi: true, - package: '@hapi/wreck', - }, - yar: { - compatibility: { 11: '>= 16' }, - hasApi: true, - isPlugin: true, - package: '@hapi/yar', - }, + accept: { + compatibility: { 6: '>= 16' }, + hasApi: true, + package: '@hapi/accept', + }, + ammo: { + compatibility: { 6: '>= 16' }, + hasApi: true, + package: '@hapi/ammo', + }, + b64: { + compatibility: { 6: '>= 16' }, + hasApi: true, + package: '@hapi/b64', + }, + basic: { + compatibility: { 7: '>= 16' }, + hasApi: true, + isPlugin: true, + package: '@hapi/basic', + }, + bell: { + compatibility: { 13: '>= 16' }, + hasApi: true, + isPlugin: true, + package: '@hapi/bell', + }, + boom: { + compatibility: { 10: '>= 16' }, + hasApi: true, + package: '@hapi/boom', + }, + bossy: { + compatibility: { 5: '>= 16' }, + hasApi: true, + package: '@hapi/bossy', + }, + bounce: { + compatibility: { 3: '>= 16' }, + hasApi: true, + package: '@hapi/bounce', + }, + bourne: { + compatibility: { 3: '>= 16' }, + hasApi: true, + package: '@hapi/bourne', + }, + call: { + compatibility: { 9: '>= 16' }, + hasApi: true, + package: '@hapi/call', + }, + catbox: { + compatibility: { 12: '>= 16' }, + hasApi: true, + package: '@hapi/catbox', + }, + 'catbox-memcached': { + compatibility: { 4: '>= 16' }, + hasApi: true, + package: '@hapi/catbox-memcached', + }, + 'catbox-memory': { + compatibility: { 6: '>= 16' }, + hasApi: true, + package: '@hapi/catbox-memory', + }, + 'catbox-object': { + compatibility: { 3: '>= 16' }, + hasApi: true, + package: '@hapi/catbox-object', + }, + 'catbox-redis': { + compatibility: { 7: '>= 16' }, + hasApi: true, + isPlugin: true, + package: '@hapi/catbox-redis', + }, + code: { + compatibility: { 9: '>= 16' }, + hasApi: true, + package: '@hapi/code', + }, + content: { + compatibility: { 6: '>= 16' }, + hasApi: true, + package: '@hapi/content', + }, + cookie: { + compatibility: { 12: '>= 16' }, + hasApi: true, + isPlugin: true, + package: '@hapi/cookie', + }, + crumb: { + compatibility: { 9: '>= 16' }, + hasApi: true, + isPlugin: true, + package: '@hapi/crumb', + }, + cryptiles: { + compatibility: { 6: '>= 16' }, + hasApi: true, + package: '@hapi/cryptiles', + }, + 'eslint-plugin': { + compatibility: { 6: '>= 16' }, + hasApi: true, + package: '@hapi/eslint-plugin', + }, + file: { + compatibility: { 3: '>= 16' }, + hasApi: true, + package: '@hapi/file', + }, + glue: { + compatibility: { 9: '>= 16' }, + hasApi: true, + package: '@hapi/glue', + }, + h2o2: { + compatibility: { 10: '>= 16' }, + hasApi: true, + isPlugin: true, + package: '@hapi/h2o2', + }, + hapi: { + compatibility: { 20: '>= 16', 21: '>= 16' }, + hasApi: true, + package: '@hapi/hapi', + }, + heavy: { + compatibility: { 8: '>= 16' }, + hasApi: true, + package: '@hapi/heavy', + }, + hoek: { + compatibility: { 11: '>= 16' }, + hasApi: true, + package: '@hapi/hoek', + }, + inert: { + compatibility: { 7: '>= 16' }, + hasApi: true, + isPlugin: true, + package: '@hapi/inert', + }, + iron: { + compatibility: { 7: '>= 16' }, + hasApi: true, + package: '@hapi/iron', + }, + jwt: { + compatibility: { 3: '>= 16' }, + hasApi: true, + isPlugin: true, + package: '@hapi/jwt', + }, + lab: { + compatibility: { 25: '>= 16' }, + hasApi: true, + package: '@hapi/lab', + }, + log: { + compatibility: { 2: '>= 16' }, + hasApi: true, + isPlugin: true, + package: '@hapi/log', + }, + mimos: { + compatibility: { 7: '>= 16' }, + hasApi: true, + package: '@hapi/mimos', + }, + nes: { + compatibility: { 13: '>= 16' }, + hasApi: true, + isPlugin: true, + package: '@hapi/nes', + }, + nigel: { + compatibility: { 5: '>= 16' }, + package: '@hapi/nigel', + }, + oppsy: { + compatibility: { 3: '>= 16' }, + hasApi: true, + package: '@hapi/oppsy', + }, + 'oxc-plugin': { + compatibility: { 1: '>= 22' }, + hasApi: true, + package: '@hapi/oxc-plugin', + }, + pez: { + compatibility: { 6: '>= 16' }, + package: '@hapi/pez', + }, + podium: { + compatibility: { 5: '>= 16' }, + hasApi: true, + package: '@hapi/podium', + }, + scooter: { + compatibility: { 7: '>= 16' }, + hasApi: true, + isPlugin: true, + package: '@hapi/scooter', + }, + shot: { + compatibility: { 6: '>= 16' }, + hasApi: true, + package: '@hapi/shot', + }, + somever: { + compatibility: { 4: '>= 16' }, + package: '@hapi/somever', + }, + sse: { + compatibility: { 1: '>= 22' }, + hasApi: true, + isPlugin: true, + package: '@hapi/sse', + }, + statehood: { + compatibility: { 8: '>= 16' }, + package: '@hapi/statehood', + }, + subtext: { + compatibility: { 8: '>= 16' }, + hasApi: true, + package: '@hapi/subtext', + }, + teamwork: { + compatibility: { 6: '>= 16' }, + package: '@hapi/teamwork', + }, + topo: { + compatibility: { 6: '>= 16' }, + hasApi: true, + package: '@hapi/topo', + }, + vise: { + compatibility: { 5: '>= 16' }, + package: '@hapi/vise', + }, + vision: { + compatibility: { 7: '>= 16' }, + hasApi: true, + isPlugin: true, + package: '@hapi/vision', + }, + wreck: { + compatibility: { 18: '>= 16' }, + hasApi: true, + package: '@hapi/wreck', + }, + yar: { + compatibility: { 11: '>= 16' }, + hasApi: true, + isPlugin: true, + package: '@hapi/yar', + }, }; diff --git a/cli/paths.ts b/cli/paths.ts index 269aa258..f4cd97bf 100644 --- a/cli/paths.ts +++ b/cli/paths.ts @@ -1,32 +1,32 @@ -import fs from 'node:fs/promises'; -import path from 'node:path'; +import Fs from 'node:fs/promises'; +import Path from 'node:path'; -export const GENERATED_DIR = path.join(import.meta.dirname, '../generated'); -export const API_DIR = path.join(import.meta.dirname, '../docs/api'); -export const MARKDOWN_DIR = path.join(GENERATED_DIR, 'markdown'); -export const POLICIES_GENERATED_DIR = path.join(MARKDOWN_DIR, 'policies'); -export const METADATA_DIR = path.join(GENERATED_DIR, 'metadata'); -export const MODULES_DIR = path.join(GENERATED_DIR, 'modules'); -export const PUBLIC_ATOM_DIR = path.join(import.meta.dirname, '../docs/public/atom'); +export const GENERATED_DIR = Path.join(import.meta.dirname, '../generated'); +export const API_DIR = Path.join(import.meta.dirname, '../docs/api'); +export const MARKDOWN_DIR = Path.join(GENERATED_DIR, 'markdown'); +export const POLICIES_GENERATED_DIR = Path.join(MARKDOWN_DIR, 'policies'); +export const METADATA_DIR = Path.join(GENERATED_DIR, 'metadata'); +export const MODULES_DIR = Path.join(GENERATED_DIR, 'modules'); +export const PUBLIC_ATOM_DIR = Path.join(import.meta.dirname, '../docs/public/atom'); export const getModuleMarkdownPath = (moduleName: string, major: string | number) => - path.join(MARKDOWN_DIR, moduleName, major.toString(), 'api.md'); + Path.join(MARKDOWN_DIR, moduleName, major.toString(), 'api.md'); export const getModuleMarkdownChangelogPath = (moduleName: string) => - path.join(MARKDOWN_DIR, moduleName, 'changelog.md'); + Path.join(MARKDOWN_DIR, moduleName, 'changelog.md'); -export const getModuleStoragePath = (moduleName: string) => path.join(MODULES_DIR, moduleName); +export const getModuleStoragePath = (moduleName: string) => Path.join(MODULES_DIR, moduleName); -export const getModuleInfoPath = (moduleName: string) => path.join(getModuleStoragePath(moduleName), 'info.json'); +export const getModuleInfoPath = (moduleName: string) => Path.join(getModuleStoragePath(moduleName), 'info.json'); export const getModuleChangelogPath = (moduleName: string) => - path.join(getModuleStoragePath(moduleName), 'changelog.json'); + Path.join(getModuleStoragePath(moduleName), 'changelog.json'); export const getExisting = async (filePath: string): Promise => { - try { - const content = await fs.readFile(filePath, 'utf8'); - return JSON.parse(content) as T; - } catch { - // Ignore error - } + try { + const content = await Fs.readFile(filePath, 'utf8'); + return JSON.parse(content) as T; + } catch { + // Ignore error + } }; diff --git a/cli/types.ts b/cli/types.ts index ee2738e6..4a91a203 100644 --- a/cli/types.ts +++ b/cli/types.ts @@ -1,83 +1,83 @@ export interface ChangelogItem { - id: number; - number: number; - version: string; - date: string; - url: string; - issues: { id: number; number: number; - title: string; + version: string; + date: string; url: string; - labels: string[]; - }[]; + issues: { + id: number; + number: number; + title: string; + url: string; + labels: string[]; + }[]; } export interface Milestone { - id: number; - number: number; - title: string; - closed_at: string; - html_url: string; + id: number; + number: number; + title: string; + closed_at: string; + html_url: string; } export interface Issue { - id: number; - number: number; - title: string; - html_url: string; - labels: { name: string }[]; + id: number; + number: number; + title: string; + html_url: string; + labels: { name: string }[]; } export interface VersionInfo { - nodeVersion: string; - fullVersion: string; - major: number; + nodeVersion: string; + fullVersion: string; + major: number; } export interface ModuleInfo { - name: string; - slogan: string; - sloganHtml: string; - forks: number; - stars: number; - updated: string; - link: string; - versions: { name: string; - branch: string; - license: string; - node: string; - }[]; - versionsArray: string[]; - latestVersion: string; - api: boolean; - isPlugin: boolean; - package: string; + slogan: string; + sloganHtml: string; + forks: number; + stars: number; + updated: string; + link: string; + versions: { + name: string; + branch: string; + license: string; + node: string; + }[]; + versionsArray: string[]; + latestVersion: string; + api: boolean; + isPlugin: boolean; + package: string; } export interface ModuleMetadata { - slogan: string; - sloganHtml: string; - link: string; - stars: number; - forks: number; - updated: string; - versionsArray: string[]; - latestVersion: string; - versions: { - name: string; - branch: string; - license: string; - node: string; - }[]; - isPlugin: boolean; - package: string; + slogan: string; + sloganHtml: string; + link: string; + stars: number; + forks: number; + updated: string; + versionsArray: string[]; + latestVersion: string; + versions: { + name: string; + branch: string; + license: string; + node: string; + }[]; + isPlugin: boolean; + package: string; } export interface ModuleSpec { - package: string; - compatibility: Record; - isPlugin?: boolean; - hasApi?: boolean; + package: string; + compatibility: Record; + isPlugin?: boolean; + hasApi?: boolean; } diff --git a/components/ApiOutline.vue b/components/ApiOutline.vue index 3b929344..88119be5 100644 --- a/components/ApiOutline.vue +++ b/components/ApiOutline.vue @@ -5,74 +5,74 @@ import { onMounted, ref } from 'vue'; const outline = ref(null); const onActiveChange = (mutations) => { - for (const { target, type, attributeName } of mutations) { - if ( - type === 'attributes' && - attributeName === 'class' && - target.classList.contains('active') && - target.classList.contains('outline-link') - ) { - target.scrollIntoView({ behavior: 'smooth', block: 'center' }); + for (const { target, type, attributeName } of mutations) { + if ( + type === 'attributes' && + attributeName === 'class' && + target.classList.contains('active') && + target.classList.contains('outline-link') + ) { + target.scrollIntoView({ behavior: 'smooth', block: 'center' }); + } } - } }; onMounted(() => { - outline.value = document.querySelector('.VPDocAsideOutline'); + outline.value = document.querySelector('.VPDocAsideOutline'); }); useMutationObserver(outline, onActiveChange, { - attributeFilter: ['class'], - subtree: true, + attributeFilter: ['class'], + subtree: true, }); diff --git a/components/CarbonAds.vue b/components/CarbonAds.vue index 27d75f40..04c794c2 100644 --- a/components/CarbonAds.vue +++ b/components/CarbonAds.vue @@ -5,103 +5,103 @@ import { onMounted, watch } from 'vue'; const route = useRoute(); const load = () => { - const script = document.createElement('script'); - script.id = '_carbonads_js'; - script.src = `//cdn.carbonads.com/carbon.js?serve=CEBIC53U&placement=hapidev`; - script.async = true; + const script = document.createElement('script'); + script.id = '_carbonads_js'; + script.src = `//cdn.carbonads.com/carbon.js?serve=CEBIC53U&placement=hapidev`; + script.async = true; - const container = document.querySelector('#carbon-ad'); - if (container) { - container.innerHTML = ''; - container.append(script); - } + const container = document.querySelector('#carbon-ad'); + if (container) { + container.innerHTML = ''; + container.append(script); + } }; onMounted(() => { - load(); + load(); }); watch( - () => route.path, - () => { - setTimeout(() => { - if ( - '_carbonads' in window && - window._carbonads && - typeof window._carbonads === 'object' && - 'refresh' in window._carbonads && - typeof window._carbonads.refresh === 'function' - ) { - window._carbonads.refresh(); - } else { - load(); - } - }, 0); - }, + () => route.path, + () => { + setTimeout(() => { + if ( + '_carbonads' in window && + window._carbonads && + typeof window._carbonads === 'object' && + 'refresh' in window._carbonads && + typeof window._carbonads.refresh === 'function' + ) { + window._carbonads.refresh(); + } else { + load(); + } + }, 0); + }, ); diff --git a/components/HomeContent.vue b/components/HomeContent.vue index b3fb457f..152594af 100644 --- a/components/HomeContent.vue +++ b/components/HomeContent.vue @@ -5,587 +5,614 @@ import SectionHead from './SectionHead.vue'; diff --git a/components/ModuleIndex.vue b/components/ModuleIndex.vue index 17035b6e..5162b7c4 100644 --- a/components/ModuleIndex.vue +++ b/components/ModuleIndex.vue @@ -1,145 +1,146 @@ diff --git a/components/PillarCard.vue b/components/PillarCard.vue index 9336fd48..6e50e322 100644 --- a/components/PillarCard.vue +++ b/components/PillarCard.vue @@ -1,90 +1,90 @@ diff --git a/components/PluginsDirectory.vue b/components/PluginsDirectory.vue index 5fe74ab6..1ea07fec 100644 --- a/components/PluginsDirectory.vue +++ b/components/PluginsDirectory.vue @@ -1,198 +1,197 @@ diff --git a/components/QuoteBlock.vue b/components/QuoteBlock.vue index 0e69163e..874e18de 100644 --- a/components/QuoteBlock.vue +++ b/components/QuoteBlock.vue @@ -1,125 +1,125 @@ diff --git a/components/SectionHead.vue b/components/SectionHead.vue index 7a495780..d55d5f84 100644 --- a/components/SectionHead.vue +++ b/components/SectionHead.vue @@ -1,72 +1,72 @@ diff --git a/components/StatusContent.vue b/components/StatusContent.vue index e816c7cc..05abc2ac 100644 --- a/components/StatusContent.vue +++ b/components/StatusContent.vue @@ -1,102 +1,102 @@ diff --git a/components/TutorialLang.vue b/components/TutorialLang.vue index 4da95c71..6c4114a8 100644 --- a/components/TutorialLang.vue +++ b/components/TutorialLang.vue @@ -1,15 +1,15 @@ diff --git a/docs/api/[version].paths.ts b/docs/api/[version].paths.ts index d1b2df9e..9421a05f 100644 --- a/docs/api/[version].paths.ts +++ b/docs/api/[version].paths.ts @@ -1,31 +1,31 @@ -import fs from 'node:fs'; -import path from 'node:path'; +import Fs from 'node:fs'; +import Path from 'node:path'; import { defineRoutes } from 'vitepress'; -import hapiInfo from '../../generated/modules/hapi/info.json' with { type: 'json' }; +import HapiInfo from '../../generated/modules/hapi/info.json' with { type: 'json' }; import type { ModuleInfo } from '../../cli/types.js'; export default defineRoutes({ - paths() { - const info = hapiInfo as ModuleInfo; + paths() { + const info = HapiInfo as ModuleInfo; - return info.versions.flatMap((versionInfo) => { - const major = parseInt(versionInfo.name.split('.')[0], 10); - const version = `${major}.x.x`; - const apiPath = path.resolve(`generated/markdown/hapi/${major}/api.md`); - if (!fs.existsSync(apiPath)) { - return []; - } - let content = fs.readFileSync(apiPath, 'utf8'); - content = content.replaceAll('{{', '{{').replaceAll('}}', '}}'); - return [ - { - content, - params: { fullVersion: versionInfo.name, version }, - }, - ]; - }); - }, + return info.versions.flatMap((versionInfo) => { + const major = parseInt(versionInfo.name.split('.')[0], 10); + const version = `${major}.x.x`; + const apiPath = Path.resolve(`generated/markdown/hapi/${major}/api.md`); + if (!Fs.existsSync(apiPath)) { + return []; + } + let content = Fs.readFileSync(apiPath, 'utf8'); + content = content.replaceAll('{{', '{{').replaceAll('}}', '}}'); + return [ + { + content, + params: { fullVersion: versionInfo.name, version }, + }, + ]; + }); + }, }); diff --git a/docs/module/[name]/api/[version].paths.ts b/docs/module/[name]/api/[version].paths.ts index 285cf8fc..d33d53cc 100644 --- a/docs/module/[name]/api/[version].paths.ts +++ b/docs/module/[name]/api/[version].paths.ts @@ -1,61 +1,61 @@ -import fs from 'node:fs'; -import path from 'node:path'; +import Fs from 'node:fs'; +import Path from 'node:path'; import { defineRoutes } from 'vitepress'; import { modules } from '../../../../cli/modules.js'; -import modulesData from '../../../../generated/metadata/modules.json' with { type: 'json' }; +import ModulesData from '../../../../generated/metadata/modules.json' with { type: 'json' }; import type { ModuleMetadata } from '../../../../cli/types.js'; const renderCompatibility = (info: ModuleMetadata) => { - let content = ` + let content = ` ### Compatibility | Major version | License | Node.js | | ------------- | ------- | ------- | `; - const versions = [...info.versions].toReversed(); - for (const v of versions) { - const [major] = v.name.split('.'); - content += `| ${major} | ${v.license} | ${v.node} |\n`; - } + const versions = [...info.versions].toReversed(); + for (const v of versions) { + const [major] = v.name.split('.'); + content += `| ${major} | ${v.license} | ${v.node} |\n`; + } - return content; + return content; }; export default defineRoutes({ - paths() { - const data = modulesData as Record; - return Object.keys(data) - .filter((name) => name !== 'hapi') - .flatMap((name: string) => { - const info = data[name]; - const hasApi = modules[name]?.hasApi ?? false; - - return info.versions.flatMap((versionInfo) => { - const major = parseInt(versionInfo.name.split('.')[0], 10); - const version = `${major}.x.x`; - - let content = `${info.slogan}\n${renderCompatibility(info)}`; - - if (hasApi) { - const apiPath = path.resolve(`generated/markdown/${name}/${major}/api.md`); - if (fs.existsSync(apiPath)) { - let apiContent = fs.readFileSync(apiPath, 'utf8'); - apiContent = apiContent.replaceAll('{{', '{{').replaceAll('}}', '}}'); - content += `\n${apiContent}`; - } - } - - return [ - { - content, - params: { fullVersion: versionInfo.name, name, package: info.package, version }, - }, - ]; - }); - }); - }, + paths() { + const data = ModulesData as Record; + return Object.keys(data) + .filter((name) => name !== 'hapi') + .flatMap((name: string) => { + const info = data[name]; + const hasApi = modules[name]?.hasApi ?? false; + + return info.versions.flatMap((versionInfo) => { + const major = parseInt(versionInfo.name.split('.')[0], 10); + const version = `${major}.x.x`; + + let content = `${info.slogan}\n${renderCompatibility(info)}`; + + if (hasApi) { + const apiPath = Path.resolve(`generated/markdown/${name}/${major}/api.md`); + if (Fs.existsSync(apiPath)) { + let apiContent = Fs.readFileSync(apiPath, 'utf8'); + apiContent = apiContent.replaceAll('{{', '{{').replaceAll('}}', '}}'); + content += `\n${apiContent}`; + } + } + + return [ + { + content, + params: { fullVersion: versionInfo.name, name, package: info.package, version }, + }, + ]; + }); + }); + }, }); diff --git a/docs/module/[name]/changelog.paths.ts b/docs/module/[name]/changelog.paths.ts index f94e2c2b..1ffbbdfb 100644 --- a/docs/module/[name]/changelog.paths.ts +++ b/docs/module/[name]/changelog.paths.ts @@ -1,26 +1,26 @@ -import fs from 'node:fs'; -import path from 'node:path'; +import Fs from 'node:fs'; +import Path from 'node:path'; import { defineRoutes } from 'vitepress'; -import modulesData from '../../../generated/metadata/modules.json' with { type: 'json' }; +import ModulesData from '../../../generated/metadata/modules.json' with { type: 'json' }; import type { ModuleMetadata } from '../../../cli/types.js'; export default defineRoutes({ - paths() { - return Object.keys(modulesData as Record) - .filter((name) => name !== 'hapi') - .filter((name) => { - const changelogPath = path.resolve(`generated/markdown/${name}/changelog.md`); - return fs.existsSync(changelogPath); - }) - .map((name: string) => { - const content = fs.readFileSync(path.resolve(`generated/markdown/${name}/changelog.md`), 'utf8'); - return { - content, - params: { name }, - }; - }); - }, + paths() { + return Object.keys(ModulesData as Record) + .filter((name) => name !== 'hapi') + .filter((name) => { + const changelogPath = Path.resolve(`generated/markdown/${name}/changelog.md`); + return Fs.existsSync(changelogPath); + }) + .map((name: string) => { + const content = Fs.readFileSync(Path.resolve(`generated/markdown/${name}/changelog.md`), 'utf8'); + return { + content, + params: { name }, + }; + }); + }, }); diff --git a/docs/public/atom/content.atom b/docs/public/atom/content.atom index 3b06a33d..02b7c640 100644 --- a/docs/public/atom/content.atom +++ b/docs/public/atom/content.atom @@ -2,11 +2,27 @@ https://hapi.dev/module/content @hapi/content changelog - 2022-05-24T01:54:39.000Z + 2026-05-06T08:40:35.000Z https://github.com/jpmonette/feed https://hapi.dev/img/logo.png https://hapi.dev/favicon.png + + <![CDATA[@hapi/content v6.0.2]]> + https://github.com/hapijs/content/milestone/18 + + 2026-05-06T08:40:35.000Z + +
  • [#39] fix: error on duplicate parameters
  • ]]>
    +
    + + <![CDATA[@hapi/content v6.0.1]]> + https://github.com/hapijs/content/milestone/17 + + 2026-05-06T08:40:33.000Z + +
  • [#38] fix: protect regex from redos
  • ]]>
    +
    <![CDATA[@hapi/content v6.0.0]]> https://github.com/hapijs/content/milestone/16 diff --git a/docs/public/atom/h2o2.atom b/docs/public/atom/h2o2.atom index fb3d1176..567cd1d8 100644 --- a/docs/public/atom/h2o2.atom +++ b/docs/public/atom/h2o2.atom @@ -2,11 +2,19 @@ https://hapi.dev/module/h2o2 @hapi/h2o2 changelog - 2023-08-10T16:31:37.000Z + 2026-06-17T08:22:08.000Z https://github.com/jpmonette/feed https://hapi.dev/img/logo.png https://hapi.dev/favicon.png + + <![CDATA[@hapi/h2o2 v10.0.4]]> + https://github.com/hapijs/h2o2/milestone/24 + + 2026-06-17T08:22:08.000Z + +
  • [#138] fix: forward 405 Allow header
  • ]]>
    +
    <![CDATA[@hapi/h2o2 v10.0.3]]> https://github.com/hapijs/h2o2/milestone/23 diff --git a/docs/public/atom/hapi.atom b/docs/public/atom/hapi.atom index 26c7466f..efc0d67c 100644 --- a/docs/public/atom/hapi.atom +++ b/docs/public/atom/hapi.atom @@ -2,11 +2,19 @@ https://hapi.dev @hapi/hapi changelog - 2026-04-02T08:29:10.000Z + 2026-05-06T10:37:52.000Z https://github.com/jpmonette/feed https://hapi.dev/img/logo.png https://hapi.dev/favicon.png + + <![CDATA[@hapi/hapi v21.4.9]]> + https://github.com/hapijs/hapi/milestone/330 + + 2026-05-06T10:37:52.000Z + +
  • [#4577] chore: bump dependencies
  • ]]>
    +
    <![CDATA[@hapi/hapi v21.4.8]]> https://github.com/hapijs/hapi/milestone/329 @@ -399,12 +407,4 @@
  • [#4018] Override request.url in setUrl()
  • ]]>
    - - <![CDATA[@hapi/hapi v19.0.0]]> - https://github.com/hapijs/hapi/milestone/254 - - 2020-01-10T04:22:19.000Z - -
  • [#4017] 19.0.0 Release Notes
  • [#4015] Do not override request.payload if set manually in onRequest
  • [#4013] Use private class fields
  • [#4012] Drop node 10
  • [#4011] Change scoped plugins name handling
  • [#4006] server.validator()
  • [#4002] fix(auth): properly populate request.auth on failed auth
  • [#4000] auth scheme artifacts are dropped when mode is not 'try'
  • [#3996] Decorate requests with symbols with apply=true
  • [#3995] Fix ? in fragment part
  • [#3987] Support SameSite=None for cookies
  • [#3977] Remove request queue (options.load.concurrent)
  • [#3976] Update hapijs/joi to 16.0.1 from 15.1.1
  • [#3920] Change routes.payload.multipart to false by default
  • [#3919] Change emptyStatusCode to 204 by default
  • [#3910] Drop support for node v8
  • ]]>
    -
    \ No newline at end of file diff --git a/docs/public/atom/jwt.atom b/docs/public/atom/jwt.atom index 7c4d829a..a8e4b907 100644 --- a/docs/public/atom/jwt.atom +++ b/docs/public/atom/jwt.atom @@ -2,11 +2,19 @@ https://hapi.dev/module/jwt @hapi/jwt changelog - 2025-12-09T17:13:05.000Z + 2026-06-12T08:53:52.000Z https://github.com/jpmonette/feed https://hapi.dev/img/logo.png https://hapi.dev/favicon.png + + <![CDATA[@hapi/jwt v3.2.4]]> + https://github.com/hapijs/jwt/milestone/19 + + 2026-06-12T08:53:52.000Z + +
  • [#61] chore: bump dependencies
  • ]]>
    +
    <![CDATA[@hapi/jwt v3.2.2]]> https://github.com/hapijs/jwt/milestone/18 diff --git a/docs/public/atom/oxc-plugin.atom b/docs/public/atom/oxc-plugin.atom new file mode 100644 index 00000000..b57a2c4f --- /dev/null +++ b/docs/public/atom/oxc-plugin.atom @@ -0,0 +1,26 @@ + + + https://hapi.dev/module/oxc-plugin + @hapi/oxc-plugin changelog + 2026-06-10T16:59:41.000Z + https://github.com/jpmonette/feed + + https://hapi.dev/img/logo.png + https://hapi.dev/favicon.png + + <![CDATA[@hapi/oxc-plugin v1.0.1]]> + https://github.com/hapijs/oxc-plugin/milestone/2 + + 2026-06-10T16:59:41.000Z + +
  • [#4] fix: vitest's oxc plugin default exclude
  • ]]>
    +
    + + <![CDATA[@hapi/oxc-plugin v1.0.0]]> + https://github.com/hapijs/oxc-plugin/milestone/1 + + 2026-06-10T16:59:39.000Z + +
  • [#3] feat: initial implementation of oxc rules
  • ]]>
    +
    +
    \ No newline at end of file diff --git a/docs/public/atom/shot.atom b/docs/public/atom/shot.atom index 1173dd1d..14f771fc 100644 --- a/docs/public/atom/shot.atom +++ b/docs/public/atom/shot.atom @@ -2,11 +2,19 @@ https://hapi.dev/module/shot @hapi/shot changelog - 2025-08-13T22:35:10.000Z + 2026-05-27T07:19:05.000Z https://github.com/jpmonette/feed https://hapi.dev/img/logo.png https://hapi.dev/favicon.png + + <![CDATA[@hapi/shot v6.0.3]]> + https://github.com/hapijs/shot/milestone/56 + + 2026-05-27T07:19:05.000Z + +
  • [#153] Fix stream payload error handling
  • [#152] Fix missing close emits
  • ]]>
    +
    <![CDATA[@hapi/shot v6.0.2]]> https://github.com/hapijs/shot/milestone/55 @@ -399,12 +407,4 @@
  • [#11] Bring coverage back to 100%
  • ]]>
    - - <![CDATA[@hapi/shot v1.3.2]]> - https://github.com/hapijs/shot/milestone/3 - - 2014-03-08T19:47:41.000Z - -
  • [#10] Bring coverage back to 100% after lab fix
  • ]]>
    -
    \ No newline at end of file diff --git a/docs/public/atom/sse.atom b/docs/public/atom/sse.atom index 6dd54c61..94b2a6ef 100644 --- a/docs/public/atom/sse.atom +++ b/docs/public/atom/sse.atom @@ -2,11 +2,19 @@ https://hapi.dev/module/sse @hapi/sse changelog - 2026-04-07T22:13:58.000Z + 2026-05-20T15:45:22.000Z https://github.com/jpmonette/feed https://hapi.dev/img/logo.png https://hapi.dev/favicon.png + + <![CDATA[@hapi/sse v1.1.0]]> + https://github.com/hapijs/sse/milestone/2 + + 2026-05-20T15:45:22.000Z + +
  • [#5] feat: add refuse() calculator and session.complete()
  • ]]>
    +
    <![CDATA[@hapi/sse v1.0.0]]> https://github.com/hapijs/sse/milestone/1 diff --git a/docs/public/atom/subtext.atom b/docs/public/atom/subtext.atom index 564059f7..ef568609 100644 --- a/docs/public/atom/subtext.atom +++ b/docs/public/atom/subtext.atom @@ -2,11 +2,19 @@ https://hapi.dev/module/subtext @hapi/subtext changelog - 2026-04-02T08:19:32.000Z + 2026-05-06T10:28:10.000Z https://github.com/jpmonette/feed https://hapi.dev/img/logo.png https://hapi.dev/favicon.png + + <![CDATA[@hapi/subtext v8.1.3]]> + https://github.com/hapijs/subtext/milestone/59 + + 2026-05-06T10:28:10.000Z + +
  • [#106] chore: bump dependencies
  • ]]>
    +
    <![CDATA[@hapi/subtext v8.1.2]]> https://github.com/hapijs/subtext/milestone/58 @@ -399,12 +407,4 @@
  • [#21] Missing dependency qs@4.x.x?
  • [#20] 2.0.2 tag
  • ]]>
    - - <![CDATA[@hapi/subtext v2.0.1]]> - https://github.com/hapijs/subtext/milestone/6 - - 2015-10-30T10:35:00.000Z - -
  • [#18] upgrade to lab 6 and cleanup
  • [#17] testing different file sizes to get full code coverage
  • [#16] Test coverage timing issue
  • [#15] Move API docs to its own page
  • [#14] Move API docs to their own page
  • [#13] Update README with example and docs
  • ]]>
    -
    \ No newline at end of file diff --git a/docs/public/atom/wreck.atom b/docs/public/atom/wreck.atom index da9319e8..4148eddf 100644 --- a/docs/public/atom/wreck.atom +++ b/docs/public/atom/wreck.atom @@ -2,11 +2,27 @@ https://hapi.dev/module/wreck @hapi/wreck changelog - 2024-04-10T17:38:08.000Z + 2026-05-20T10:27:25.000Z https://github.com/jpmonette/feed https://hapi.dev/img/logo.png https://hapi.dev/favicon.png + + <![CDATA[@hapi/wreck v18.1.2]]> + https://github.com/hapijs/wreck/milestone/80 + + 2026-05-20T10:27:25.000Z + +
  • [#313] fix: cross-origin redirect should also remove sensitive headers
  • ]]>
    +
    + + <![CDATA[@hapi/wreck v18.1.1]]> + https://github.com/hapijs/wreck/milestone/79 + + 2026-05-06T09:49:00.000Z + +
  • [#312] fix: strip proxy-authorization header on redirect
  • ]]>
    +
    <![CDATA[@hapi/wreck v18.1.0]]> https://github.com/hapijs/wreck/milestone/78 @@ -391,20 +407,4 @@
  • [#119] Update deps and fix tests
  • [#118] Add tests for defaults
  • [#117] Wreck#request's options are overridden by Defaults
  • ]]>
    - - <![CDATA[@hapi/wreck v7.0.0]]> - https://github.com/hapijs/wreck/milestone/25 - - 2015-10-31T19:41:15.000Z - -
  • [#109] ES6 style and node v4
  • ]]>
    -
    - - <![CDATA[@hapi/wreck v6.3.0]]> - https://github.com/hapijs/wreck/milestone/24 - - 2015-09-25T17:43:36.000Z - -
  • [#108] Add a beforeRedirect callback option
  • [#106] Fix code coverage
  • [#105] Workaround node issue in test
  • [#104] Fails on node v4
  • ]]>
    -
    \ No newline at end of file diff --git a/docs/resources/index.md b/docs/resources/index.md index 56237f36..5645a5d2 100644 --- a/docs/resources/index.md +++ b/docs/resources/index.md @@ -1,12 +1,12 @@ --- layout: false head: - - - meta - - http-equiv: refresh - content: 0; url=/resources/changelog - - - script - - {} - - "window.location.replace('/resources/changelog');" + - - meta + - http-equiv: refresh + content: 0; url=/resources/changelog + - - script + - {} + - "window.location.replace('/resources/changelog');" --- Redirecting to Changelog... diff --git a/docs/resources/list.md b/docs/resources/list.md index 57ed23bf..4d42042b 100644 --- a/docs/resources/list.md +++ b/docs/resources/list.md @@ -6,27 +6,27 @@ title: Resources - [Practical Hapi](https://www.amazon.com/Practical-hapi-Build-Industry-Studies/dp/1484258045) - This book walks you through an end to end implementation of hapi, nodejs and asynchronous programming, right through Node JS Event Loop, Rest API best practices, Hapi Server Setup, Routing, Post and Get Requests with Payload and Parameters, Database Connectivity, Sequelize, Validation, Plugin Architecture, npm repository and its optimum use, swaggerui Integration, Postman tricks, Tricks and Tips for Neater Code, Constructs like await, fetch etc., Nodemon and much much more!!!! A capstone project with industry level challenges is what takes the cake in explaining Hapi in context. The framework is a great choice since it was tried and tested for high production demands and is backed by the best. With further releases coming, this framework is here to stay and is certainly an addition to your skills. + This book walks you through an end to end implementation of hapi, nodejs and asynchronous programming, right through Node JS Event Loop, Rest API best practices, Hapi Server Setup, Routing, Post and Get Requests with Payload and Parameters, Database Connectivity, Sequelize, Validation, Plugin Architecture, npm repository and its optimum use, swaggerui Integration, Postman tricks, Tricks and Tips for Neater Code, Constructs like await, fetch etc., Nodemon and much much more!!!! A capstone project with industry level challenges is what takes the cake in explaining Hapi in context. The framework is a great choice since it was tried and tested for high production demands and is backed by the best. With further releases coming, this framework is here to stay and is certainly an addition to your skills. - [Developing a hapi Edge](http://www.amazon.com/Developing-hapi-Edge-Framework-Services-ebook/dp/B013CWI3MY) - This book shows you how to build enterprise-quality web applications using the hapi service and application framework. By walking through the creation of a real web application, hapi-plugins.com, you will learn how to configure and start hapi, build out APIs, perform authentication, validation, caching, and so much more. You will also discover tips and tricks used in production hapi deployments regarding plugins, testing, debugging, and security. hapi was developed and is used within Walmart and has been battle tested during the most critical days of the year for e-commerce websites, Black Friday. It has proven itself to not only handle extremely high production loads at a breeze but is also a pleasure to work with. The aim of the framework was to address pitfalls in the other established out there, and it has done so without fail. + This book shows you how to build enterprise-quality web applications using the hapi service and application framework. By walking through the creation of a real web application, hapi-plugins.com, you will learn how to configure and start hapi, build out APIs, perform authentication, validation, caching, and so much more. You will also discover tips and tricks used in production hapi deployments regarding plugins, testing, debugging, and security. hapi was developed and is used within Walmart and has been battle tested during the most critical days of the year for e-commerce websites, Black Friday. It has proven itself to not only handle extremely high production loads at a breeze but is also a pleasure to work with. The aim of the framework was to address pitfalls in the other established out there, and it has done so without fail. - [Getting Started with hapi.js](https://www.packtpub.com/web-development/getting-started-hapijs) - This book introduces hapi.js and walks through the creation of your first working application using the out-of-the-box features hapi.js provides. Packed with real-world problems and examples, this book covers some of the basic concepts of hapi.js and Node.js and takes you through the typical journey you'll face when developing an application. Starting with easier concepts such as routing requests, building APIs serving JSON, using templates to build websites and applications, and connecting databases, we then move on to more complex problems such as authentication, model validation, caching, and techniques for structuring your codebase to scale gracefully. You will also develop skills to ensure your application's reliability through testing, code coverage, and logging. By the end of this book, you'll be equipped with all the skills you need to build your first fully featured application. This book will be invaluable if you are investigating Node.js frameworks or planning on using hapi.js in your next project. + This book introduces hapi.js and walks through the creation of your first working application using the out-of-the-box features hapi.js provides. Packed with real-world problems and examples, this book covers some of the basic concepts of hapi.js and Node.js and takes you through the typical journey you'll face when developing an application. Starting with easier concepts such as routing requests, building APIs serving JSON, using templates to build websites and applications, and connecting databases, we then move on to more complex problems such as authentication, model validation, caching, and techniques for structuring your codebase to scale gracefully. You will also develop skills to ensure your application's reliability through testing, code coverage, and logging. By the end of this book, you'll be equipped with all the skills you need to build your first fully featured application. This book will be invaluable if you are investigating Node.js frameworks or planning on using hapi.js in your next project. - [hapi.js in Action](http://manning.com/harrison) - Packed with examples, this book takes you from your first simple server through the skills you'll need to build a complete application. In it, you'll learn how to build websites and APIs, implement caching, authentication, validation, error handling, and a lot more. You'll also explore vital techniques for production applications, such as testing, monitoring, deployment, and documentation. + Packed with examples, this book takes you from your first simple server through the skills you'll need to build a complete application. In it, you'll learn how to build websites and APIs, implement caching, authentication, validation, error handling, and a lot more. You'll also explore vital techniques for production applications, such as testing, monitoring, deployment, and documentation. - [hapi with TypeScript](http://hapibook.jjude.com) - This book introduces TypeScript into developing web applications with hapi. TypeScript, a language developed by Microsoft, brings the benefits of strong types and object-oriented programming to JavaScript. With ample code samples, this book teaches all aspects of developing a web application in hapi with TypeScript. It also introduces, hapidock, a docker container with all required components for developing in hapi. With hapidock, you can develop and test hapi applications in a production-like environment. Through this book, you will learn to build stable enterprise-level server applications. The book is free to read at http://hapibook.jjude.com. E-books (pdf, mobi, and epub) and fully executable code samples are available after purchase. + This book introduces TypeScript into developing web applications with hapi. TypeScript, a language developed by Microsoft, brings the benefits of strong types and object-oriented programming to JavaScript. With ample code samples, this book teaches all aspects of developing a web application in hapi with TypeScript. It also introduces, hapidock, a docker container with all required components for developing in hapi. With hapidock, you can develop and test hapi applications in a production-like environment. Through this book, you will learn to build stable enterprise-level server applications. The book is free to read at http://hapibook.jjude.com. E-books (pdf, mobi, and epub) and fully executable code samples are available after purchase. - [Hapi.js Handbook](https://leanpub.com/hapi-handbook) - This handbook is a collection of tutorials for Hapi.js framework. You can find tutorials about validation, working with 3rd plugins, sending/getting data, template engines, integrations with DB and etc. + This handbook is a collection of tutorials for Hapi.js framework. You can find tutorials about validation, working with 3rd plugins, sending/getting data, template engines, integrations with DB and etc. ## Boilerplates {#boilerplates} diff --git a/docs/tutorials/en_US/auth.md b/docs/tutorials/en_US/auth.md index 17a40a8d..ad221ca6 100644 --- a/docs/tutorials/en_US/auth.md +++ b/docs/tutorials/en_US/auth.md @@ -64,9 +64,9 @@ The `name` parameter must be a string, and will be used later to identify this s ```js server.auth.strategy('session', 'cookie', { - name: 'sid-example', - password: '!wsYhFA*C2U6nz=Bu^%A@^F#SF3&kSR6', - isSecure: false, + name: 'sid-example', + password: '!wsYhFA*C2U6nz=Bu^%A@^F#SF3&kSR6', + isSecure: false, }); ``` @@ -111,47 +111,47 @@ const Bcrypt = require('bcrypt'); const Hapi = require('@hapi/hapi'); const users = { - john: { - username: 'john', - password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' - name: 'John Doe', - id: '2133d32a', - }, + john: { + username: 'john', + password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' + name: 'John Doe', + id: '2133d32a', + }, }; const validate = async (request, username, password) => { - const user = users[username]; - if (!user) { - return { credentials: null, isValid: false }; - } + const user = users[username]; + if (!user) { + return { credentials: null, isValid: false }; + } - const isValid = await Bcrypt.compare(password, user.password); - const credentials = { id: user.id, name: user.name }; + const isValid = await Bcrypt.compare(password, user.password); + const credentials = { id: user.id, name: user.name }; - return { isValid, credentials }; + return { isValid, credentials }; }; const start = async () => { - const server = Hapi.server({ port: 4000 }); + const server = Hapi.server({ port: 4000 }); - await server.register(require('@hapi/basic')); + await server.register(require('@hapi/basic')); - server.auth.strategy('simple', 'basic', { validate }); + server.auth.strategy('simple', 'basic', { validate }); - server.route({ - method: 'GET', - path: '/', - options: { - auth: 'simple', - }, - handler: function (request, h) { - return 'welcome'; - }, - }); + server.route({ + method: 'GET', + path: '/', + options: { + auth: 'simple', + }, + handler: function (request, h) { + return 'welcome'; + }, + }); - await server.start(); + await server.start(); - console.log('server running at: ' + server.info.uri); + console.log('server running at: ' + server.info.uri); }; start(); @@ -178,52 +178,52 @@ const Bcrypt = require('bcrypt'); const Hapi = require('@hapi/hapi'); const users = [ - { - username: 'john', - password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' - name: 'John Doe', - id: '2133d32a', - }, + { + username: 'john', + password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' + name: 'John Doe', + id: '2133d32a', + }, ]; const start = async () => { - const server = Hapi.server({ port: 4000 }); + const server = Hapi.server({ port: 4000 }); - await server.register(require('@hapi/cookie')); + await server.register(require('@hapi/cookie')); - server.auth.strategy('session', 'cookie', { - cookie: { - name: 'sid-example', - password: '!wsYhFA*C2U6nz=Bu^%A@^F#SF3&kSR6', - isSecure: false, - }, - redirectTo: '/login', - validate: async (request, session) => { - const account = await users.find((user) => user.id === session.id); + server.auth.strategy('session', 'cookie', { + cookie: { + name: 'sid-example', + password: '!wsYhFA*C2U6nz=Bu^%A@^F#SF3&kSR6', + isSecure: false, + }, + redirectTo: '/login', + validate: async (request, session) => { + const account = await users.find((user) => user.id === session.id); - if (!account) { - return { isValid: false }; - } + if (!account) { + return { isValid: false }; + } - return { isValid: true, credentials: account }; - }, - }); + return { isValid: true, credentials: account }; + }, + }); - server.auth.default('session'); + server.auth.default('session'); - server.route([ - { - method: 'GET', - path: '/', - handler: function (request, h) { - return 'Welcome to the restricted home page!'; - }, - }, - { - method: 'GET', - path: '/login', - handler: function (request, h) { - return ` + server.route([ + { + method: 'GET', + path: '/', + handler: function (request, h) { + return 'Welcome to the restricted home page!'; + }, + }, + { + method: 'GET', + path: '/login', + handler: function (request, h) { + return ` Login page @@ -235,37 +235,37 @@ const start = async () => { `; - }, - options: { - auth: false, - }, - }, - { - method: 'POST', - path: '/login', - handler: async (request, h) => { - const { username, password } = request.payload; - const account = users.find((user) => user.username === username); - - if (!account || !(await Bcrypt.compare(password, account.password))) { - return h.redirect('/login'); - } - - request.cookieAuth.set({ id: account.id }); - - return h.redirect('/'); - }, - options: { - auth: { - mode: 'try', + }, + options: { + auth: false, + }, }, - }, - }, - ]); + { + method: 'POST', + path: '/login', + handler: async (request, h) => { + const { username, password } = request.payload; + const account = users.find((user) => user.username === username); + + if (!account || !(await Bcrypt.compare(password, account.password))) { + return h.redirect('/login'); + } + + request.cookieAuth.set({ id: account.id }); + + return h.redirect('/'); + }, + options: { + auth: { + mode: 'try', + }, + }, + }, + ]); - await server.start(); + await server.start(); - console.log('server running at: ' + server.info.uri); + console.log('server running at: ' + server.info.uri); }; start(); diff --git a/docs/tutorials/en_US/caching.md b/docs/tutorials/en_US/caching.md index 28b753e6..1f18171d 100644 --- a/docs/tutorials/en_US/caching.md +++ b/docs/tutorials/en_US/caching.md @@ -26,23 +26,23 @@ Let's see how you can set this header in hapi: ```javascript server.route({ - path: '/hapi/{ttl?}', - method: 'GET', - handler: function (request, h) { - const response = h.response({ be: 'hapi' }); - - if (request.params.ttl) { - response.ttl(request.params.ttl); - } - - return response; - }, - options: { - cache: { - expiresIn: 30 * 1000, - privacy: 'private', + path: '/hapi/{ttl?}', + method: 'GET', + handler: function (request, h) { + const response = h.response({ be: 'hapi' }); + + if (request.params.ttl) { + response.ttl(request.params.ttl); + } + + return response; + }, + options: { + cache: { + expiresIn: 30 * 1000, + privacy: 'private', + }, }, - }, }); ``` @@ -104,22 +104,22 @@ const Hapi = require('@hapi/hapi'); const CatboxRedis = require('@hapi/catbox-redis'); const server = Hapi.server({ - port: 8000, - cache: [ - { - name: 'my_cache', - provider: { - constructor: CatboxRedis, - options: { - partition: 'my_cached_data', - host: 'redis-cluster.domain.com', - port: 6379, - database: 0, - tls: {}, + port: 8000, + cache: [ + { + name: 'my_cache', + provider: { + constructor: CatboxRedis, + options: { + partition: 'my_cached_data', + host: 'redis-cluster.domain.com', + port: 6379, + database: 0, + tls: {}, + }, + }, }, - }, - }, - ], + ], }); ``` @@ -131,38 +131,38 @@ In the above example, you defined a new catbox client, `my_cache`. Including the ```javascript const start = async () => { - const server = Hapi.server(); + const server = Hapi.server(); - const add = async (a, b) => { - await Hoek.wait(1000); // Simulate some slow I/O + const add = async (a, b) => { + await Hoek.wait(1000); // Simulate some slow I/O - return Number(a) + Number(b); - }; + return Number(a) + Number(b); + }; - const sumCache = server.cache({ - cache: 'my_cache', - expiresIn: 10 * 1000, - segment: 'customSegment', - generateFunc: async (id) => { - return await add(id.a, id.b); - }, - generateTimeout: 2000, - }); + const sumCache = server.cache({ + cache: 'my_cache', + expiresIn: 10 * 1000, + segment: 'customSegment', + generateFunc: async (id) => { + return await add(id.a, id.b); + }, + generateTimeout: 2000, + }); - server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: async function (request, h) { - const { a, b } = request.params; - const id = `${a}:${b}`; + server.route({ + path: '/add/{a}/{b}', + method: 'GET', + handler: async function (request, h) { + const { a, b } = request.params; + const id = `${a}:${b}`; - return await sumCache.get({ id, a, b }); - }, - }); + return await sumCache.get({ id, a, b }); + }, + }); - await server.start(); + await server.start(); - console.log('Server running at:', server.info.uri); + console.log('Server running at:', server.info.uri); }; start(); @@ -192,26 +192,26 @@ But it can get better than that! In 95% cases you will use server methods for ca ```javascript const start = async () => { - const server = Hapi.server(); + const server = Hapi.server(); - server.method('sum', add, { - cache: { - cache: 'my_cache', - expiresIn: 10 * 1000, - generateTimeout: 2000, - }, - }); - - server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: async function (request, h) { - const { a, b } = request.params; - return await server.methods.sum(a, b); - }, - }); + server.method('sum', add, { + cache: { + cache: 'my_cache', + expiresIn: 10 * 1000, + generateTimeout: 2000, + }, + }); + + server.route({ + path: '/add/{a}/{b}', + method: 'GET', + handler: async function (request, h) { + const { a, b } = request.params; + return await server.methods.sum(a, b); + }, + }); - await server.start(); + await server.start(); }; start(); @@ -227,30 +227,30 @@ An example of server-side and client-side caching working together is using the ```javascript const start = async () => { - const server = Hapi.server(); - - server.method('sum', add, { - cache: { - cache: 'my_cache', - expiresIn: 10 * 1000, - generateTimeout: 2000, - getDecoratedValue: true, - }, - }); + const server = Hapi.server(); + + server.method('sum', add, { + cache: { + cache: 'my_cache', + expiresIn: 10 * 1000, + generateTimeout: 2000, + getDecoratedValue: true, + }, + }); - server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: async function (request, h) { - const { a, b } = request.params; - const { value, cached } = await server.methods.sum(a, b); - const lastModified = cached ? new Date(cached.stored) : new Date(); + server.route({ + path: '/add/{a}/{b}', + method: 'GET', + handler: async function (request, h) { + const { a, b } = request.params; + const { value, cached } = await server.methods.sum(a, b); + const lastModified = cached ? new Date(cached.stored) : new Date(); - return h.response(value).header('Last-modified', lastModified.toUTCString()); - }, - }); + return h.response(value).header('Last-modified', lastModified.toUTCString()); + }, + }); - await server.start(); + await server.start(); }; ``` diff --git a/docs/tutorials/en_US/community.md b/docs/tutorials/en_US/community.md index 606d4b38..181f790d 100644 --- a/docs/tutorials/en_US/community.md +++ b/docs/tutorials/en_US/community.md @@ -8,50 +8,50 @@ title: Community - [Authentication and Authorization with hapi](https://medium.com/@poeticninja/authentication-and-authorization-with-hapi-5529b5ecc8ec) - Article on how to secure your hapi application. + Article on how to secure your hapi application. - [Building a Chat Application with hapi.js, Socket.io and Redis](https://github.com/dwyl/hapi-socketio-redis-chat-example) - Real-time chat application built using hapi.js, Socket.io and Redis Pub/Sub with end-to-end tests. + Real-time chat application built using hapi.js, Socket.io and Redis Pub/Sub with end-to-end tests. - [Building a modern backend with TypeScript, Hapi, PostgreSQL and Prisma](https://www.prisma.io/blog/series/modern-backend-bdes2ps5kibb) - A series of live streams and articles on building a backend with TypeScript, Hapi, PostgreSQL, and Prisma. - The series covers data modeling, CRUD, aggregations, REST, validation with Joi, testing, authentication, authorization, integration with other APIs, continuous integration and deployment with GitHub Actions and Heroku. - The series explores and demonstrates different patterns, problems, and architectures for a modern backend by solving a concrete problem: a grading system for online courses. This is a good example because it features diverse relations types and is complex enough to represent a real-world use case. + A series of live streams and articles on building a backend with TypeScript, Hapi, PostgreSQL, and Prisma. + The series covers data modeling, CRUD, aggregations, REST, validation with Joi, testing, authentication, authorization, integration with other APIs, continuous integration and deployment with GitHub Actions and Heroku. + The series explores and demonstrates different patterns, problems, and architectures for a modern backend by solving a concrete problem: a grading system for online courses. This is a good example because it features diverse relations types and is complex enough to represent a real-world use case. - [Handling plugin dependencies](https://hapipal.com/best-practices/handling-plugin-dependencies) - In celebration of hapi plugin boundaries, here we offer a concrete approach to taming inter-plugin dependencies. + In celebration of hapi plugin boundaries, here we offer a concrete approach to taming inter-plugin dependencies. - [hapi tutorial series (30+ tutorials)](https://futurestud.io/tutorials/hapi-get-your-server-up-and-running) - This in-depth tutorial series on hapi covers route setup, authentication, plugins, request & response handling, and much more. + This in-depth tutorial series on hapi covers route setup, authentication, plugins, request & response handling, and much more. - [hapi.js tutorials covering various topics](https://content.nanobox.io/tag/hapi.js/) - A growing list of tutorials covering hapi.js application development, deployment, optimization, and production management (scaling, monitoring, etc.). + A growing list of tutorials covering hapi.js application development, deployment, optimization, and production management (scaling, monitoring, etc.). - [How to create a REST API with hapi](http://blog.webkid.io/how-to-create-a-rest-api-with-hapi/) - Tutorial about how to create a RESTful API with the Plugins Dogwater (Waterline ORM) and Bedwetter. + Tutorial about how to create a RESTful API with the Plugins Dogwater (Waterline ORM) and Bedwetter. - [The joys of server / plugin separation](https://hapipal.com/best-practices/server-plugin-separation) - The joyful act of decoupling your application plugin from its deployment will make your hapi app more portable and simpler to test. + The joyful act of decoupling your application plugin from its deployment will make your hapi app more portable and simpler to test. - [rate-limiter-flexible-plugin-example](https://github.com/animir/node-rate-limiter-flexible/wiki/Hapi-plugin) - Plugin example of rate limiting and DDoS protection with rate-limiter-flexible package + Plugin example of rate limiting and DDoS protection with rate-limiter-flexible package - [Run hapi.js on Google Cloud Platform](https://cloud.google.com/nodejs/resources/frameworks/hapi) - Tutorial and cloneable sample app showing how to create and deploy a hapi.js application on Google App Engine. + Tutorial and cloneable sample app showing how to create and deploy a hapi.js application on Google App Engine. - [Catbox-Redis and Cookie Auth Example](https://github.com/johnmanko/catbox-redis-example) - Demonstrate how to use @hapi/catbox-redis and @hapi/cookie. + Demonstrate how to use @hapi/catbox-redis and @hapi/cookie. - [WittCode's Hapi Tutorial Series](https://youtube.com/playlist?list=PLkqiWyX-_LotaQ9AuppIAXl0xyV-P5Ms-) - 10 videos starting from creating a Hapi server, adding routes, plugins, through to using Sequelize/MySQL and cookie authentication. + 10 videos starting from creating a Hapi server, adding routes, plugins, through to using Sequelize/MySQL and cookie authentication. diff --git a/docs/tutorials/en_US/cookies.md b/docs/tutorials/en_US/cookies.md index cb0e31ca..a1a24212 100644 --- a/docs/tutorials/en_US/cookies.md +++ b/docs/tutorials/en_US/cookies.md @@ -24,12 +24,12 @@ Please note that the default settings for `options` is good for most cases and d ```javascript server.state('data', { - ttl: null, - isSecure: true, - isHttpOnly: true, - encoding: 'base64json', - clearInvalid: true, - strictHeader: true, + ttl: null, + isSecure: true, + isHttpOnly: true, + encoding: 'base64json', + clearInvalid: true, + strictHeader: true, }); ``` @@ -53,12 +53,12 @@ Please note that configurations to cookies on the route-level are in addition to ```json5 { - options: { - state: { - parse: true, - failAction: 'error', + options: { + state: { + parse: true, + failAction: 'error', + }, }, - }, } ``` @@ -76,12 +76,12 @@ You set a cookie by calling [`h.state(name, value, [options]`]() ```javascript server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - h.state('data', { firstVisit: false }); - return h.response('Hello'); - }, + method: 'GET', + path: '/', + handler: function (request, h) { + h.state('data', { firstVisit: false }); + return h.response('Hello'); + }, }); ``` diff --git a/docs/tutorials/en_US/express-to-hapi.md b/docs/tutorials/en_US/express-to-hapi.md index 6f05f415..9e4b2480 100644 --- a/docs/tutorials/en_US/express-to-hapi.md +++ b/docs/tutorials/en_US/express-to-hapi.md @@ -41,13 +41,13 @@ hapi: const Hapi = require('@hapi/hapi'); const init = async () => { - const server = Hapi.server({ - port: 3000, - host: 'localhost', - }); + const server = Hapi.server({ + port: 3000, + host: 'localhost', + }); - await server.start(); - console.log('Server running on port 3000'); + await server.start(); + console.log('Server running on port 3000'); }; init(); @@ -65,7 +65,7 @@ Express: ```js app.get('/hello', function (req, res) { - res.send('Hello World!'); + res.send('Hello World!'); }); ``` @@ -73,11 +73,11 @@ hapi: ```js server.route({ - method: 'GET', - path: '/hello', - handler: (request, h) => { - return 'Hello World!'; - }, + method: 'GET', + path: '/hello', + handler: (request, h) => { + return 'Hello World!'; + }, }); ``` @@ -89,11 +89,11 @@ hapi can use all the route methods that Express can, except `HEAD`. hapi also ha ```js server.route({ - method: ['PUT', 'POST'], - path: '/', - handler: function (request, h) { - return 'I did something!'; - }, + method: ['PUT', 'POST'], + path: '/', + handler: function (request, h) { + return 'I did something!'; + }, }); ``` @@ -113,8 +113,8 @@ Express: ```js app.get('/hello/:name', function (req, res) { - const name = req.params.name; - res.send('Hello ' + name); + const name = req.params.name; + res.send('Hello ' + name); }); ``` @@ -122,12 +122,12 @@ hapi: ```js server.route({ - method: 'GET', - path: '/hello/{name}', - handler: function (request, h) { - const name = request.params.name; - return 'Hello ' + name; - }, + method: 'GET', + path: '/hello/{name}', + handler: function (request, h) { + const name = request.params.name; + return 'Hello ' + name; + }, }); ``` @@ -143,7 +143,7 @@ Express: ```js app.get('/home', function (req, res) { - res.redirect('/'); + res.redirect('/'); }); ``` @@ -151,11 +151,11 @@ hapi: ```js server.route({ - method: 'GET', - path: '/home', - handler: function (request, h) { - return h.redirect('/'); - }, + method: 'GET', + path: '/home', + handler: function (request, h) { + return h.redirect('/'); + }, }); ``` @@ -163,18 +163,18 @@ Both routes will redirect to the `'/'` route. Express uses the response method ` ```js server.route({ - method: 'GET', - path: '/user', - handler: function (request, h) { - const user = { - firstName: 'John', - lastName: 'Doe', - userName: 'JohnDoe', - id: 123, - }; - - return user; - }, + method: 'GET', + path: '/user', + handler: function (request, h) { + const user = { + firstName: 'John', + lastName: 'Doe', + userName: 'JohnDoe', + id: 123, + }; + + return user; + }, }); ``` @@ -194,8 +194,8 @@ hapi has 7 extension points along the request lifecycle. In order, they are `onR ```js server.ext('onRequest', function (request, h) { - request.setUrl('/test'); - return h.continue; + request.setUrl('/test'); + return h.continue; }); ``` @@ -209,12 +209,12 @@ Express: ```js const getDate = function (req, res, next) { - req.getDate = function () { - const date = new Date(); - return date; - }; + req.getDate = function () { + const date = new Date(); + return date; + }; - next(); + next(); }; ``` @@ -222,16 +222,16 @@ hapi: ```js const getDate = { - name: 'getDate', - version: '1.0.0', - register: async function (server, options) { - const currentDate = function () { - const date = new Date(); - return date; - }; - - server.decorate('toolkit', 'getDate', currentDate); - }, + name: 'getDate', + version: '1.0.0', + register: async function (server, options) { + const currentDate = function () { + const date = new Date(); + return date; + }; + + server.decorate('toolkit', 'getDate', currentDate); + }, }; ``` @@ -251,7 +251,7 @@ hapi: ```js await server.register({ - plugin: getDate, + plugin: getDate, }); ``` @@ -265,14 +265,14 @@ Express: ```js module.exports = function (options) { - return function getDate(req, res, next) { - req.getDate = function () { - const date = 'Hello ' + options.name + ', the date is ' + new Date(); - return date; - }; + return function getDate(req, res, next) { + req.getDate = function () { + const date = 'Hello ' + options.name + ', the date is ' + new Date(); + return date; + }; - next(); - }; + next(); + }; }; ``` @@ -280,16 +280,16 @@ hapi: ```js const getDate = { - name: 'getDate', - version: '1.0.0', - register: async function (server, options) { - const currentDate = function () { - const date = 'Hello ' + options.name + ', the date is ' + new Date(); - return date; - }; - - server.decorate('toolkit', 'getDate', currentDate); - }, + name: 'getDate', + version: '1.0.0', + register: async function (server, options) { + const currentDate = function () { + const date = 'Hello ' + options.name + ', the date is ' + new Date(); + return date; + }; + + server.decorate('toolkit', 'getDate', currentDate); + }, }; ``` @@ -307,10 +307,10 @@ hapi: ```js server.register({ - plugin: getDate, - options: { - name: 'Tom', - }, + plugin: getDate, + options: { + name: 'Tom', + }, }); ``` @@ -326,8 +326,8 @@ var bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({ extend: true })); app.post('/hello', function (req, res) { - var name = req.body.name; - res.send('Hello ' + name); + var name = req.body.name; + res.send('Hello ' + name); }); ``` @@ -335,12 +335,12 @@ hapi: ```js server.route({ - method: 'POST', - path: '/hello', - handler: function (request, h) { - const name = request.payload.name; - return `Hello ` + name; - }, + method: 'POST', + path: '/hello', + handler: function (request, h) { + const name = request.payload.name; + return `Hello ` + name; + }, }); ``` @@ -362,9 +362,9 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 8000 }); server.state('data', { - ttl: null, - isSecure: true, - isHttpOnly: true, + ttl: null, + isSecure: true, + isHttpOnly: true, }); ``` @@ -382,8 +382,8 @@ var cookieParser = require('cookie-parser'); app.use(cookieParser()); app.get('/', function (req, res) { - res.cookie('username', 'tom', { maxAge: null, secure: true, httpOnly: true }); - res.send('Hello'); + res.cookie('username', 'tom', { maxAge: null, secure: true, httpOnly: true }); + res.send('Hello'); }); ``` @@ -395,18 +395,18 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 8000 }); server.state('username', { - ttl: null, - isSecure: true, - isHttpOnly: true, + ttl: null, + isSecure: true, + isHttpOnly: true, }); server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - h.state('username', 'tom'); - return h.response('Hello'); - }, + method: 'GET', + path: '/', + handler: function (request, h) { + h.state('username', 'tom'); + return h.response('Hello'); + }, }); ``` @@ -440,18 +440,18 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 8000 }); server.state('username', { - ttl: null, - isSecure: true, - isHttpOnly: true, + ttl: null, + isSecure: true, + isHttpOnly: true, }); server.route({ - method: 'GET', - path: '/', - handler: async (request, h) => { - h.state('username', 'tom'); - return h.response(request.state.username); - }, + method: 'GET', + path: '/', + handler: async (request, h) => { + h.state('username', 'tom'); + return h.response(request.state.username); + }, }); ``` @@ -516,34 +516,34 @@ const server = Hapi.server({ port: 8000 }); await server.register(Bell); server.auth.strategy('twitter', 'bell', { - provider: 'twitter', - password: 'cookie_encryption_password_secure', - clientId: TWITTER_CONSUMER_KEY, - clientSecret: TWITTER_CONSUMER_SECRET, - isSecure: false, + provider: 'twitter', + password: 'cookie_encryption_password_secure', + clientId: TWITTER_CONSUMER_KEY, + clientSecret: TWITTER_CONSUMER_SECRET, + isSecure: false, }); server.route({ - method: '*', - path: '/auth/twitter', // The callback endpoint registered with the provider - handler: function (request, h) { - if (!request.auth.isAuthenticated) { - return `Authentication failed due to: ${request.auth.error.message}`; - } + method: '*', + path: '/auth/twitter', // The callback endpoint registered with the provider + handler: function (request, h) { + if (!request.auth.isAuthenticated) { + return `Authentication failed due to: ${request.auth.error.message}`; + } - // Perform any account lookup or registration, setup local session, - // and redirect to the application. The third-party credentials are - // stored in request.auth.credentials. Any query parameters from - // the initial request are passed back via request.auth.credentials.query. - - return h.redirect('/home'); - }, - options: { - auth: { - strategy: 'twitter', - mode: 'try', + // Perform any account lookup or registration, setup local session, + // and redirect to the application. The third-party credentials are + // stored in request.auth.credentials. Any query parameters from + // the initial request are passed back via request.auth.credentials.query. + + return h.redirect('/home'); + }, + options: { + auth: { + strategy: 'twitter', + mode: 'try', + }, }, - }, }); ``` @@ -584,14 +584,14 @@ app.use(bodyParser.urlencoded({ extended: true })); app.use(expressValidator()); app.post('/post', function (req, res) { - req.check('post', 'Post too long').isLength({ max: 140 }); + req.check('post', 'Post too long').isLength({ max: 140 }); - let errors = req.validationErrors(); - if (errors) { - res.status(400).send(errors); - } else { - res.send('Blog post added!'); - } + let errors = req.validationErrors(); + if (errors) { + res.status(400).send(errors); + } else { + res.send('Blog post added!'); + } }); ``` @@ -607,18 +607,18 @@ npm install joi const Joi = require('joi'); server.route({ - method: 'POST', - path: '/post', - handler: (request, h) => { - return 'Blog post added!'; - }, - options: { - validate: { - payload: Joi.object({ - post: Joi.string().max(140), - }), + method: 'POST', + path: '/post', + handler: (request, h) => { + return 'Blog post added!'; + }, + options: { + validate: { + payload: Joi.object({ + post: Joi.string().max(140), + }), + }, }, - }, }); ``` @@ -636,25 +636,25 @@ hapi: ```js const bookSchema = Joi.object({ - title: Joi.string().required(), - author: Joi.string().required(), - isbn: Joi.string().length(10), - pageCount: Joi.number(), - datePublished: Joi.date().iso(), + title: Joi.string().required(), + author: Joi.string().required(), + isbn: Joi.string().length(10), + pageCount: Joi.number(), + datePublished: Joi.date().iso(), }); server.route({ - method: 'GET', - path: '/books', - handler: async function (request, h) { - return await getBooks(); - }, - options: { - response: { - schema: Joi.array().items(bookSchema), - failAction: 'log', + method: 'GET', + path: '/books', + handler: async function (request, h) { + return await getBooks(); + }, + options: { + response: { + schema: Joi.array().items(bookSchema), + failAction: 'log', + }, }, - }, }); ``` @@ -678,11 +678,11 @@ To set the views engine in hapi, you first must register the vision plugin, then await server.register(require('@hapi/vision')); server.views({ - engines: { - pug: require('pug'), - }, - relativeTo: __dirname, - path: 'views', + engines: { + pug: require('pug'), + }, + relativeTo: __dirname, + path: 'views', }); ``` @@ -697,7 +697,7 @@ First, rendering a view in Express: ```js app.get('/', function (req, res) { - res.render('index', { title: 'Homepage', message: 'Welcome' }); + res.render('index', { title: 'Homepage', message: 'Welcome' }); }); ``` @@ -705,11 +705,11 @@ Using `h.view` in hapi: ```js server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return h.view('index', { title: 'Homepage', message: 'Welcome' }); - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return h.view('index', { title: 'Homepage', message: 'Welcome' }); + }, }); ``` @@ -717,17 +717,17 @@ And using the view handler in hapi: ```js server.route({ - method: 'GET', - path: '/', - handler: { - view: { - template: 'index', - context: { - title: 'Homepage', - message: 'Welcome', - }, + method: 'GET', + path: '/', + handler: { + view: { + template: 'index', + context: { + title: 'Homepage', + message: 'Welcome', + }, + }, }, - }, }); ``` @@ -745,7 +745,7 @@ Express: ```js app.get('/image', function (req, res) { - res.sendFile('image.jpg', { root: './public' }); + res.sendFile('image.jpg', { root: './public' }); }); ``` @@ -753,22 +753,22 @@ hapi with `h.file()`: ```js const server = new Hapi.Server({ - port: 3000, - routes: { - files: { - relativeTo: Path.join(__dirname, 'public'), + port: 3000, + routes: { + files: { + relativeTo: Path.join(__dirname, 'public'), + }, }, - }, }); await server.register(require('@hapi/inert')); server.route({ - method: 'GET', - path: '/image', - handler: function (request, h) { - return h.file('image.jpg'); - }, + method: 'GET', + path: '/image', + handler: function (request, h) { + return h.file('image.jpg'); + }, }); ``` @@ -776,22 +776,22 @@ hapi with file handler: ```js const server = new Hapi.Server({ - port: 3000, - routes: { - files: { - relativeTo: Path.join(__dirname, 'public'), + port: 3000, + routes: { + files: { + relativeTo: Path.join(__dirname, 'public'), + }, }, - }, }); await server.register(require('@hapi/inert')); server.route({ - method: 'GET', - path: '/image', - handler: { - file: 'image.jpg', - }, + method: 'GET', + path: '/image', + handler: { + file: 'image.jpg', + }, }); ``` @@ -811,24 +811,24 @@ hapi: ```js const server = new Hapi.Server({ - port: 3000, - routes: { - files: { - relativeTo: Path.join(__dirname, 'public'), + port: 3000, + routes: { + files: { + relativeTo: Path.join(__dirname, 'public'), + }, }, - }, }); await server.register(require('@hapi/inert')); server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: '.', + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: '.', + }, }, - }, }); ``` @@ -848,9 +848,9 @@ hapi: ```json { - "statusCode": 404, - "error": "Not Found", - "message": "Not Found" + "statusCode": 404, + "error": "Not Found", + "message": "Not Found" } ``` diff --git a/docs/tutorials/en_US/getting-started.md b/docs/tutorials/en_US/getting-started.md index 8d4d2967..c6077ba3 100644 --- a/docs/tutorials/en_US/getting-started.md +++ b/docs/tutorials/en_US/getting-started.md @@ -32,18 +32,18 @@ A very basic hapi server looks like the following: const Hapi = require('@hapi/hapi'); const init = async () => { - const server = Hapi.server({ - port: 3000, - host: 'localhost', - }); + const server = Hapi.server({ + port: 3000, + host: 'localhost', + }); - await server.start(); - console.log('Server running on %s', server.info.uri); + await server.start(); + console.log('Server running on %s', server.info.uri); }; process.on('unhandledRejection', (err) => { - console.log(err); - process.exit(1); + console.log(err); + process.exit(1); }); init(); @@ -65,26 +65,26 @@ After you get the server up and running, its time to add a route that will displ const Hapi = require('@hapi/hapi'); const init = async () => { - const server = Hapi.server({ - port: 3000, - host: 'localhost', - }); - - server.route({ - method: 'GET', - path: '/', - handler: (request, h) => { - return 'Hello World!'; - }, - }); - - await server.start(); - console.log('Server running on %s', server.info.uri); + const server = Hapi.server({ + port: 3000, + host: 'localhost', + }); + + server.route({ + method: 'GET', + path: '/', + handler: (request, h) => { + return 'Hello World!'; + }, + }); + + await server.start(); + console.log('Server running on %s', server.info.uri); }; process.on('unhandledRejection', (err) => { - console.log(err); - process.exit(1); + console.log(err); + process.exit(1); }); init(); diff --git a/docs/tutorials/en_US/logging.md b/docs/tutorials/en_US/logging.md index 0646c6a3..38393d6e 100644 --- a/docs/tutorials/en_US/logging.md +++ b/docs/tutorials/en_US/logging.md @@ -28,12 +28,12 @@ For example: ```js server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - request.log('error', 'Event error'); - return 'Hello World'; - }, + method: 'GET', + path: '/', + handler: function (request, h) { + request.log('error', 'Event error'); + return 'Hello World'; + }, }); ``` @@ -60,9 +60,9 @@ The hapi server object emits events for each log event. You can use the standard ```js server.events.on('log', (event, tags) => { - if (tags.error) { - console.log(`Server error: ${event.error ? event.error.message : 'unknown'}`); - } + if (tags.error) { + console.log(`Server error: ${event.error ? event.error.message : 'unknown'}`); + } }); ``` @@ -72,16 +72,16 @@ You can retrieve all logs for a particular request at once via `request.logs`. T ```js server.route({ - method: 'GET', - path: '/', - options: { - log: { - collect: true, + method: 'GET', + path: '/', + options: { + log: { + collect: true, + }, + }, + handler: function (request, h) { + return 'hello'; }, - }, - handler: function (request, h) { - return 'hello'; - }, }); ``` diff --git a/docs/tutorials/en_US/plugins.md b/docs/tutorials/en_US/plugins.md index 0fcc1268..71c316c5 100644 --- a/docs/tutorials/en_US/plugins.md +++ b/docs/tutorials/en_US/plugins.md @@ -22,22 +22,22 @@ A very simple plugin looks like: 'use strict'; const myPlugin = { - name: 'myPlugin', - version: '1.0.0', - register: async function (server, options) { - // Create a route for example - - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'hello, world'; - }, - }); - - // etc ... - await someAsyncMethods(); - }, + name: 'myPlugin', + version: '1.0.0', + register: async function (server, options) { + // Create a route for example + + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'hello, world'; + }, + }); + + // etc ... + await someAsyncMethods(); + }, }; ``` @@ -49,21 +49,21 @@ To write a plugin as an external module, you can specify a `pkg` property: 'use strict'; exports.plugin = { - pkg: require('./package.json'), - register: async function (server, options) { - // Create a route for example - - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'hello, world'; - }, - }); - - // etc... - await someAsyncMethods(); - }, + pkg: require('./package.json'), + register: async function (server, options) { + // Create a route for example + + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'hello, world'; + }, + }); + + // etc... + await someAsyncMethods(); + }, }; ``` @@ -89,22 +89,22 @@ The `options` parameter is simply whatever options the user passes to your plugi 'use strict'; exports.plugin = { - pkg: require('./package.json'), - register: async function (server, options) { - // Create a route for example - - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - const name = options.name; - return `Hello ${name}`; - }, - }); - - // etc... - await someAsyncMethods(); - }, + pkg: require('./package.json'), + register: async function (server, options) { + // Create a route for example + + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + const name = options.name; + return `Hello ${name}`; + }, + }); + + // etc... + await someAsyncMethods(); + }, }; ``` @@ -112,12 +112,12 @@ Here, you grab a name from the `options` object via `options.name`. You then use ```javascript const start = async function () { - await server.register({ - plugin: require('myplugin'), - options: { - name: 'Bob', - }, - }); + await server.register({ + plugin: require('myplugin'), + options: { + name: 'Bob', + }, + }); }; ``` @@ -129,15 +129,15 @@ Plugins can be loaded one at a time, or as a group in an array, by the `server.r ```javascript const start = async function () { - const server = Hapi.server(); + const server = Hapi.server(); - // load one plugin + // load one plugin - await server.register(require('myplugin')); + await server.register(require('myplugin')); - // load multiple plugins + // load multiple plugins - await server.register([require('myplugin'), require('yourplugin')]); + await server.register([require('myplugin'), require('yourplugin')]); }; ``` @@ -145,14 +145,14 @@ To pass options to your plugin, we instead pass an object with `plugin` and `opt ```javascript const start = async function () { - const server = Hapi.server(); + const server = Hapi.server(); - await server.register({ - plugin: require('myplugin'), - options: { - message: 'hello', - }, - }); + await server.register({ + plugin: require('myplugin'), + options: { + message: 'hello', + }, + }); }; ``` @@ -160,18 +160,18 @@ These objects can also be passed in an array: ```javascript const start = async function () { - const server = Hapi.server(); - - await server.register([ - { - plugin: require('plugin1'), - options: {}, - }, - { - plugin: require('plugin2'), - options: {}, - }, - ]); + const server = Hapi.server(); + + await server.register([ + { + plugin: require('plugin1'), + options: {}, + }, + { + plugin: require('plugin2'), + options: {}, + }, + ]); }; ``` @@ -187,19 +187,19 @@ For example, let's say we have a plugin that looks like this: 'use strict'; exports.plugin = { - pkg: require('./package.json'), - register: async function (server, options) { - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'test passed'; - }, - }); - - // etc... - await someAsyncMethods(); - }, + pkg: require('./package.json'), + register: async function (server, options) { + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'test passed'; + }, + }); + + // etc... + await someAsyncMethods(); + }, }; ``` @@ -207,13 +207,13 @@ Normally, when this plugin is loaded it will create a `GET` route at `/test`. Th ```javascript const start = async function () { - const server = Hapi.server(); + const server = Hapi.server(); - await server.register(require('myplugin'), { - routes: { - prefix: '/plugins', - }, - }); + await server.register(require('myplugin'), { + routes: { + prefix: '/plugins', + }, + }); }; ``` diff --git a/docs/tutorials/en_US/routing.md b/docs/tutorials/en_US/routing.md index 6a346899..924ca4e8 100644 --- a/docs/tutorials/en_US/routing.md +++ b/docs/tutorials/en_US/routing.md @@ -14,11 +14,11 @@ When defining a route in hapi, you need three basic elements: the path, the meth ```js server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return 'Hello World!'; - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return 'Hello World!'; + }, }); ``` @@ -28,11 +28,11 @@ The route above responds to a `GET` request to `/` with the string `Hello World! ```js server.route({ - method: ['PUT', 'POST'], - path: '/', - handler: function (request, h) { - return 'I did something!'; - }, + method: ['PUT', 'POST'], + path: '/', + handler: function (request, h) { + return 'I did something!'; + }, }); ``` @@ -42,11 +42,11 @@ The path option must be a string, though it can contain named parameters. To nam ```js server.route({ - method: 'GET', - path: '/hello/{user}', - handler: function (request, h) { - return `Hello ${request.params.user}!`; - }, + method: 'GET', + path: '/hello/{user}', + handler: function (request, h) { + return `Hello ${request.params.user}!`; + }, }); ``` @@ -64,13 +64,13 @@ In the above example, the user parameter is required: a request to `/hello/bob` ```js server.route({ - method: 'GET', - path: '/hello/{user?}', - handler: function (request, h) { - const user = request.params.user ? request.params.user : 'stranger'; + method: 'GET', + path: '/hello/{user?}', + handler: function (request, h) { + const user = request.params.user ? request.params.user : 'stranger'; - return `Hello ${user}!`; - }, + return `Hello ${user}!`; + }, }); ``` @@ -82,13 +82,13 @@ Along with optional path parameters, you can also allow parameters that match mu ```js server.route({ - method: 'GET', - path: '/hello/{user*2}', - handler: function (request, h) { - const userParts = request.params.user.split('/'); + method: 'GET', + path: '/hello/{user*2}', + handler: function (request, h) { + const userParts = request.params.user.split('/'); - return `Hello ${userParts[0]} ${userParts[1]}!`; - }, + return `Hello ${userParts[0]} ${userParts[1]}!`; + }, }); ``` @@ -106,11 +106,11 @@ There are two query parameters here, `name=ferris` and `location=chicago`. In ha ```js server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return `Hello ${request.query.name}!`; - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return `Hello ${request.query.name}!`; + }, }); ``` @@ -120,11 +120,11 @@ For more complex query structures, you may opt to use the `qs` module. Consider ```js server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return request.query; - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return request.query; + }, }); ``` @@ -137,29 +137,29 @@ const Hapi = require('@hapi/hapi'); const Qs = require('qs'); const server = Hapi.server({ - port: 3000, - host: 'localhost', - query: { - parser: (query) => Qs.parse(query), - }, + port: 3000, + host: 'localhost', + query: { + parser: (query) => Qs.parse(query), + }, }); server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return request.query; - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return request.query; + }, }); const init = async () => { - await server.start(); - console.log('Server running on %s', server.info.uri); + await server.start(); + console.log('Server running on %s', server.info.uri); }; process.on('unhandledRejection', (err) => { - console.log(err); - process.exit(1); + console.log(err); + process.exit(1); }); init(); @@ -187,13 +187,13 @@ Anytime you send request data to your API, you will be able to access this data ```js server.route({ - method: 'POST', - path: '/signup', - handler: function (request, h) { - const payload = request.payload; + method: 'POST', + path: '/signup', + handler: function (request, h) { + const payload = request.payload; - return `Welcome ${payload.username}!`; - }, + return `Welcome ${payload.username}!`; + }, }); ``` @@ -225,22 +225,22 @@ Here we will look at some options of validating with Joi. ```js server.route({ - method: 'POST', - path: '/signup', - handler: function (request, h) { - const payload = request.payload; - - return `Welcome ${payload.username}!`; - }, - options: { - auth: false, - validate: { - payload: { - username: Joi.string().min(1).max(20), - password: Joi.string().min(7), - }, + method: 'POST', + path: '/signup', + handler: function (request, h) { + const payload = request.payload; + + return `Welcome ${payload.username}!`; + }, + options: { + auth: false, + validate: { + payload: { + username: Joi.string().min(1).max(20), + password: Joi.string().min(7), + }, + }, }, - }, }); ``` @@ -260,21 +260,21 @@ const Hapi = require('@hapi/hapi'); const internals = {}; const init = async () => { - const server = Hapi.server({ - port: 3000, - host: 'localhost', - }); - - server.route({ - method: '*', - path: '/{any*}', - handler: function (request, h) { - return h.response('404 Error! Page Not Found!').code(404); - }, - }); - - await server.start(); - console.log('Server running on %s', server.info.uri); + const server = Hapi.server({ + port: 3000, + host: 'localhost', + }); + + server.route({ + method: '*', + path: '/{any*}', + handler: function (request, h) { + return h.response('404 Error! Page Not Found!').code(404); + }, + }); + + await server.start(); + console.log('Server running on %s', server.info.uri); }; init(); diff --git a/docs/tutorials/en_US/server-methods.md b/docs/tutorials/en_US/server-methods.md index 94bab809..2c7de925 100644 --- a/docs/tutorials/en_US/server-methods.md +++ b/docs/tutorials/en_US/server-methods.md @@ -18,7 +18,7 @@ The first way to call `server.method()` is with the signature `server.method(nam ```js const add = function (x, y) { - return x + y; + return x + y; }; server.method('add', add, {}); @@ -30,13 +30,13 @@ The second way to call `server.method()` is with the signature `server.method(me ```js const add = function (x, y) { - return x + y; + return x + y; }; server.method({ - name: 'add', - method: add, - options: {}, + name: 'add', + method: add, + options: {}, }); ``` @@ -58,8 +58,8 @@ The `method` parameter is the actual function to call when the method is invoked ```js const add = async function (x, y) { - const result = await someLongRunningFunction(x, y); - return result; + const result = await someLongRunningFunction(x, y); + return result; }; server.method('add', add, {}); @@ -77,13 +77,13 @@ A major advantage of server methods is that they may leverage hapi's native cach ```javascript server.method('add', add, { - cache: { - expiresIn: 60000, - expiresAt: '20:30', - staleIn: 30000, - staleTimeout: 10000, - generateTimeout: 100, - }, + cache: { + expiresIn: 60000, + expiresAt: '20:30', + staleIn: 30000, + staleTimeout: 10000, + generateTimeout: 100, + }, }); ``` @@ -103,18 +103,18 @@ You can override the `ttl` (time-to-live) of a server method result per-invocati ```js const add = async function (x, y, flags) { - const result = await someLongRunningFunction(x, y); + const result = await someLongRunningFunction(x, y); - flags.ttl = 5 * 60 * 1000; // 5 mins + flags.ttl = 5 * 60 * 1000; // 5 mins - return result; + return result; }; server.method('add', add, { - cache: { - expiresIn: 2000, - generateTimeout: 100, - }, + cache: { + expiresIn: 2000, + generateTimeout: 100, + }, }); ``` @@ -126,17 +126,17 @@ In addition to the above options, you may also define a custom function used to ```javascript const sum = function (array) { - let total = 0; + let total = 0; - array.forEach((item) => { - total += item; - }); + array.forEach((item) => { + total += item; + }); - return total; + return total; }; server.method('sum', sum, { - generateKey: (array) => array.join(','), + generateKey: (array) => array.join(','), }); ``` @@ -148,9 +148,9 @@ The last option available to server methods is `bind`. The `bind` option changes ```javascript const lookup = async function (id) { - // calls myDB.getOne + // calls myDB.getOne - return await this.getOne({ id }); + return await this.getOne({ id }); }; server.method('lookup', lookup, { bind: myDB }); @@ -162,13 +162,13 @@ To call the server methods we registered above, you would use `server.methods()` ```js const add = function (x, y) { - return x + y; + return x + y; }; server.method({ - name: 'add', - method: add, - options: {}, + name: 'add', + method: add, + options: {}, }); ``` diff --git a/docs/tutorials/en_US/serving-files.md b/docs/tutorials/en_US/serving-files.md index 9c0953af..63343368 100644 --- a/docs/tutorials/en_US/serving-files.md +++ b/docs/tutorials/en_US/serving-files.md @@ -31,27 +31,27 @@ const Hapi = require('@hapi/hapi'); const Path = require('path'); const start = async () => { - const server = Hapi.server({ - routes: { - files: { - relativeTo: Path.join(__dirname, 'public'), - }, - }, - }); - - await server.register(require('@hapi/inert')); - - server.route({ - method: 'GET', - path: '/picture.jpg', - handler: function (request, h) { - return h.file('picture.jpg'); - }, - }); - - await server.start(); - - console.log('Server running at:', server.info.uri); + const server = Hapi.server({ + routes: { + files: { + relativeTo: Path.join(__dirname, 'public'), + }, + }, + }); + + await server.register(require('@hapi/inert')); + + server.route({ + method: 'GET', + path: '/picture.jpg', + handler: function (request, h) { + return h.file('picture.jpg'); + }, + }); + + await server.start(); + + console.log('Server running at:', server.info.uri); }; start(); @@ -65,21 +65,21 @@ Now, let's see how to use the [`h.file()`](/module/inert/api#hfilepath-options) ```javascript const start = async () => { - const server = Hapi.server(); + const server = Hapi.server(); - await server.register(require('@hapi/inert')); + await server.register(require('@hapi/inert')); - server.route({ - method: 'GET', - path: '/picture.jpg', - handler: function (request, h) { - return h.file('/path/to/picture.jpg'); - }, - }); + server.route({ + method: 'GET', + path: '/picture.jpg', + handler: function (request, h) { + return h.file('/path/to/picture.jpg'); + }, + }); - await server.start(); + await server.start(); - console.log('Server running at:', server.info.uri); + console.log('Server running at:', server.info.uri); }; start(); @@ -93,11 +93,11 @@ An alternative to using the `h.file()` method would be to use the `file` handler ```javascript server.route({ - method: 'GET', - path: '/picture.jpg', - handler: { - file: 'picture.jpg', - }, + method: 'GET', + path: '/picture.jpg', + handler: { + file: 'picture.jpg', + }, }); ``` @@ -107,13 +107,13 @@ You can also specify the parameter as a function that accepts the `request` obje ```javascript server.route({ - method: 'GET', - path: '/{filename}', - handler: { - file: function (request) { - return request.params.filename; + method: 'GET', + path: '/{filename}', + handler: { + file: function (request) { + return request.params.filename; + }, }, - }, }); ``` @@ -121,16 +121,16 @@ It can also be an object with a `path` property. When using the object form of t ```javascript server.route({ - method: 'GET', - path: '/script.js', - handler: { - file: { - path: 'script.js', - filename: 'client.js', // override the filename in the Content-Disposition header - mode: 'attachment', // specify the Content-Disposition is an attachment - lookupCompressed: true, // allow looking for script.js.gz if the request allows it + method: 'GET', + path: '/script.js', + handler: { + file: { + path: 'script.js', + filename: 'client.js', // override the filename in the Content-Disposition header + mode: 'attachment', // specify the Content-Disposition is an attachment + lookupCompressed: true, // allow looking for script.js.gz if the request allows it + }, }, - }, }); ``` @@ -140,13 +140,13 @@ In addition to the `file` handler, inert also adds a `directory` handler that al ```javascript server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: 'directory-path-here', + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: 'directory-path-here', + }, }, - }, }); ``` @@ -156,14 +156,14 @@ The above route will respond to any request by looking for a matching filename i ```javascript server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: 'directory-path-here', - index: ['index.html', 'default.html'], + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: 'directory-path-here', + index: ['index.html', 'default.html'], + }, }, - }, }); ``` @@ -171,14 +171,14 @@ A request to `/` will now first try to load `/index.html`, then `/default.html`. ```javascript server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: 'directory-path-here', - listing: true, + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: 'directory-path-here', + listing: true, + }, }, - }, }); ``` @@ -194,31 +194,31 @@ const Hapi = require('@hapi/hapi'); const Inert = require('@hapi/inert'); const init = async () => { - const server = new Hapi.Server({ - port: 3000, - routes: { - files: { - relativeTo: Path.join(__dirname, 'public'), - }, - }, - }); - - await server.register(Inert); - - server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: '.', - redirectToSlash: true, - }, - }, - }); - - await server.start(); - - console.log('Server running at:', server.info.uri); + const server = new Hapi.Server({ + port: 3000, + routes: { + files: { + relativeTo: Path.join(__dirname, 'public'), + }, + }, + }); + + await server.register(Inert); + + server.route({ + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: '.', + redirectToSlash: true, + }, + }, + }); + + await server.start(); + + console.log('Server running at:', server.info.uri); }; init(); diff --git a/docs/tutorials/en_US/testing.md b/docs/tutorials/en_US/testing.md index 33e7cd36..5bbade96 100644 --- a/docs/tutorials/en_US/testing.md +++ b/docs/tutorials/en_US/testing.md @@ -40,32 +40,32 @@ Taking the server example from the Getting Started tutorial, we make a minor mod const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 3000, - host: 'localhost', + port: 3000, + host: 'localhost', }); server.route({ - method: 'GET', - path: '/', - handler: function () { - return 'Hello World!'; - }, + method: 'GET', + path: '/', + handler: function () { + return 'Hello World!'; + }, }); exports.init = async () => { - await server.initialize(); - return server; + await server.initialize(); + return server; }; exports.start = async () => { - await server.start(); - console.log(`Server running at: ${server.info.uri}`); - return server; + await server.start(); + console.log(`Server running at: ${server.info.uri}`); + return server; }; process.on('unhandledRejection', (err) => { - console.log(err); - process.exit(1); + console.log(err); + process.exit(1); }); ``` @@ -100,23 +100,23 @@ const { afterEach, beforeEach, describe, it } = (exports.lab = Lab.script()); const { init } = require('../lib/server'); describe('GET /', () => { - let server; + let server; - beforeEach(async () => { - server = await init(); - }); + beforeEach(async () => { + server = await init(); + }); - afterEach(async () => { - await server.stop(); - }); + afterEach(async () => { + await server.stop(); + }); - it('responds with 200', async () => { - const res = await server.inject({ - method: 'get', - url: '/', + it('responds with 200', async () => { + const res = await server.inject({ + method: 'get', + url: '/', + }); + expect(res.statusCode).to.equal(200); }); - expect(res.statusCode).to.equal(200); - }); }); ``` diff --git a/docs/tutorials/en_US/validation.md b/docs/tutorials/en_US/validation.md index fa9c344f..8786cf5f 100644 --- a/docs/tutorials/en_US/validation.md +++ b/docs/tutorials/en_US/validation.md @@ -28,12 +28,12 @@ The first type of validation hapi can perform is input validation. This is defin ```json5 { - headers: true, - params: true, - query: true, - payload: true, - state: true, - failAction: 'error', + headers: true, + params: true, + query: true, + payload: true, + state: true, + failAction: 'error', } ``` @@ -41,11 +41,11 @@ If a key has a value of `true`, there will be no validation. Keys can also be ei ```js options: { - validate: { - query: Joi.object({ - limit: Joi.number().integer().min(1).max(100).default(10), - }).options({ stripUnknown: true }); - } + validate: { + query: Joi.object({ + limit: Joi.number().integer().min(1).max(100).default(10), + }).options({ stripUnknown: true }); + } } ``` @@ -57,18 +57,18 @@ The first input type that `joi` can validate is path parameters. Consider the fo ```javascript server.route({ - method: 'GET', - path: '/hello/{name}', - handler: function (request, h) { - return `Hello ${request.params.name}!`; - }, - options: { - validate: { - params: Joi.object({ - name: Joi.string().min(3).max(10), - }), + method: 'GET', + path: '/hello/{name}', + handler: function (request, h) { + return `Hello ${request.params.name}!`; + }, + options: { + validate: { + params: Joi.object({ + name: Joi.string().min(3).max(10), + }), + }, }, - }, }); ``` @@ -78,9 +78,9 @@ With this configuration, if you make a request to `/hello/jennifer` you will get ```json { - "error": "Bad Request", - "message": "Invalid request params input", - "statusCode": 400 + "error": "Bad Request", + "message": "Invalid request params input", + "statusCode": 400 } ``` @@ -94,18 +94,18 @@ For example, if you have a route that returns a list of blog posts and you would ```javascript server.route({ - method: 'GET', - path: '/posts', - handler: function (request, h) { - return posts.slice(0, request.query.limit); - }, - options: { - validate: { - query: Joi.object({ - limit: Joi.number().integer().min(1).max(100).default(10), - }), + method: 'GET', + path: '/posts', + handler: function (request, h) { + return posts.slice(0, request.query.limit); + }, + options: { + validate: { + query: Joi.object({ + limit: Joi.number().integer().min(1).max(100).default(10), + }), + }, }, - }, }); ``` @@ -119,19 +119,19 @@ Also valid is the `validate.payload` option, which will validate payload data se ```js server.route({ - method: 'POST', - path: '/post', - handler: function (request, h) { - return 'Blog post added'; - }, - options: { - validate: { - payload: Joi.object({ - post: Joi.string().min(1).max(140), - date: Joi.date().required(), - }), + method: 'POST', + path: '/post', + handler: function (request, h) { + return 'Blog post added'; + }, + options: { + validate: { + payload: Joi.object({ + post: Joi.string().min(1).max(140), + date: Joi.date().required(), + }), + }, }, - }, }); ``` @@ -141,9 +141,9 @@ If any of payload fails validation, the following error will be thrown: ```json { - "error": "Bad Request", - "message": "Invalid request payload input", - "statusCode": 400 + "error": "Bad Request", + "message": "Invalid request payload input", + "statusCode": 400 } ``` @@ -153,21 +153,21 @@ You may validate incoming headers as well, with a `validate.headers` option. For ```js server.route({ - method: 'GET', - path: '/hello/{name}', - handler: (request, h) => { - return `Hello ${request.params.name}!`; - }, - options: { - validate: { - headers: Joi.object({ - cookie: Joi.string().required(), - }), - options: { - allowUnknown: true, - }, + method: 'GET', + path: '/hello/{name}', + handler: (request, h) => { + return `Hello ${request.params.name}!`; + }, + options: { + validate: { + headers: Joi.object({ + cookie: Joi.string().required(), + }), + options: { + allowUnknown: true, + }, + }, }, - }, }); ``` @@ -196,25 +196,25 @@ For example: ```js const bookSchema = Joi.object({ - title: Joi.string().required(), - author: Joi.string().required(), - isbn: Joi.string().length(10), - pageCount: Joi.number(), - datePublished: Joi.date().iso(), + title: Joi.string().required(), + author: Joi.string().required(), + isbn: Joi.string().length(10), + pageCount: Joi.number(), + datePublished: Joi.date().iso(), }); server.route({ - method: 'GET', - path: '/books', - handler: async function (request, h) { - return await getBooks(); - }, - options: { - response: { - schema: Joi.array().items(bookSchema), - failAction: 'log', + method: 'GET', + path: '/books', + handler: async function (request, h) { + return await getBooks(); + }, + options: { + response: { + schema: Joi.array().items(bookSchema), + failAction: 'log', + }, }, - }, }); ``` @@ -226,25 +226,25 @@ If performance is a concern, hapi can be configured to validate only a percentag ```javascript const bookSchema = Joi.object({ - title: Joi.string().required(), - author: Joi.string().required(), - isbn: Joi.string().length(10), - pageCount: Joi.number(), - datePublished: Joi.date().iso(), + title: Joi.string().required(), + author: Joi.string().required(), + isbn: Joi.string().length(10), + pageCount: Joi.number(), + datePublished: Joi.date().iso(), }); server.route({ - method: 'GET', - path: '/books', - handler: async function (request, h) { - return await getBooks(); - }, - options: { - response: { - sample: 50, - schema: Joi.array().items(bookSchema), + method: 'GET', + path: '/books', + handler: async function (request, h) { + return await getBooks(); + }, + options: { + response: { + sample: 50, + schema: Joi.array().items(bookSchema), + }, }, - }, }); ``` diff --git a/docs/tutorials/en_US/views.md b/docs/tutorials/en_US/views.md index 82c3d694..a7bf4ee2 100644 --- a/docs/tutorials/en_US/views.md +++ b/docs/tutorials/en_US/views.md @@ -32,19 +32,19 @@ const Hapi = require('@hapi/hapi'); const Hoek = require('@hapi/hoek'); const start = async () => { - const server = Hapi.server(); + const server = Hapi.server(); - await server.register(require('@hapi/vision')); + await server.register(require('@hapi/vision')); - server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: 'templates', - }); + server.views({ + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: 'templates', + }); - await server.start(); + await server.start(); }; start(); @@ -64,13 +64,13 @@ Note that all options may be set either globally, which configures them for all ```javascript server.views({ - engines: { - html: { - module: require('handlebars'), - compileMode: 'sync', // engine specific + engines: { + html: { + module: require('handlebars'), + compileMode: 'sync', // engine specific + }, }, - }, - compileMode: 'async', // global setting + compileMode: 'async', // global setting }); ``` @@ -120,13 +120,13 @@ Your configuration might look like: ```javascript server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: './templates', - layoutPath: './templates/layout', - helpersPath: './templates/helpers', + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: './templates', + layoutPath: './templates/layout', + helpersPath: './templates/helpers', }); ``` @@ -138,17 +138,17 @@ The simplest way to achieve this is by using the `context` option when calling ` ```javascript const context = { - title: 'My personal site', + title: 'My personal site', }; server.views({ - engines: { - html: { - module: require('handlebars'), - compileMode: 'sync', // engine specific + engines: { + html: { + module: require('handlebars'), + compileMode: 'sync', // engine specific + }, }, - }, - context, + context, }); ``` @@ -162,21 +162,21 @@ The following snippet is the complete helper function which you will store in a ```javascript module.exports = function () { - const fortunes = [ - 'Heisenberg may have slept here...', - 'Wanna buy a duck?', - 'Say no, then negotiate.', - 'Time and tide wait for no man.', - 'To teach is to learn.', - 'Never ask the barber if you need a haircut.', - 'You will forget that you ever knew me.', - 'You will be run over by a beer truck.', - 'Fortune favors the lucky.', - 'Have a nice day!', - ]; - - const x = Math.floor(Math.random() * fortunes.length); - return fortunes[x]; + const fortunes = [ + 'Heisenberg may have slept here...', + 'Wanna buy a duck?', + 'Say no, then negotiate.', + 'Time and tide wait for no man.', + 'To teach is to learn.', + 'Never ask the barber if you need a haircut.', + 'You will forget that you ever knew me.', + 'You will be run over by a beer truck.', + 'Fortune favors the lucky.', + 'Have a nice day!', + ]; + + const x = Math.floor(Math.random() * fortunes.length); + return fortunes[x]; }; ``` @@ -197,28 +197,28 @@ For reference, here is a complete server script that uses the fortune view helpe const Hapi = require('@hapi/hapi'); const start = async () => { - const server = Hapi.server({ port: 8080 }); - - await server.register(require('@hapi/vision')); - - server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: 'templates', - helpersPath: 'helpers', - }); - - server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return h.view('index'); - }, - }); - - await server.start(); + const server = Hapi.server({ port: 8080 }); + + await server.register(require('@hapi/vision')); + + server.views({ + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: 'templates', + helpersPath: 'helpers', + }); + + server.route({ + method: 'GET', + path: '/', + handler: function (request, h) { + return h.view('index'); + }, + }); + + await server.start(); }; start(); @@ -232,9 +232,9 @@ In order to use the built-in layout system, first setup the view engine: ```javascript server.views({ - // ... - layout: true, - layoutPath: 'templates/layout', + // ... + layout: true, + layoutPath: 'templates/layout', }); ``` @@ -244,9 +244,9 @@ Setup a content area in your `layout.html`: ```html - - {{{content}}} - + + {{{content}}} + ``` @@ -262,8 +262,8 @@ If you want a different default layout, you can set the option globally: ```javascript server.views({ - // ... - layout: 'another_default', + // ... + layout: 'another_default', }); ``` @@ -283,11 +283,11 @@ The first method of rendering a view we'll look at is `h.view()`. Here's what a ```javascript server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return h.view('index'); - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return h.view('index'); + }, }); ``` @@ -303,11 +303,11 @@ The second method of rendering a view, is using hapi's built in view handler. Th ```javascript server.route({ - method: 'GET', - path: '/', - handler: { - view: 'index', - }, + method: 'GET', + path: '/', + handler: { + view: 'index', + }, }); ``` diff --git a/docs/tutorials/ko_KR/auth.md b/docs/tutorials/ko_KR/auth.md index 6c4efe9c..c3cce13b 100644 --- a/docs/tutorials/ko_KR/auth.md +++ b/docs/tutorials/ko_KR/auth.md @@ -21,47 +21,47 @@ const Bcrypt = require('bcrypt'); const Hapi = require('@hapi/hapi'); const users = { - john: { - username: 'john', - password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' - name: 'John Doe', - id: '2133d32a', - }, + john: { + username: 'john', + password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' + name: 'John Doe', + id: '2133d32a', + }, }; const validate = async (request, username, password) => { - const user = users[username]; - if (!user) { - return { credentials: null, isValid: false }; - } + const user = users[username]; + if (!user) { + return { credentials: null, isValid: false }; + } - const isValid = await Bcrypt.compare(password, user.password); - const credentials = { id: user.id, name: user.name }; + const isValid = await Bcrypt.compare(password, user.password); + const credentials = { id: user.id, name: user.name }; - return { isValid, credentials }; + return { isValid, credentials }; }; const start = async () => { - const server = Hapi.server({ port: 4000 }); + const server = Hapi.server({ port: 4000 }); - await server.register(require('hapi-auth-basic')); + await server.register(require('hapi-auth-basic')); - server.auth.strategy('simple', 'basic', { validate }); + server.auth.strategy('simple', 'basic', { validate }); - server.route({ - method: 'GET', - path: '/', - options: { - auth: 'simple', - }, - handler: function (request, h) { - return 'welcome'; - }, - }); + server.route({ + method: 'GET', + path: '/', + options: { + auth: 'simple', + }, + handler: function (request, h) { + return 'welcome'; + }, + }); - await server.start(); + await server.start(); - console.log('server running at: ' + server.info.uri); + console.log('server running at: ' + server.info.uri); }; start(); diff --git a/docs/tutorials/ko_KR/caching.md b/docs/tutorials/ko_KR/caching.md index f9d30215..fe65cde4 100644 --- a/docs/tutorials/ko_KR/caching.md +++ b/docs/tutorials/ko_KR/caching.md @@ -22,23 +22,23 @@ hapi에서 이 헤더를 어떻게 설정하는지 보겠습니다.: ```javascript server.route({ - path: '/hapi/{ttl?}', - method: 'GET', - handler: function (request, h) { - const response = h.response({ be: 'hapi' }); - - if (request.params.ttl) { - response.ttl(request.params.ttl); - } - - return response; - }, - options: { - cache: { - expiresIn: 30 * 1000, - privacy: 'private', + path: '/hapi/{ttl?}', + method: 'GET', + handler: function (request, h) { + const response = h.response({ be: 'hapi' }); + + if (request.params.ttl) { + response.ttl(request.params.ttl); + } + + return response; + }, + options: { + cache: { + expiresIn: 30 * 1000, + privacy: 'private', + }, }, - }, }); ``` @@ -93,21 +93,21 @@ hapi는 [catbox_memory](https://github.com/hapijs/catbox-memory) 어댑터를 const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 8000, - cache: [ - { - name: 'mongoCache', - engine: require('catbox-mongodb'), - host: '127.0.0.1', - partition: 'cache', - }, - { - name: 'redisCache', - engine: require('catbox-redis'), - host: '127.0.0.1', - partition: 'cache', - }, - ], + port: 8000, + cache: [ + { + name: 'mongoCache', + engine: require('catbox-mongodb'), + host: '127.0.0.1', + partition: 'cache', + }, + { + name: 'redisCache', + engine: require('catbox-redis'), + host: '127.0.0.1', + partition: 'cache', + }, + ], }); ``` @@ -119,36 +119,36 @@ const server = Hapi.server({ ```javascript const start = async () => { - const add = async (a, b) => { - await Hoek.wait(1000); // Simulate some slow I/O - - return Number(a) + Number(b); - }; - - const sumCache = server.cache({ - cache: 'mongoCache', - expiresIn: 10 * 1000, - segment: 'customSegment', - generateFunc: async (id) => { - return await add(id.a, id.b); - }, - generateTimeout: 2000, - }); - - server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: async function (request, h) { - const { a, b } = request.params; - const id = `${a}:${b}`; - - return await sumCache.get({ id, a, b }); - }, - }); - - await server.start(); - - console.log('Server running at:', server.info.uri); + const add = async (a, b) => { + await Hoek.wait(1000); // Simulate some slow I/O + + return Number(a) + Number(b); + }; + + const sumCache = server.cache({ + cache: 'mongoCache', + expiresIn: 10 * 1000, + segment: 'customSegment', + generateFunc: async (id) => { + return await add(id.a, id.b); + }, + generateTimeout: 2000, + }); + + server.route({ + path: '/add/{a}/{b}', + method: 'GET', + handler: async function (request, h) { + const { a, b } = request.params; + const id = `${a}:${b}`; + + return await sumCache.get({ id, a, b }); + }, + }); + + await server.start(); + + console.log('Server running at:', server.info.uri); }; start(); @@ -170,28 +170,28 @@ http://localhost:8000/add/1/5 에 요청하면 1초 뒤에 응답 `6`을 받을 ```javascript const start = async () => { - // ... - - server.method('sum', add, { - cache: { - cache: 'mongoCache', - expiresIn: 10 * 1000, - generateTimeout: 2000, - }, - }); - - server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: async function (request, h) { - const { a, b } = request.params; - return await server.methods.sum(a, b); - }, - }); - - await server.start(); - - // ... + // ... + + server.method('sum', add, { + cache: { + cache: 'mongoCache', + expiresIn: 10 * 1000, + generateTimeout: 2000, + }, + }); + + server.route({ + path: '/add/{a}/{b}', + method: 'GET', + handler: async function (request, h) { + const { a, b } = request.params; + return await server.methods.sum(a, b); + }, + }); + + await server.start(); + + // ... }; start(); @@ -212,32 +212,32 @@ start(); ```javascript const start = async () => { - //... - - server.method('sum', add, { - cache: { - cache: 'mongoCache', - expiresIn: 10 * 1000, - generateTimeout: 2000, - getDecoratedValue: true, - }, - }); - - server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: async function (request, h) { - const { a, b } = request.params; - const { value, cached } = await server.methods.sum(a, b); - const lastModified = cached ? new Date(cached.stored) : new Date(); - - return h.response(value).header('Last-modified', lastModified.toUTCString()); - }, - }); - - await server.start(); - - // ... + //... + + server.method('sum', add, { + cache: { + cache: 'mongoCache', + expiresIn: 10 * 1000, + generateTimeout: 2000, + getDecoratedValue: true, + }, + }); + + server.route({ + path: '/add/{a}/{b}', + method: 'GET', + handler: async function (request, h) { + const { a, b } = request.params; + const { value, cached } = await server.methods.sum(a, b); + const lastModified = cached ? new Date(cached.stored) : new Date(); + + return h.response(value).header('Last-modified', lastModified.toUTCString()); + }, + }); + + await server.start(); + + // ... }; ``` diff --git a/docs/tutorials/ko_KR/cookies.md b/docs/tutorials/ko_KR/cookies.md index 35140030..f1e34c74 100644 --- a/docs/tutorials/ko_KR/cookies.md +++ b/docs/tutorials/ko_KR/cookies.md @@ -18,12 +18,12 @@ hapi는 쿠키를 다룰 때 몇 가지 설정 가능한 옵션을 가지고 있 ```javascript server.state('data', { - ttl: null, - isSecure: true, - isHttpOnly: true, - encoding: 'base64json', - clearInvalid: false, // remove invalid cookies - strictHeader: true, // don't allow violations of RFC 6265 + ttl: null, + isSecure: true, + isHttpOnly: true, + encoding: 'base64json', + clearInvalid: false, // remove invalid cookies + strictHeader: true, // don't allow violations of RFC 6265 }); ``` @@ -33,12 +33,12 @@ server.state('data', { ```json5 { - options: { - state: { - parse: true, // parse cookies and store in request.state - failAction: 'error', // may also be 'ignore' or 'log' + options: { + state: { + parse: true, // parse cookies and store in request.state + failAction: 'error', // may also be 'ignore' or 'log' + }, }, - }, } ``` diff --git a/docs/tutorials/ko_KR/getting-started.md b/docs/tutorials/ko_KR/getting-started.md index 1a304e14..bdec48ae 100644 --- a/docs/tutorials/ko_KR/getting-started.md +++ b/docs/tutorials/ko_KR/getting-started.md @@ -28,18 +28,18 @@ _이 튜터리얼은 hapi v17과 호환됩니다._ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 3000, - host: 'localhost', + port: 3000, + host: 'localhost', }); const init = async () => { - await server.start(); - console.log(`Server running at: ${server.info.uri}`); + await server.start(); + console.log(`Server running at: ${server.info.uri}`); }; process.on('unhandledRejection', (err) => { - console.log(err); - process.exit(1); + console.log(err); + process.exit(1); }); init(); @@ -59,34 +59,34 @@ init(); const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 3000, - host: 'localhost', + port: 3000, + host: 'localhost', }); server.route({ - method: 'GET', - path: '/', - handler: (request, h) => { - return 'Hello, world!'; - }, + method: 'GET', + path: '/', + handler: (request, h) => { + return 'Hello, world!'; + }, }); server.route({ - method: 'GET', - path: '/{name}', - handler: (request, h) => { - return 'Hello, ' + encodeURIComponent(request.params.name) + '!'; - }, + method: 'GET', + path: '/{name}', + handler: (request, h) => { + return 'Hello, ' + encodeURIComponent(request.params.name) + '!'; + }, }); const init = async () => { - await server.start(); - console.log(`Server running at: ${server.info.uri}`); + await server.start(); + console.log(`Server running at: ${server.info.uri}`); }; process.on('unhandledRejection', (err) => { - console.log(err); - process.exit(1); + console.log(err); + process.exit(1); }); init(); @@ -108,18 +108,18 @@ Hello World 응용프로그램으로 간단한 hapi 앱을 실행할 수 있음 ```javascript const init = async () => { - await server.register(require('@hapi/inert')); - - server.route({ - method: 'GET', - path: '/hello', - handler: (request, h) => { - return h.file('./public/hello.html'); - }, - }); - - await server.start(); - console.log(`Server running at: ${server.info.uri}`); + await server.register(require('@hapi/inert')); + + server.route({ + method: 'GET', + path: '/hello', + handler: (request, h) => { + return h.file('./public/hello.html'); + }, + }); + + await server.start(); + console.log(`Server running at: ${server.info.uri}`); }; ``` @@ -134,13 +134,13 @@ const init = async () => { ```html - - - Hapi.js is awesome! - - -

    Hello World.

    - + + + Hapi.js is awesome! + + +

    Hello World.

    + ``` @@ -170,46 +170,46 @@ npm install hapi-pino const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 3000, - host: 'localhost', + port: 3000, + host: 'localhost', }); server.route({ - method: 'GET', - path: '/', - handler: (request, h) => { - return 'Hello, world!'; - }, + method: 'GET', + path: '/', + handler: (request, h) => { + return 'Hello, world!'; + }, }); server.route({ - method: 'GET', - path: '/{name}', - handler: (request, h) => { - // request.log(['a', 'name'], "Request name"); - // or - request.logger.info('In handler %s', request.path); - - return `Hello, ${encodeURIComponent(request.params.name)}!`; - }, -}); + method: 'GET', + path: '/{name}', + handler: (request, h) => { + // request.log(['a', 'name'], "Request name"); + // or + request.logger.info('In handler %s', request.path); -const init = async () => { - await server.register({ - plugin: require('hapi-pino'), - options: { - prettyPrint: false, - logEvents: ['response', 'onPostStart'], + return `Hello, ${encodeURIComponent(request.params.name)}!`; }, - }); +}); - await server.start(); - console.log(`Server running at: ${server.info.uri}`); +const init = async () => { + await server.register({ + plugin: require('hapi-pino'), + options: { + prettyPrint: false, + logEvents: ['response', 'onPostStart'], + }, + }); + + await server.start(); + console.log(`Server running at: ${server.info.uri}`); }; process.on('unhandledRejection', (err) => { - console.log(err); - process.exit(1); + console.log(err); + process.exit(1); }); init(); diff --git a/docs/tutorials/ko_KR/logging.md b/docs/tutorials/ko_KR/logging.md index f33dab11..1f75082e 100644 --- a/docs/tutorials/ko_KR/logging.md +++ b/docs/tutorials/ko_KR/logging.md @@ -34,9 +34,9 @@ hapi 서버 객체는 각 로그 이벤트마다 이벤트를 생성합니다. ```javascript server.events.on('log', (event, tags) => { - if (tags.error) { - console.log(`Server error: ${event.error ? event.error.message : 'unknown'}`); - } + if (tags.error) { + console.log(`Server error: ${event.error ? event.error.message : 'unknown'}`); + } }); ``` @@ -46,16 +46,16 @@ server.events.on('log', (event, tags) => { ```javascript server.route({ - method: 'GET', - path: '/', - options: { - log: { - collect: true, + method: 'GET', + path: '/', + options: { + log: { + collect: true, + }, + }, + handler: function (request, h) { + return 'hello'; }, - }, - handler: function (request, h) { - return 'hello'; - }, }); ``` diff --git a/docs/tutorials/ko_KR/plugins.md b/docs/tutorials/ko_KR/plugins.md index ffb1d24a..4b19bede 100644 --- a/docs/tutorials/ko_KR/plugins.md +++ b/docs/tutorials/ko_KR/plugins.md @@ -20,22 +20,22 @@ hapi는 막대하고 강력한 플러그인 시스템을 가지고 있어 응용 'use strict'; const myPlugin = { - name: 'myPlugin', - version: '1.0.0', - register: async function (server, options) { - // Create a route for example - - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'hello, world'; - }, - }); - - // etc ... - await someAsyncMethods(); - }, + name: 'myPlugin', + version: '1.0.0', + register: async function (server, options) { + // Create a route for example + + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'hello, world'; + }, + }); + + // etc ... + await someAsyncMethods(); + }, }; ``` @@ -45,21 +45,21 @@ const myPlugin = { 'use strict'; exports.plugin = { - pkg: require('./package.json'), - register: async function (server, options) { - // Create a route for example - - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'hello, world'; - }, - }); - - // etc... - await someAsyncMethods(); - }, + pkg: require('./package.json'), + register: async function (server, options) { + // Create a route for example + + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'hello, world'; + }, + }); + + // etc... + await someAsyncMethods(); + }, }; ``` @@ -87,13 +87,13 @@ exports.plugin = { ```javascript const start = async function () { - // load one plugin + // load one plugin - await server.register(require('myplugin')); + await server.register(require('myplugin')); - // load multiple plugins + // load multiple plugins - await server.register([require('myplugin'), require('yourplugin')]); + await server.register([require('myplugin'), require('yourplugin')]); }; ``` @@ -101,12 +101,12 @@ const start = async function () { ```javascript const start = async function () { - await server.register({ - plugin: require('myplugin'), - options: { - message: 'hello', - }, - }); + await server.register({ + plugin: require('myplugin'), + options: { + message: 'hello', + }, + }); }; ``` @@ -114,16 +114,16 @@ const start = async function () { ```javascript const start = async function () { - await server.register([ - { - plugin: require('plugin1'), - options: {}, - }, - { - plugin: require('plugin2'), - options: {}, - }, - ]); + await server.register([ + { + plugin: require('plugin1'), + options: {}, + }, + { + plugin: require('plugin2'), + options: {}, + }, + ]); }; ``` @@ -139,19 +139,19 @@ options 객체는 로드될 플러그인에 전달되지 _않고_ hapi에서 사 'use strict'; exports.plugin = { - pkg: require('./package.json'), - register: async function (server, options) { - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'test passed'; - }, - }); - - // etc... - await someAsyncMethods(); - }, + pkg: require('./package.json'), + register: async function (server, options) { + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'test passed'; + }, + }); + + // etc... + await someAsyncMethods(); + }, }; ``` @@ -159,11 +159,11 @@ exports.plugin = { ```javascript const start = async function () { - await server.register(require('myplugin'), { - routes: { - prefix: '/plugins', - }, - }); + await server.register(require('myplugin'), { + routes: { + prefix: '/plugins', + }, + }); }; ``` diff --git a/docs/tutorials/ko_KR/routing.md b/docs/tutorials/ko_KR/routing.md index 462d242e..2072d02a 100644 --- a/docs/tutorials/ko_KR/routing.md +++ b/docs/tutorials/ko_KR/routing.md @@ -12,11 +12,11 @@ hapi에서 라우트를 정의할 때 다른 프레임워크와 마찬가지로 ```javascript server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return 'Hello!'; - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return 'Hello!'; + }, }); ``` @@ -26,11 +26,11 @@ server.route({ ```javascript server.route({ - method: ['PUT', 'POST'], - path: '/', - handler: function (request, h) { - return 'I did something!'; - }, + method: ['PUT', 'POST'], + path: '/', + handler: function (request, h) { + return 'I did something!'; + }, }); ``` @@ -40,11 +40,11 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/hello/{user}', - handler: function (request, h) { - return `Hello ${encodeURIComponent(request.params.user)}!`; - }, + method: 'GET', + path: '/hello/{user}', + handler: function (request, h) { + return `Hello ${encodeURIComponent(request.params.user)}!`; + }, }); ``` @@ -56,13 +56,13 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/hello/{user?}', - handler: function (request, h) { - const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger'; + method: 'GET', + path: '/hello/{user?}', + handler: function (request, h) { + const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger'; - return `Hello ${user}!`; - }, + return `Hello ${user}!`; + }, }); ``` @@ -74,12 +74,12 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/hello/{user*2}', - handler: function (request, h) { - const userParts = request.params.user.split('/'); - return `Hello ${encodeURIComponent(userParts[0])} ${encodeURIComponent(userParts[1])}!`; - }, + method: 'GET', + path: '/hello/{user*2}', + handler: function (request, h) { + const userParts = request.params.user.split('/'); + return `Hello ${encodeURIComponent(userParts[0])} ${encodeURIComponent(userParts[1])}!`; + }, }); ``` @@ -105,18 +105,18 @@ handler 옵션은 `request`와 `h` 2개의 인자를 받습니다. ```javascript server.route({ - method: 'GET', - path: '/hello/{user?}', - handler: function (request, h) { - const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger'; - - return `Hello ${user}!`; - }, - options: { - description: 'Say hello!', - notes: "The user parameter defaults to 'stranger' if unspecified", - tags: ['api', 'greeting'], - }, + method: 'GET', + path: '/hello/{user?}', + handler: function (request, h) { + const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger'; + + return `Hello ${user}!`; + }, + options: { + description: 'Say hello!', + notes: "The user parameter defaults to 'stranger' if unspecified", + tags: ['api', 'greeting'], + }, }); ``` diff --git a/docs/tutorials/ko_KR/server-methods.md b/docs/tutorials/ko_KR/server-methods.md index 36c46cf9..14f4cb53 100644 --- a/docs/tutorials/ko_KR/server-methods.md +++ b/docs/tutorials/ko_KR/server-methods.md @@ -12,7 +12,7 @@ _이 튜터리얼은 hapi v17과 호환됩니다._ ```javascript const add = function (x, y) { - return x + y; + return x + y; }; server.method('add', add, {}); @@ -22,13 +22,13 @@ server.method('add', add, {}); ```javascript const add = function (x, y) { - return x + y; + return x + y; }; server.method({ - name: 'add', - method: add, - options: {}, + name: 'add', + method: add, + options: {}, }); ``` @@ -48,8 +48,8 @@ server.method('math.add', add); ```js const add = async function (x, y) { - const result = await someLongRunningFunction(x, y); - return result; + const result = await someLongRunningFunction(x, y); + return result; }; server.method('add', add, {}); @@ -63,13 +63,13 @@ server.method('add', add, {}); ```javascript server.method('add', add, { - cache: { - expiresIn: 60000, - expiresAt: '20:30', - staleIn: 30000, - staleTimeout: 10000, - generateTimeout: 100, - }, + cache: { + expiresIn: 60000, + expiresAt: '20:30', + staleIn: 30000, + staleTimeout: 10000, + generateTimeout: 100, + }, }); ``` @@ -89,18 +89,18 @@ server.method('add', add, { ```js const add = async function (x, y, flags) { - const result = await someLongRunningFunction(x, y); + const result = await someLongRunningFunction(x, y); - flags.ttl = 5 * 60 * 1000; // 5 mins + flags.ttl = 5 * 60 * 1000; // 5 mins - return result; + return result; }; server.method('add', add, { - cache: { - expiresIn: 2000, - generateTimeout: 100, - }, + cache: { + expiresIn: 2000, + generateTimeout: 100, + }, }); server.methods.add(5, 12); @@ -114,17 +114,17 @@ server.methods.add(5, 12); ```javascript const sum = function (array) { - let total = 0; + let total = 0; - array.forEach((item) => { - total += item; - }); + array.forEach((item) => { + total += item; + }); - return total; + return total; }; server.method('sum', sum, { - generateKey: (array) => array.join(','), + generateKey: (array) => array.join(','), }); ``` @@ -136,9 +136,9 @@ server.method('sum', sum, { ```javascript const lookup = async function (id) { - // calls myDB.getOne + // calls myDB.getOne - return await this.getOne({ id }); + return await this.getOne({ id }); }; server.method('lookup', lookup, { bind: myDB }); diff --git a/docs/tutorials/ko_KR/serving-files.md b/docs/tutorials/ko_KR/serving-files.md index 495d2a20..43046848 100644 --- a/docs/tutorials/ko_KR/serving-files.md +++ b/docs/tutorials/ko_KR/serving-files.md @@ -20,19 +20,19 @@ _이 튜터리얼은 hapi v17과 호환됩니다._ ```javascript const start = async () => { - await server.register(require('@hapi/inert')); + await server.register(require('@hapi/inert')); - server.route({ - method: 'GET', - path: '/picture.jpg', - handler: function (request, h) { - return h.file('/path/to/picture.jpg'); - }, - }); + server.route({ + method: 'GET', + path: '/picture.jpg', + handler: function (request, h) { + return h.file('/path/to/picture.jpg'); + }, + }); - await server.start(); + await server.start(); - console.log('Server running at:', server.info.uri); + console.log('Server running at:', server.info.uri); }; start(); @@ -51,27 +51,27 @@ const Hapi = require('@hapi/hapi'); const Path = require('path'); const server = Hapi.server({ - routes: { - files: { - relativeTo: Path.join(__dirname, 'public'), + routes: { + files: { + relativeTo: Path.join(__dirname, 'public'), + }, }, - }, }); const start = async () => { - await server.register(require('@hapi/inert')); + await server.register(require('@hapi/inert')); - server.route({ - method: 'GET', - path: '/picture.jpg', - handler: function (request, h) { - return h.file('picture.jpg'); - }, - }); + server.route({ + method: 'GET', + path: '/picture.jpg', + handler: function (request, h) { + return h.file('picture.jpg'); + }, + }); - await server.start(); + await server.start(); - console.log('Server running at:', server.info.uri); + console.log('Server running at:', server.info.uri); }; start(); @@ -85,11 +85,11 @@ start(); ```javascript server.route({ - method: 'GET', - path: '/picture.jpg', - handler: { - file: 'picture.jpg', - }, + method: 'GET', + path: '/picture.jpg', + handler: { + file: 'picture.jpg', + }, }); ``` @@ -99,13 +99,13 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/{filename}', - handler: { - file: function (request) { - return request.params.filename; + method: 'GET', + path: '/{filename}', + handler: { + file: function (request) { + return request.params.filename; + }, }, - }, }); ``` @@ -113,16 +113,16 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/script.js', - handler: { - file: { - path: 'script.js', - filename: 'client.js', // override the filename in the Content-Disposition header - mode: 'attachment', // specify the Content-Disposition is an attachment - lookupCompressed: true, // allow looking for script.js.gz if the request allows it + method: 'GET', + path: '/script.js', + handler: { + file: { + path: 'script.js', + filename: 'client.js', // override the filename in the Content-Disposition header + mode: 'attachment', // specify the Content-Disposition is an attachment + lookupCompressed: true, // allow looking for script.js.gz if the request allows it + }, }, - }, }); ``` @@ -132,13 +132,13 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: 'directory-path-here', + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: 'directory-path-here', + }, }, - }, }); ``` @@ -148,14 +148,14 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: 'directory-path-here', - index: ['index.html', 'default.html'], + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: 'directory-path-here', + index: ['index.html', 'default.html'], + }, }, - }, }); ``` @@ -163,14 +163,14 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: 'directory-path-here', - listing: true, + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: 'directory-path-here', + listing: true, + }, }, - }, }); ``` diff --git a/docs/tutorials/ko_KR/validation.md b/docs/tutorials/ko_KR/validation.md index 186c1e3d..2f6a2bdc 100644 --- a/docs/tutorials/ko_KR/validation.md +++ b/docs/tutorials/ko_KR/validation.md @@ -18,18 +18,18 @@ hapi가 실행하는 첫 번째 유형의 유효성 검사는 입력 유효성 ```javascript server.route({ - method: 'GET', - path: '/hello/{name}', - handler: function (request, h) { - return `Hello ${request.params.name}!`; - }, - options: { - validate: { - params: { - name: Joi.string().min(3).max(10), - }, + method: 'GET', + path: '/hello/{name}', + handler: function (request, h) { + return `Hello ${request.params.name}!`; + }, + options: { + validate: { + params: { + name: Joi.string().min(3).max(10), + }, + }, }, - }, }); ``` @@ -41,9 +41,9 @@ server.route({ ```json { - "error": "Bad Request", - "message": "Invalid request params input", - "statusCode": 400 + "error": "Bad Request", + "message": "Invalid request params input", + "statusCode": 400 } ``` @@ -57,18 +57,18 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/posts', - handler: function (request, h) { - return posts.slice(0, request.query.limit); - }, - options: { - validate: { - query: { - limit: Joi.number().integer().min(1).max(100).default(10), - }, + method: 'GET', + path: '/posts', + handler: function (request, h) { + return posts.slice(0, request.query.limit); + }, + options: { + validate: { + query: { + limit: Joi.number().integer().min(1).max(100).default(10), + }, + }, }, - }, }); ``` @@ -137,25 +137,25 @@ hapi는 각 응답 코드에 대해 다른 유효성 검사를 지정하는 것 ```javascript const bookSchema = Joi.object({ - title: Joi.string().required(), - author: Joi.string().required(), - isbn: Joi.string().length(10), - pageCount: Joi.number(), - datePublished: Joi.date().iso(), + title: Joi.string().required(), + author: Joi.string().required(), + isbn: Joi.string().length(10), + pageCount: Joi.number(), + datePublished: Joi.date().iso(), }); server.route({ - method: 'GET', - path: '/books', - handler: async function (request, h) { - return await getBooks(); - }, - options: { - response: { - sample: 50, - schema: Joi.array().items(bookSchema), + method: 'GET', + path: '/books', + handler: async function (request, h) { + return await getBooks(); + }, + options: { + response: { + sample: 50, + schema: Joi.array().items(bookSchema), + }, }, - }, }); ``` diff --git a/docs/tutorials/ko_KR/views.md b/docs/tutorials/ko_KR/views.md index 0e182771..279554ba 100644 --- a/docs/tutorials/ko_KR/views.md +++ b/docs/tutorials/ko_KR/views.md @@ -24,15 +24,15 @@ const Hoek = require('@hapi/hoek'); const server = Hapi.server(); const start = async () => { - await server.register(require('@hapi/vision')); - - server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: 'templates', - }); + await server.register(require('@hapi/vision')); + + server.views({ + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: 'templates', + }); }; start(); @@ -52,13 +52,13 @@ hapi에서 view 엔진에 대한 여러가지 옵션이 있습니다. 전체 문 ```javascript server.views({ - engines: { - html: { - module: require('handlebars'), - compileMode: 'sync', // engine specific + engines: { + html: { + module: require('handlebars'), + compileMode: 'sync', // engine specific + }, }, - }, - compileMode: 'async', // global setting + compileMode: 'async', // global setting }); ``` @@ -108,13 +108,13 @@ templates\ ```javascript server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: './templates', - layoutPath: './templates/layout', - helpersPath: './templates/helpers', + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: './templates', + layoutPath: './templates/layout', + helpersPath: './templates/helpers', }); ``` @@ -128,11 +128,11 @@ view를 렌더링하는 첫 번째 방법은 `h.view()`입니다. 이 방법을 ```javascript server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return h.view('index'); - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return h.view('index'); + }, }); ``` @@ -148,11 +148,11 @@ view를 렌더링하는 두 번째 방법은 hapi의 내장 view 처리기를 ```javascript server.route({ - method: 'GET', - path: '/', - handler: { - view: 'index', - }, + method: 'GET', + path: '/', + handler: { + view: 'index', + }, }); ``` @@ -177,17 +177,17 @@ view에 context를 직접 전달하는 방법을 살펴보았지만 모든 템 ```javascript const context = { - title: 'My personal site', + title: 'My personal site', }; server.views({ - engines: { - html: { - module: require('handlebars'), - compileMode: 'sync', // engine specific + engines: { + html: { + module: require('handlebars'), + compileMode: 'sync', // engine specific + }, }, - }, - context, + context, }); ``` @@ -201,21 +201,21 @@ server.views({ ```javascript module.exports = function () { - const fortunes = [ - 'Heisenberg may have slept here...', - 'Wanna buy a duck?', - 'Say no, then negotiate.', - 'Time and tide wait for no man.', - 'To teach is to learn.', - 'Never ask the barber if you need a haircut.', - 'You will forget that you ever knew me.', - 'You will be run over by a beer truck.', - 'Fortune favors the lucky.', - 'Have a nice day!', - ]; - - const x = Math.floor(Math.random() * fortunes.length); - return fortunes[x]; + const fortunes = [ + 'Heisenberg may have slept here...', + 'Wanna buy a duck?', + 'Say no, then negotiate.', + 'Time and tide wait for no man.', + 'To teach is to learn.', + 'Never ask the barber if you need a haircut.', + 'You will forget that you ever knew me.', + 'You will be run over by a beer truck.', + 'Fortune favors the lucky.', + 'Have a nice day!', + ]; + + const x = Math.floor(Math.random() * fortunes.length); + return fortunes[x]; }; ``` @@ -238,24 +238,24 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 8080 }); const start = async () => { - await server.register(require('@hapi/vision')); - - server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: 'templates', - helpersPath: 'helpers', - }); - - server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return h.view('index'); - }, - }); + await server.register(require('@hapi/vision')); + + server.views({ + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: 'templates', + helpersPath: 'helpers', + }); + + server.route({ + method: 'GET', + path: '/', + handler: function (request, h) { + return h.view('index'); + }, + }); }; start(); @@ -269,9 +269,9 @@ vision은 view 레이아웃에 대한 내장 지원을 가지고 있습니다. ```javascript server.views({ - // ... - layout: true, - layoutPath: 'templates/layout', + // ... + layout: true, + layoutPath: 'templates/layout', }); ``` @@ -281,9 +281,9 @@ server.views({ ```html - - {{{content}}} - + + {{{content}}} + ``` @@ -299,8 +299,8 @@ view를 렌더링할 때 `{{content}}`는 view 콘텐츠로 바뀔 것입니다. ```javascript server.views({ - // ... - layout: 'another_default', + // ... + layout: 'another_default', }); ``` diff --git a/docs/tutorials/pt_BR/auth.md b/docs/tutorials/pt_BR/auth.md index e7fe4cfa..9b1a3401 100644 --- a/docs/tutorials/pt_BR/auth.md +++ b/docs/tutorials/pt_BR/auth.md @@ -25,49 +25,49 @@ const server = new Hapi.Server(); server.connection({ port: 3000 }); const users = { - john: { - username: 'john', - password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secreto' - name: 'John Doe', - id: '2133d32a', - }, + john: { + username: 'john', + password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secreto' + name: 'John Doe', + id: '2133d32a', + }, }; const validate = function (request, username, password, callback) { - const user = users[username]; - if (!user) { - return callback(null, false); - } - - Bcrypt.compare(password, user.password, (err, isValid) => { - callback(err, isValid, { id: user.id, name: user.name }); - }); + const user = users[username]; + if (!user) { + return callback(null, false); + } + + Bcrypt.compare(password, user.password, (err, isValid) => { + callback(err, isValid, { id: user.id, name: user.name }); + }); }; server.register(Basic, (err) => { - if (err) { - throw err; - } - - server.auth.strategy('simple', 'basic', { validate }); - server.route({ - method: 'GET', - path: '/', - options: { - auth: 'simple', - handler: function (request, reply) { - reply('hello, ' + request.auth.credentials.name); - }, - }, - }); - - server.start((err) => { if (err) { - throw err; + throw err; } - console.log('server running at: ' + server.info.uri); - }); + server.auth.strategy('simple', 'basic', { validate }); + server.route({ + method: 'GET', + path: '/', + options: { + auth: 'simple', + handler: function (request, reply) { + reply('hello, ' + request.auth.credentials.name); + }, + }, + }); + + server.start((err) => { + if (err) { + throw err; + } + + console.log('server running at: ' + server.info.uri); + }); }); ``` diff --git a/docs/tutorials/pt_BR/caching.md b/docs/tutorials/pt_BR/caching.md index 59662041..a82a4f3a 100644 --- a/docs/tutorials/pt_BR/caching.md +++ b/docs/tutorials/pt_BR/caching.md @@ -18,20 +18,20 @@ Vamos ver como nos podemos colocar estes cabeçalhos no hapi: ```javascript server.route({ - path: '/hapi/{ttl?}', - method: 'GET', - handler: function (request, reply) { - const response = reply({ be: 'hapi' }); - if (request.params.ttl) { - response.ttl(request.params.ttl); - } - }, - options: { - cache: { - expiresIn: 30 * 1000, - privacy: 'private', + path: '/hapi/{ttl?}', + method: 'GET', + handler: function (request, reply) { + const response = reply({ be: 'hapi' }); + if (request.params.ttl) { + response.ttl(request.params.ttl); + } + }, + options: { + cache: { + expiresIn: 30 * 1000, + privacy: 'private', + }, }, - }, }); ``` @@ -89,24 +89,24 @@ hapi sempre incializa com um [client](http://github.com/hapijs/catbox#client) pa const Hapi = require('hapi'); const server = new Hapi.Server({ - cache: [ - { - name: 'mongoCache', - engine: require('catbox-mongodb'), - host: '127.0.0.1', - partition: 'cache', - }, - { - name: 'redisCache', - engine: require('catbox-redis'), - host: '127.0.0.1', - partition: 'cache', - }, - ], + cache: [ + { + name: 'mongoCache', + engine: require('catbox-mongodb'), + host: '127.0.0.1', + partition: 'cache', + }, + { + name: 'redisCache', + engine: require('catbox-redis'), + host: '127.0.0.1', + partition: 'cache', + }, + ], }); server.connection({ - port: 8000, + port: 8000, }); ``` @@ -120,31 +120,31 @@ Na Listagem 4, nós definimos 2 catbox clients; mongoCache e redisCache. Incluin ```javascript const add = function (a, b, next) { - return next(null, Number(a) + Number(b)); + return next(null, Number(a) + Number(b)); }; const sumCache = server.cache({ - cache: 'mongoCache', - expiresIn: 20 * 1000, - segment: 'customSegment', - generateFunc: function (id, next) { - add(id.a, id.b, next); - }, - generateTimeout: 100, + cache: 'mongoCache', + expiresIn: 20 * 1000, + segment: 'customSegment', + generateFunc: function (id, next) { + add(id.a, id.b, next); + }, + generateTimeout: 100, }); server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: function (request, reply) { - const id = request.params.a + ':' + request.params.b; - sumCache.get({ id: id, a: request.params.a, b: request.params.b }, (err, result) => { - if (err) { - return reply(err); - } - reply(result); - }); - }, + path: '/add/{a}/{b}', + method: 'GET', + handler: function (request, reply) { + const id = request.params.a + ':' + request.params.b; + sumCache.get({ id: id, a: request.params.a, b: request.params.b }, (err, result) => { + if (err) { + return reply(err); + } + reply(result); + }); + }, }); ``` @@ -164,28 +164,28 @@ Mas ele pode ficar melhor que isto! Em 95% dos casos você pode user [server met ```javascript const add = function (a, b, next) { - return next(null, Number(a) + Number(b)); + return next(null, Number(a) + Number(b)); }; server.method('sum', add, { - cache: { - cache: 'mongoCache', - expiresIn: 30 * 1000, - generateTimeout: 100, - }, + cache: { + cache: 'mongoCache', + expiresIn: 30 * 1000, + generateTimeout: 100, + }, }); server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: function (request, reply) { - server.methods.sum(request.params.a, request.params.b, (err, result) => { - if (err) { - return reply(err); - } - reply(result); - }); - }, + path: '/add/{a}/{b}', + method: 'GET', + handler: function (request, reply) { + server.methods.sum(request.params.a, request.params.b, (err, result) => { + if (err) { + return reply(err); + } + reply(result); + }); + }, }); ``` @@ -206,17 +206,17 @@ Neste caso nós usamos `cached.stored` timestamp para adicionar no header `last- ```javascript server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: function (request, reply) { - server.methods.sum(request.params.a, request.params.b, (err, result, cached, report) => { - if (err) { - return reply(err); - } - const lastModified = cached ? new Date(cached.stored) : new Date(); - return reply(result).header('last-modified', lastModified.toUTCString()); - }); - }, + path: '/add/{a}/{b}', + method: 'GET', + handler: function (request, reply) { + server.methods.sum(request.params.a, request.params.b, (err, result, cached, report) => { + if (err) { + return reply(err); + } + const lastModified = cached ? new Date(cached.stored) : new Date(); + return reply(result).header('last-modified', lastModified.toUTCString()); + }); + }, }); ``` diff --git a/docs/tutorials/pt_BR/cookies.md b/docs/tutorials/pt_BR/cookies.md index 9c9fd5bc..06946360 100644 --- a/docs/tutorials/pt_BR/cookies.md +++ b/docs/tutorials/pt_BR/cookies.md @@ -18,12 +18,12 @@ Para configurá-los, invoque `server.state(nome, opções)` onde `nome` é o nom ```javascript server.state('data', { - ttl: null, - isSecure: true, - isHttpOnly: true, - encoding: 'base64json', - clearInvalid: false, // remove cookies inválidos - strictHeader: true, // não permite violações da RFC 6265 + ttl: null, + isSecure: true, + isHttpOnly: true, + encoding: 'base64json', + clearInvalid: false, // remove cookies inválidos + strictHeader: true, // não permite violações da RFC 6265 }); ``` @@ -33,12 +33,12 @@ Além disso, você pode passar dois parâmetros para o `options` ao adicionar um ```json5 { - options: { - state: { - parse: true, // analisa e armazena em request.state - failAction: 'error', // também pode ser 'ignore' ou 'log' + options: { + state: { + parse: true, // analisa e armazena em request.state + failAction: 'error', // também pode ser 'ignore' ou 'log' + }, }, - }, } ``` diff --git a/docs/tutorials/pt_BR/getting-started.md b/docs/tutorials/pt_BR/getting-started.md index 282bb25c..6a3aa290 100644 --- a/docs/tutorials/pt_BR/getting-started.md +++ b/docs/tutorials/pt_BR/getting-started.md @@ -28,10 +28,10 @@ const server = new Hapi.Server(); server.connection({ port: 3000 }); server.start((err) => { - if (err) { - throw err; - } - console.log(`Server running at: ${server.info.uri}`); + if (err) { + throw err; + } + console.log(`Server running at: ${server.info.uri}`); }); ``` @@ -52,26 +52,26 @@ const server = new Hapi.Server(); server.connection({ port: 3000 }); server.route({ - method: 'GET', - path: '/', - handler: function (request, reply) { - reply('Olá, mundo!'); - }, + method: 'GET', + path: '/', + handler: function (request, reply) { + reply('Olá, mundo!'); + }, }); server.route({ - method: 'GET', - path: '/{name}', - handler: function (request, reply) { - reply('Olá, ' + encodeURIComponent(request.params.name) + '!'); - }, + method: 'GET', + path: '/{name}', + handler: function (request, reply) { + reply('Olá, ' + encodeURIComponent(request.params.name) + '!'); + }, }); server.start((err) => { - if (err) { - throw err; - } - console.log(`Servidor rodando em: ${server.info.uri}`); + if (err) { + throw err; + } + console.log(`Servidor rodando em: ${server.info.uri}`); }); ``` @@ -91,17 +91,17 @@ Adicione o código abaixo ao seu arquivo `server.js`: ```javascript server.register(require('inert'), (err) => { - if (err) { - throw err; - } - - server.route({ - method: 'GET', - path: '/hello', - handler: function (request, reply) { - reply.file('./public/hello.html'); - }, - }); + if (err) { + throw err; + } + + server.route({ + method: 'GET', + path: '/hello', + handler: function (request, reply) { + reply.file('./public/hello.html'); + }, + }); }); ``` diff --git a/docs/tutorials/pt_BR/plugins.md b/docs/tutorials/pt_BR/plugins.md index cbdd66ea..2fbcb3e6 100644 --- a/docs/tutorials/pt_BR/plugins.md +++ b/docs/tutorials/pt_BR/plugins.md @@ -18,14 +18,14 @@ Um plugin básico pode ser definido da seguinte forma: 'use strict'; const myPlugin = { - register: function (server, options, next) { - next(); - }, + register: function (server, options, next) { + next(); + }, }; myPlugin.register.attributes = { - name: 'myPlugin', - version: '1.0.0', + name: 'myPlugin', + version: '1.0.0', }; ``` @@ -35,11 +35,11 @@ Ou quando escrito como módulo externo: 'use strict'; exports.register = function (server, options, next) { - next(); + next(); }; exports.register.attributes = { - pkg: require('./package.json'), + pkg: require('./package.json'), }; ``` @@ -74,11 +74,11 @@ Por exemplo, para adicionar uma rota somente para as conexões com o label `'api const api = server.select('api'); api.route({ - method: 'GET', - path: '/', - handler: function (request, reply) { - reply('api index'); - }, + method: 'GET', + path: '/', + handler: function (request, reply) { + reply('api index'); + }, }); ``` @@ -102,16 +102,16 @@ Plugins podem ser carregados individualmente, ou como parte de um grupo definido ```javascript // carrega um plugin server.register(require('myplugin'), (err) => { - if (err) { - console.error('Failed to load plugin:', err); - } + if (err) { + console.error('Failed to load plugin:', err); + } }); // carrega múltiplos plugins server.register([require('myplugin'), require('yourplugin')], (err) => { - if (err) { - console.error('Failed to load a plugin:', err); - } + if (err) { + console.error('Failed to load a plugin:', err); + } }); ``` @@ -119,17 +119,17 @@ Para passar opções para o seu plugin, cria-se um objeto com as chaves `registe ```javascript server.register( - { - register: require('myplugin'), - options: { - message: 'hello', + { + register: require('myplugin'), + options: { + message: 'hello', + }, + }, + (err) => { + if (err) { + throw err; + } }, - }, - (err) => { - if (err) { - throw err; - } - }, ); ``` @@ -137,21 +137,21 @@ Esses objetos podem também ser passados como itens de um array ```javascript server.register( - [ - { - register: require('plugin1'), - options: {}, - }, - { - register: require('plugin2'), - options: {}, + [ + { + register: require('plugin1'), + options: {}, + }, + { + register: require('plugin2'), + options: {}, + }, + ], + (err) => { + if (err) { + throw err; + } }, - ], - (err) => { - if (err) { - throw err; - } - }, ); ``` @@ -167,19 +167,19 @@ Por exemplo, vamos dizer que temos um plugin definido da seguinte forma: 'use strict'; exports.register = function (server, options, next) { - server.route({ - method: 'GET', - path: '/test', - handler: function (request, reply) { - reply('test passed'); - }, - }); + server.route({ + method: 'GET', + path: '/test', + handler: function (request, reply) { + reply('test passed'); + }, + }); - next(); + next(); }; exports.register.attributes = { - pkg: require('./package.json'), + pkg: require('./package.json'), }; ``` @@ -187,17 +187,17 @@ Normalmente, quando esse plugin é carregado ele cria uma rota `GET` em `/test`. ```javascript server.register( - { register: require('myplugin') }, - { - routes: { - prefix: '/plugins', + { register: require('myplugin') }, + { + routes: { + prefix: '/plugins', + }, + }, + (err) => { + if (err) { + throw err; + } }, - }, - (err) => { - if (err) { - throw err; - } - }, ); ``` @@ -209,15 +209,15 @@ O parâmetro `select` funciona exatamente do mesmo jeito que `server.select()` f ```javascript server.register( - { register: require('myplugin') }, - { - select: ['webserver', 'admin'], - }, - (err) => { - if (err) { - throw err; - } - }, + { register: require('myplugin') }, + { + select: ['webserver', 'admin'], + }, + (err) => { + if (err) { + throw err; + } + }, ); ``` diff --git a/docs/tutorials/pt_BR/routing.md b/docs/tutorials/pt_BR/routing.md index f292d262..43ab710a 100644 --- a/docs/tutorials/pt_BR/routing.md +++ b/docs/tutorials/pt_BR/routing.md @@ -10,11 +10,11 @@ Quando definimos uma rota no Hapi, assim como em outros frameworks, são necess ```javascript server.route({ - method: 'GET', - path: '/', - handler: function (request, reply) { - reply('Hello!'); - }, + method: 'GET', + path: '/', + handler: function (request, reply) { + reply('Hello!'); + }, }); ``` @@ -24,11 +24,11 @@ Está rota responde a um método `GET` com a `string` 'Hello!'. A opção `metho ```javascript server.route({ - method: ['PUT', 'POST'], - path: '/', - handler: function (request, reply) { - reply('I did something!'); - }, + method: ['PUT', 'POST'], + path: '/', + handler: function (request, reply) { + reply('I did something!'); + }, }); ``` @@ -38,11 +38,11 @@ A opção `path` deve ser uma `string` e também poderá conter parâmetros nome ```javascript server.route({ - method: 'GET', - path: '/hello/{user}', - handler: function (request, reply) { - reply('Hello ' + encodeURIComponent(request.params.user) + '!'); - }, + method: 'GET', + path: '/hello/{user}', + handler: function (request, reply) { + reply('Hello ' + encodeURIComponent(request.params.user) + '!'); + }, }); ``` @@ -54,12 +54,12 @@ Neste exemplo, o parâmetro `user` é obrigatório: uma requisição a `/hello/b ```javascript server.route({ - method: 'GET', - path: '/hello/{user?}', - handler: function (request, reply) { - const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger'; - reply('Hello ' + user + '!'); - }, + method: 'GET', + path: '/hello/{user?}', + handler: function (request, reply) { + const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger'; + reply('Hello ' + user + '!'); + }, }); ``` @@ -71,12 +71,12 @@ Junto com o parâmetro de caminho opcional, você também pode permitir que esse ```javascript server.route({ - method: 'GET', - path: '/hello/{user*2}', - handler: function (request, reply) { - const userParts = request.params.user.split('/'); - reply('Hello ' + encodeURIComponent(userParts[0]) + ' ' + encodeURIComponent(userParts[1]) + '!'); - }, + method: 'GET', + path: '/hello/{user*2}', + handler: function (request, reply) { + const userParts = request.params.user.split('/'); + reply('Hello ' + encodeURIComponent(userParts[0]) + ' ' + encodeURIComponent(userParts[1]) + '!'); + }, }); ``` @@ -100,17 +100,17 @@ Aqui vamos exemplificar um par de opções concebidas para ajudar a gerar a docu ```javascript server.route({ - method: 'GET', - path: '/hello/{user?}', - handler: function (request, reply) { - const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger'; - reply('Hello ' + user + '!'); - }, - options: { - description: 'Say hello!', - notes: "The user parameter defaults to 'stranger' if unspecified", - tags: ['api', 'greeting'], - }, + method: 'GET', + path: '/hello/{user?}', + handler: function (request, reply) { + const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger'; + reply('Hello ' + user + '!'); + }, + options: { + description: 'Say hello!', + notes: "The user parameter defaults to 'stranger' if unspecified", + tags: ['api', 'greeting'], + }, }); ``` diff --git a/docs/tutorials/pt_BR/server-methods.md b/docs/tutorials/pt_BR/server-methods.md index d74439eb..5b71d505 100644 --- a/docs/tutorials/pt_BR/server-methods.md +++ b/docs/tutorials/pt_BR/server-methods.md @@ -10,8 +10,8 @@ Métodos de servidor são uma maneira útil para compartilhar funções. Eles s ```javascript const add = function (x, y, next) { - // note que a função 'next' é utilizada para retornar valores - next(null, x + y); + // note que a função 'next' é utilizada para retornar valores + next(null, x + y); }; server.method('add', add, {}); @@ -21,13 +21,13 @@ Ou um objeto com os parâmetros `name`, `method`, and `options` (perceba que voc ```javascript const add = function (x, y, next) { - next(null, x + y); + next(null, x + y); }; server.method({ - name: 'add', - method: add, - options: {}, + name: 'add', + method: add, + options: {}, }); ``` @@ -51,12 +51,12 @@ Falando de caching, outra grande vantagem dos métodos de servidor é que eles p ```javascript server.method('add', add, { - cache: { - expiresIn: 60000, - expiresAt: '30:22', - staleIn: 30000, - staleTimeout: 10000, - }, + cache: { + expiresIn: 60000, + expiresAt: '30:22', + staleIn: 30000, + staleTimeout: 10000, + }, }); ``` @@ -78,19 +78,19 @@ Além das opções acima, você também pode passar uma função personalizada. ```javascript const sum = function (array, next) { - let total = 0; + let total = 0; - array.forEach((item) => { - total += item; - }); + array.forEach((item) => { + total += item; + }); - next(null, total); + next(null, total); }; server.method('sum', sum, { - generateKey: function (array) { - return array.join(','); - }, + generateKey: function (array) { + return array.join(','); + }, }); ``` @@ -102,10 +102,10 @@ A última opção disponvível para métodos de servidor é o `bind`. Essa opç ```javascript const lookup = function (id, next) { - // calls myDB.getOne - this.getOne({ id: id }, (err, value) => { - next(err, value); - }); + // calls myDB.getOne + this.getOne({ id: id }, (err, value) => { + next(err, value); + }); }; server.method('lookup', lookup, { bind: myDB }); diff --git a/docs/tutorials/pt_BR/serving-files.md b/docs/tutorials/pt_BR/serving-files.md index 80f3beec..79c0b695 100644 --- a/docs/tutorials/pt_BR/serving-files.md +++ b/docs/tutorials/pt_BR/serving-files.md @@ -20,25 +20,25 @@ Primeiro, para usar o método reply: ```javascript server.register(require('inert'), (err) => { - if (err) { - throw err; - } - - server.route({ - method: 'GET', - path: '/picture.jpg', - handler: function (request, reply) { - reply.file('/path/to/picture.jpg'); - }, - }); - - server.start((err) => { if (err) { - throw err; + throw err; } - console.log('Servidor rodando em:', server.info.uri); - }); + server.route({ + method: 'GET', + path: '/picture.jpg', + handler: function (request, reply) { + reply.file('/path/to/picture.jpg'); + }, + }); + + server.start((err) => { + if (err) { + throw err; + } + + console.log('Servidor rodando em:', server.info.uri); + }); }); ``` @@ -55,35 +55,35 @@ const Path = require('path'); const Hapi = require('hapi'); const server = new Hapi.Server({ - connections: { - routes: { - files: { - relativeTo: Path.join(__dirname, 'public'), - }, + connections: { + routes: { + files: { + relativeTo: Path.join(__dirname, 'public'), + }, + }, }, - }, }); server.register(require('inert'), (err) => { - if (err) { - throw err; - } - - server.route({ - method: 'GET', - path: '/picture.jpg', - handler: function (request, reply) { - reply.file('path/to/picture.jpg'); - }, - }); - - server.start((err) => { if (err) { - throw err; + throw err; } - console.log('Server running at:', server.info.uri); - }); + server.route({ + method: 'GET', + path: '/picture.jpg', + handler: function (request, reply) { + reply.file('path/to/picture.jpg'); + }, + }); + + server.start((err) => { + if (err) { + throw err; + } + + console.log('Server running at:', server.info.uri); + }); }); ``` @@ -95,11 +95,11 @@ Uma alternativa para a rota acima seria o uso do manipulador `file`: ```javascript server.route({ - method: 'GET', - path: '/picture.jpg', - handler: { - file: 'picture.jpg', - }, + method: 'GET', + path: '/picture.jpg', + handler: { + file: 'picture.jpg', + }, }); ``` @@ -109,13 +109,13 @@ Nós também podemos especificar o parâmetro como uma função que aceita o obj ```javascript server.route({ - method: 'GET', - path: '/{filename}', - handler: { - file: function (request) { - return request.params.filename; + method: 'GET', + path: '/{filename}', + handler: { + file: function (request) { + return request.params.filename; + }, }, - }, }); ``` @@ -124,16 +124,16 @@ nós podemos fazer algumas coisas adicionais, como o ajuste do cabeçalho `Conte ```javascript server.route({ - method: 'GET', - path: '/script.js', - handler: { - file: { - path: 'script.js', - filename: 'client.js', // sobreescreve o nome do arquivo no cabeçalho Content-Disposition - mode: 'attachment', // especifica o Content-Disposition com um anexo - lookupCompressed: true, // permite olhar para script.js.gz se a requisição permitir isso + method: 'GET', + path: '/script.js', + handler: { + file: { + path: 'script.js', + filename: 'client.js', // sobreescreve o nome do arquivo no cabeçalho Content-Disposition + mode: 'attachment', // especifica o Content-Disposition com um anexo + lookupCompressed: true, // permite olhar para script.js.gz se a requisição permitir isso + }, }, - }, }); ``` @@ -143,13 +143,13 @@ Além do manipulador `file`, inert também adiciona um manipulador de `directory ```javascript server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: 'public', + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: 'public', + }, }, - }, }); ``` @@ -159,14 +159,14 @@ A rota acima responderá qualquer requisição procurando por um arquivo corresp ```javascript server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: 'public', - listing: true, + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: 'public', + listing: true, + }, }, - }, }); ``` diff --git a/docs/tutorials/pt_BR/validation.md b/docs/tutorials/pt_BR/validation.md index af09f6a8..3b8a5f0e 100644 --- a/docs/tutorials/pt_BR/validation.md +++ b/docs/tutorials/pt_BR/validation.md @@ -24,18 +24,18 @@ Vamos observar um exemplo: ```javascript server.route({ - method: 'GET', - path: '/hello/{name}', - handler: function (request, reply) { - reply('Hello ' + request.params.name + '!'); - }, - options: { - validate: { - params: { - name: Joi.string().min(3).max(10), - }, + method: 'GET', + path: '/hello/{name}', + handler: function (request, reply) { + reply('Hello ' + request.params.name + '!'); + }, + options: { + validate: { + params: { + name: Joi.string().min(3).max(10), + }, + }, }, - }, }); ``` @@ -47,13 +47,13 @@ Com essa configuração, se nós fizermos uma requisição para `/hello/jennifer ```json { - "error": "Bad Request", - "message": "the length of name must be at least 3 characters long", - "statusCode": 400, - "validation": { - "keys": ["name"], - "source": "params" - } + "error": "Bad Request", + "message": "the length of name must be at least 3 characters long", + "statusCode": 400, + "validation": { + "keys": ["name"], + "source": "params" + } } ``` @@ -61,13 +61,13 @@ Da memsa forma, se nós fizermos uma requisição para `/hello/thisnameiswaytool ```json { - "error": "Bad Request", - "message": "the length of name must be less than or equal to 10 characters long", - "statusCode": 400, - "validation": { - "keys": ["name"], - "source": "params" - } + "error": "Bad Request", + "message": "the length of name must be less than or equal to 10 characters long", + "statusCode": 400, + "validation": { + "keys": ["name"], + "source": "params" + } } ``` @@ -79,18 +79,18 @@ Por exemplo, se você tem uma rota que lista todos os recursos e você gostaria ```javascript server.route({ - method: 'GET', - path: '/list', - handler: function (request, reply) { - reply(resources.slice(0, request.query.limit)); - }, - options: { - validate: { - query: { - limit: Joi.number().integer().min(1).max(100).default(10), - }, + method: 'GET', + path: '/list', + handler: function (request, reply) { + reply(resources.slice(0, request.query.limit)); + }, + options: { + validate: { + query: { + limit: Joi.number().integer().min(1).max(100).default(10), + }, + }, }, - }, }); ``` @@ -98,13 +98,13 @@ Essa configuração garante que o parâmetro de query `limit` é sempre um intei ```json { - "error": "Bad Request", - "message": "the key offset is not allowed", - "statusCode": 400, - "validation": { - "keys": ["offset"], - "source": "query" - } + "error": "Bad Request", + "message": "the key offset is not allowed", + "statusCode": 400, + "validation": { + "keys": ["offset"], + "source": "query" + } } ``` @@ -174,31 +174,31 @@ Aqui está um exemplo da configuração de uma rota que retorna uma lista de liv ```javascript const bookSchema = Joi.object({ - title: Joi.string().required(), - author: Joi.string().required(), - isbn: Joi.string().length(10), - pageCount: Joi.number(), - datePublished: Joi.date().iso(), + title: Joi.string().required(), + author: Joi.string().required(), + isbn: Joi.string().length(10), + pageCount: Joi.number(), + datePublished: Joi.date().iso(), }); server.route({ - method: 'GET', - path: '/books', - options: { - handler: function (request, reply) { - getBooks((err, books) => { - if (err) { - return reply(err); - } - - return reply(books); - }); - }, - response: { - sample: 50, - schema: Joi.array().items(bookSchema), + method: 'GET', + path: '/books', + options: { + handler: function (request, reply) { + getBooks((err, books) => { + if (err) { + return reply(err); + } + + return reply(books); + }); + }, + response: { + sample: 50, + schema: Joi.array().items(bookSchema), + }, }, - }, }); ``` diff --git a/docs/tutorials/pt_BR/views.md b/docs/tutorials/pt_BR/views.md index 835520b0..d97d9816 100644 --- a/docs/tutorials/pt_BR/views.md +++ b/docs/tutorials/pt_BR/views.md @@ -24,15 +24,15 @@ const Hoek = require('hoek'); const server = new Hapi.Server(); server.register(require('vision'), (err) => { - Hoek.assert(!err, err); - - server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: 'templates', - }); + Hoek.assert(!err, err); + + server.views({ + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: 'templates', + }); }); ``` @@ -52,13 +52,13 @@ Note que todas opções pode ser definidas de forma global, que configura todos ```javascript server.views({ - engines: { - html: { - module: require('handlebars'), - compileMode: 'sync', // motor específica + engines: { + html: { + module: require('handlebars'), + compileMode: 'sync', // motor específica + }, }, - }, - compileMode: 'async', // configuração global + compileMode: 'async', // configuração global }); ``` @@ -109,13 +109,13 @@ Sua configuração pode parecer isso: ```javascript server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: './views', - layoutPath: './views/layout', - helpersPath: './views/helpers', + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: './views', + layoutPath: './views/layout', + helpersPath: './views/helpers', }); ``` @@ -129,11 +129,11 @@ O primeiro método que renderiza um view que vamos olhar é `reply.view()`. Aqui ```javascript server.route({ - method: 'GET', - path: '/', - handler: function (request, reply) { - reply.view('index'); - }, + method: 'GET', + path: '/', + handler: function (request, reply) { + reply.view('index'); + }, }); ``` @@ -149,11 +149,11 @@ O segundo método para renderizar a view, é usando um objeto com a propriedade ```javascript server.route({ - method: 'GET', - path: '/', - handler: { - view: 'index', - }, + method: 'GET', + path: '/', + handler: { + view: 'index', + }, }); ``` @@ -178,17 +178,17 @@ O mais simplete caminho para alcançar isso é usando a opção `context` ao cha ```javascript const defaultContext = { - title: 'My personal site', + title: 'My personal site', }; server.views({ - engines: { - html: { - module: require('handlebars'), - compileMode: 'sync', // específico do motor + engines: { + html: { + module: require('handlebars'), + compileMode: 'sync', // específico do motor + }, }, - }, - context: defaultContext, + context: defaultContext, }); ``` @@ -203,20 +203,20 @@ O código a seguir é uma função helper que irá armazerna em um arquivo chama ```javascript module.exports = function () { - const fortunes = [ - 'Heisenberg may have slept here...', - 'Wanna buy a duck?', - 'Say no, then negotiate.', - 'Time and tide wait for no man.', - 'To teach is to learn.', - 'Never ask the barber if you need a haircut.', - 'You will forget that you ever knew me.', - 'You will be run over by a beer truck.', - 'Fortune favors the lucky.', - 'Have a nice day!', - ]; - const x = Math.floor(Math.random() * fortunes.length); - return fortunes[x]; + const fortunes = [ + 'Heisenberg may have slept here...', + 'Wanna buy a duck?', + 'Say no, then negotiate.', + 'Time and tide wait for no man.', + 'To teach is to learn.', + 'Never ask the barber if you need a haircut.', + 'You will forget that you ever knew me.', + 'You will be run over by a beer truck.', + 'Fortune favors the lucky.', + 'Have a nice day!', + ]; + const x = Math.floor(Math.random() * fortunes.length); + return fortunes[x]; }; ``` @@ -239,29 +239,29 @@ const Hapi = require('hapi'); const server = new Hapi.Server(); server.connection({ - port: Number(process.argv[2] || 8080), - host: 'localhost', + port: Number(process.argv[2] || 8080), + host: 'localhost', }); server.register(require('vision'), (err) => { - Hoek.assert(!err, err); - - server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: 'templates', - helpersPath: 'helpers', - }); - - server.route({ - method: 'GET', - path: '/', - handler: function (request, reply) { - reply.view('index'); - }, - }); + Hoek.assert(!err, err); + + server.views({ + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: 'templates', + helpersPath: 'helpers', + }); + + server.route({ + method: 'GET', + path: '/', + handler: function (request, reply) { + reply.view('index'); + }, + }); }); server.start(); @@ -275,9 +275,9 @@ Podemos usar o sistema de layout embutido, primeiro configure a view: ```javascript server.views({ - // ... - layout: true, - layoutPath: Path.join(__dirname, 'views/layout'), + // ... + layout: true, + layoutPath: Path.join(__dirname, 'views/layout'), }); ``` @@ -287,9 +287,9 @@ Estabelecer uma área de conteúdo em seu `layout.html`: ```html - - {{{content}}} - + + {{{content}}} + ``` @@ -305,8 +305,8 @@ Se você quiser uma layout padrão diferente, você pode definir uma opção glo ```javascript server.views({ - // ... - layout: 'another_default', + // ... + layout: 'another_default', }); ``` diff --git a/docs/tutorials/tr_TR/auth.md b/docs/tutorials/tr_TR/auth.md index d7cabab7..4e10651d 100644 --- a/docs/tutorials/tr_TR/auth.md +++ b/docs/tutorials/tr_TR/auth.md @@ -21,47 +21,47 @@ const Bcrypt = require('bcrypt'); const Hapi = require('@hapi/hapi'); const users = { - john: { - username: 'john', - password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' - name: 'John Doe', - id: '2133d32a', - }, + john: { + username: 'john', + password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' + name: 'John Doe', + id: '2133d32a', + }, }; const validate = async (request, username, password) => { - const user = users[username]; - if (!user) { - return { credentials: null, isValid: false }; - } + const user = users[username]; + if (!user) { + return { credentials: null, isValid: false }; + } - const isValid = await Bcrypt.compare(password, user.password); - const credentials = { id: user.id, name: user.name }; + const isValid = await Bcrypt.compare(password, user.password); + const credentials = { id: user.id, name: user.name }; - return { isValid, credentials }; + return { isValid, credentials }; }; const start = async () => { - const server = Hapi.server({ port: 4000 }); + const server = Hapi.server({ port: 4000 }); - await server.register(require('hapi-auth-basic')); + await server.register(require('hapi-auth-basic')); - server.auth.strategy('simple', 'basic', { validate }); + server.auth.strategy('simple', 'basic', { validate }); - server.route({ - method: 'GET', - path: '/', - options: { - auth: 'simple', - }, - handler: function (request, h) { - return 'welcome'; - }, - }); + server.route({ + method: 'GET', + path: '/', + options: { + auth: 'simple', + }, + handler: function (request, h) { + return 'welcome'; + }, + }); - await server.start(); + await server.start(); - console.log('server running at: ' + server.info.uri); + console.log('server running at: ' + server.info.uri); }; start(); diff --git a/docs/tutorials/tr_TR/caching.md b/docs/tutorials/tr_TR/caching.md index 0214faf4..35d41719 100644 --- a/docs/tutorials/tr_TR/caching.md +++ b/docs/tutorials/tr_TR/caching.md @@ -22,23 +22,23 @@ Hadi bu başlığı hapi ile nasıl ayarlayabileceğimize bakalım: ```javascript server.route({ - path: '/hapi/{ttl?}', - method: 'GET', - handler: function (request, h) { - const response = h.response({ be: 'hapi' }); - - if (request.params.ttl) { - response.ttl(request.params.ttl); - } - - return response; - }, - options: { - cache: { - expiresIn: 30 * 1000, - privacy: 'private', + path: '/hapi/{ttl?}', + method: 'GET', + handler: function (request, h) { + const response = h.response({ be: 'hapi' }); + + if (request.params.ttl) { + response.ttl(request.params.ttl); + } + + return response; + }, + options: { + cache: { + expiresIn: 30 * 1000, + privacy: 'private', + }, }, - }, }); ``` @@ -94,21 +94,21 @@ hapi varsayılan olarak [catbox memory](https://github.com/hapijs/catbox-memory) const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 8000, - cache: [ - { - name: 'mongoCache', - engine: require('catbox-mongodb'), - host: '127.0.0.1', - partition: 'cache', - }, - { - name: 'redisCache', - engine: require('catbox-redis'), - host: '127.0.0.1', - partition: 'cache', - }, - ], + port: 8000, + cache: [ + { + name: 'mongoCache', + engine: require('catbox-mongodb'), + host: '127.0.0.1', + partition: 'cache', + }, + { + name: 'redisCache', + engine: require('catbox-redis'), + host: '127.0.0.1', + partition: 'cache', + }, + ], }); ``` @@ -120,36 +120,36 @@ Yukarıdaki örnekte, iki tane catbox istemcisi tanımladık: mongoCache ve redi ```javascript const start = async () => { - const add = async (a, b) => { - await Hoek.wait(1000); // Yavaş I/O simülasyonu - - return Number(a) + Number(b); - }; - - const sumCache = server.cache({ - cache: 'mongoCache', - expiresIn: 10 * 1000, - segment: 'customSegment', - generateFunc: async (id) => { - return await add(id.a, id.b); - }, - generateTimeout: 2000, - }); - - server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: async function (request, h) { - const { a, b } = request.params; - const id = `${a}:${b}`; - - return await sumCache.get({ id, a, b }); - }, - }); - - await server.start(); - - console.log('Server running at:', server.info.uri); + const add = async (a, b) => { + await Hoek.wait(1000); // Yavaş I/O simülasyonu + + return Number(a) + Number(b); + }; + + const sumCache = server.cache({ + cache: 'mongoCache', + expiresIn: 10 * 1000, + segment: 'customSegment', + generateFunc: async (id) => { + return await add(id.a, id.b); + }, + generateTimeout: 2000, + }); + + server.route({ + path: '/add/{a}/{b}', + method: 'GET', + handler: async function (request, h) { + const { a, b } = request.params; + const id = `${a}:${b}`; + + return await sumCache.get({ id, a, b }); + }, + }); + + await server.start(); + + console.log('Server running at:', server.info.uri); }; start(); @@ -171,28 +171,28 @@ Daha iyi olabilir! Yüzde doksan beş ihtimal önbellekleme için [sunucu yönte ```javascript const start = async () => { - // ... - - server.method('sum', add, { - cache: { - cache: 'mongoCache', - expiresIn: 10 * 1000, - generateTimeout: 2000, - }, - }); - - server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: async function (request, h) { - const { a, b } = request.params; - return await server.methods.sum(a, b); - }, - }); - - await server.start(); - - // ... + // ... + + server.method('sum', add, { + cache: { + cache: 'mongoCache', + expiresIn: 10 * 1000, + generateTimeout: 2000, + }, + }); + + server.route({ + path: '/add/{a}/{b}', + method: 'GET', + handler: async function (request, h) { + const { a, b } = request.params; + return await server.methods.sum(a, b); + }, + }); + + await server.start(); + + // ... }; start(); @@ -213,32 +213,32 @@ start(); ```javascript const start = async () => { - //... - - server.method('sum', add, { - cache: { - cache: 'mongoCache', - expiresIn: 10 * 1000, - generateTimeout: 2000, - getDecoratedValue: true, - }, - }); - - server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: async function (request, h) { - const { a, b } = request.params; - const { value, cached } = await server.methods.sum(a, b); - const lastModified = cached ? new Date(cached.stored) : new Date(); - - return h.response(value).header('Last-modified', lastModified.toUTCString()); - }, - }); - - await server.start(); - - // ... + //... + + server.method('sum', add, { + cache: { + cache: 'mongoCache', + expiresIn: 10 * 1000, + generateTimeout: 2000, + getDecoratedValue: true, + }, + }); + + server.route({ + path: '/add/{a}/{b}', + method: 'GET', + handler: async function (request, h) { + const { a, b } = request.params; + const { value, cached } = await server.methods.sum(a, b); + const lastModified = cached ? new Date(cached.stored) : new Date(); + + return h.response(value).header('Last-modified', lastModified.toUTCString()); + }, + }); + + await server.start(); + + // ... }; ``` diff --git a/docs/tutorials/tr_TR/cookies.md b/docs/tutorials/tr_TR/cookies.md index ab6c49bb..ae2f64e7 100644 --- a/docs/tutorials/tr_TR/cookies.md +++ b/docs/tutorials/tr_TR/cookies.md @@ -18,12 +18,12 @@ Bir kurabiye kullanmak için önce [`server.state(name, [options])`](/api#-serve ```javascript server.state('data', { - ttl: null, - isSecure: true, - isHttpOnly: true, - encoding: 'base64json', - clearInvalid: false, // bozuk kurabiyeleri at - strictHeader: true, // RFC 6265 ihlallerine göz yumma + ttl: null, + isSecure: true, + isHttpOnly: true, + encoding: 'base64json', + clearInvalid: false, // bozuk kurabiyeleri at + strictHeader: true, // RFC 6265 ihlallerine göz yumma }); ``` @@ -33,12 +33,12 @@ Buna ek olarak, `options.state` nesnesinde bulunan iki özelliği kullanarak kur ```json5 { - options: { - state: { - parse: true, // kurabiyeleri ayristir ve request.state icerisinde tut - failAction: 'error', // 'ignore' ya da 'log' da olabilir + options: { + state: { + parse: true, // kurabiyeleri ayristir ve request.state icerisinde tut + failAction: 'error', // 'ignore' ya da 'log' da olabilir + }, }, - }, } ``` diff --git a/docs/tutorials/tr_TR/getting-started.md b/docs/tutorials/tr_TR/getting-started.md index 5d3452a4..c77d9bbb 100644 --- a/docs/tutorials/tr_TR/getting-started.md +++ b/docs/tutorials/tr_TR/getting-started.md @@ -28,18 +28,18 @@ En basit sunucu şöyle bir şeydir: const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 3000, - host: 'localhost', + port: 3000, + host: 'localhost', }); const init = async () => { - await server.start(); - console.log(`Server running at: ${server.info.uri}`); + await server.start(); + console.log(`Server running at: ${server.info.uri}`); }; process.on('unhandledRejection', (err) => { - console.log(err); - process.exit(1); + console.log(err); + process.exit(1); }); init(); @@ -59,34 +59,34 @@ Artık sunucumuz olduğuna göre, bir iki güzergah eklemeliyiz ki gerçekten bi const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 3000, - host: 'localhost', + port: 3000, + host: 'localhost', }); server.route({ - method: 'GET', - path: '/', - handler: (request, h) => { - return 'Hello, world!'; - }, + method: 'GET', + path: '/', + handler: (request, h) => { + return 'Hello, world!'; + }, }); server.route({ - method: 'GET', - path: '/{name}', - handler: (request, h) => { - return 'Hello, ' + encodeURIComponent(request.params.name) + '!'; - }, + method: 'GET', + path: '/{name}', + handler: (request, h) => { + return 'Hello, ' + encodeURIComponent(request.params.name) + '!'; + }, }); const init = async () => { - await server.start(); - console.log(`Server running at: ${server.info.uri}`); + await server.start(); + console.log(`Server running at: ${server.info.uri}`); }; process.on('unhandledRejection', (err) => { - console.log(err); - process.exit(1); + console.log(err); + process.exit(1); }); init(); @@ -108,18 +108,18 @@ Hello world uygulamamızla basit bir hapi uygulaması başlatabildiğimizi kanı ```javascript const init = async () => { - await server.register(require('@hapi/inert')); - - server.route({ - method: 'GET', - path: '/hello', - handler: (request, h) => { - return h.file('./public/hello.html'); - }, - }); - - await server.start(); - console.log(`Server running at: ${server.info.uri}`); + await server.register(require('@hapi/inert')); + + server.route({ + method: 'GET', + path: '/hello', + handler: (request, h) => { + return h.file('./public/hello.html'); + }, + }); + + await server.start(); + console.log(`Server running at: ${server.info.uri}`); }; ``` @@ -134,13 +134,13 @@ Ana dizininde içerisinde `hello.html` olan `public` diye bir dizin oluştur ve ```html - - - Hapi.js is awesome! - - -

    Hello World.

    - + + + Hapi.js is awesome! + + +

    Hello World.

    + ``` @@ -172,46 +172,46 @@ Sonra `server.js` dosyasını güncelle: const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 3000, - host: 'localhost', + port: 3000, + host: 'localhost', }); server.route({ - method: 'GET', - path: '/', - handler: (request, h) => { - return 'Hello, world!'; - }, + method: 'GET', + path: '/', + handler: (request, h) => { + return 'Hello, world!'; + }, }); server.route({ - method: 'GET', - path: '/{name}', - handler: (request, h) => { - // request.log(['a', 'name'], "Request name"); - // or - request.logger.info('In handler %s', request.path); - - return `Hello, ${encodeURIComponent(request.params.name)}!`; - }, -}); + method: 'GET', + path: '/{name}', + handler: (request, h) => { + // request.log(['a', 'name'], "Request name"); + // or + request.logger.info('In handler %s', request.path); -const init = async () => { - await server.register({ - plugin: require('hapi-pino'), - options: { - prettyPrint: false, - logEvents: ['response', 'onPostStart'], + return `Hello, ${encodeURIComponent(request.params.name)}!`; }, - }); +}); - await server.start(); - console.log(`Server running at: ${server.info.uri}`); +const init = async () => { + await server.register({ + plugin: require('hapi-pino'), + options: { + prettyPrint: false, + logEvents: ['response', 'onPostStart'], + }, + }); + + await server.start(); + console.log(`Server running at: ${server.info.uri}`); }; process.on('unhandledRejection', (err) => { - console.log(err); - process.exit(1); + console.log(err); + process.exit(1); }); init(); diff --git a/docs/tutorials/tr_TR/logging.md b/docs/tutorials/tr_TR/logging.md index d83580a1..21fbb4d4 100644 --- a/docs/tutorials/tr_TR/logging.md +++ b/docs/tutorials/tr_TR/logging.md @@ -34,9 +34,9 @@ hapi sunucu nesnesi her bir günlükleme olayı için bir olay yayınlar. Standa ```javascript server.events.on('log', (event, tags) => { - if (tags.error) { - console.log(`Server error: ${event.error ? event.error.message : 'unknown'}`); - } + if (tags.error) { + console.log(`Server error: ${event.error ? event.error.message : 'unknown'}`); + } }); ``` @@ -46,16 +46,16 @@ Bir istek ile ilgili tüm günlükleri `request.logs` kullanarak alabilirsin. G ```javascript server.route({ - method: 'GET', - path: '/', - options: { - log: { - collect: true, + method: 'GET', + path: '/', + options: { + log: { + collect: true, + }, + }, + handler: function (request, h) { + return 'hello'; }, - }, - handler: function (request, h) { - return 'hello'; - }, }); ``` diff --git a/docs/tutorials/tr_TR/plugins.md b/docs/tutorials/tr_TR/plugins.md index 5504ee9f..946e5ffe 100644 --- a/docs/tutorials/tr_TR/plugins.md +++ b/docs/tutorials/tr_TR/plugins.md @@ -20,22 +20,22 @@ Eklenti yazmak çok kolay. Aslında yalnızca `register` (kaydet) özelliği ola 'use strict'; const myPlugin = { - name: 'myPlugin', - version: '1.0.0', - register: async function (server, options) { - // Örnek bir yol yaratalım - - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'hello, world'; - }, - }); - - // vesaire... - await someAsyncMethods(); - }, + name: 'myPlugin', + version: '1.0.0', + register: async function (server, options) { + // Örnek bir yol yaratalım + + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'hello, world'; + }, + }); + + // vesaire... + await someAsyncMethods(); + }, }; ``` @@ -45,21 +45,21 @@ Ya da harici bir modül olarak yazıldıklarında `pkg` özelliği belirleyebili 'use strict'; exports.plugin = { - pkg: require('./package.json'), - register: async function (server, options) { - // Örnek bir yol yaratalım - - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'hello, world'; - }, - }); - - // vesaire... - await someAsyncMethods(); - }, + pkg: require('./package.json'), + register: async function (server, options) { + // Örnek bir yol yaratalım + + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'hello, world'; + }, + }); + + // vesaire... + await someAsyncMethods(); + }, }; ``` @@ -87,13 +87,13 @@ Eklentiler `server.register()` yöntemiyle tek tek ya da bir grup olarak bir diz ```javascript const start = async function () { - // bir eklenti yükle + // bir eklenti yükle - await server.register(require('myplugin')); + await server.register(require('myplugin')); - // birden fazla eklenti yükle + // birden fazla eklenti yükle - await server.register([require('myplugin'), require('yourplugin')]); + await server.register([require('myplugin'), require('yourplugin')]); }; ``` @@ -101,12 +101,12 @@ Eklentine seçenekler göndermek için, bunun yerine `plugin` (eklenti) ve `opti ```javascript const start = async function () { - await server.register({ - plugin: require('myplugin'), - options: { - message: 'hello', - }, - }); + await server.register({ + plugin: require('myplugin'), + options: { + message: 'hello', + }, + }); }; ``` @@ -114,16 +114,16 @@ Bu nesneler bir dizi içinde de gönderilebilir: ```javascript const start = async function () { - await server.register([ - { - plugin: require('plugin1'), - options: {}, - }, - { - plugin: require('plugin2'), - options: {}, - }, - ]); + await server.register([ + { + plugin: require('plugin1'), + options: {}, + }, + { + plugin: require('plugin2'), + options: {}, + }, + ]); }; ``` @@ -139,19 +139,19 @@ Farzı mahal şöyle bir eklentimiz olsun: 'use strict'; exports.plugin = { - pkg: require('./package.json'), - register: async function (server, options) { - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'test passed'; - }, - }); - - // vesaire... - await someAsyncMethods(); - }, + pkg: require('./package.json'), + register: async function (server, options) { + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'test passed'; + }, + }); + + // vesaire... + await someAsyncMethods(); + }, }; ``` @@ -159,11 +159,11 @@ Normalde bu eklenti yüklendiğinde `/test`e bir `GET` yolu oluşturur. Ancak se ```javascript const start = async function () { - await server.register(require('myplugin'), { - routes: { - prefix: '/plugins', - }, - }); + await server.register(require('myplugin'), { + routes: { + prefix: '/plugins', + }, + }); }; ``` diff --git a/docs/tutorials/tr_TR/routing.md b/docs/tutorials/tr_TR/routing.md index 2fbc5920..0931bc13 100644 --- a/docs/tutorials/tr_TR/routing.md +++ b/docs/tutorials/tr_TR/routing.md @@ -12,11 +12,11 @@ Aynı diğer çatılarda (framework) olduğu gibi, hapide de bir yol tanımlarke ```javascript server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return 'Selam!'; - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return 'Selam!'; + }, }); ``` @@ -26,11 +26,11 @@ Yukarıdaki yol (route) `/` güzergahına yapılan bir `GET` isteğine `Selam!` ```javascript server.route({ - method: ['PUT', 'POST'], - path: '/', - handler: function (request, h) { - return 'Bir şey yaptım!'; - }, + method: ['PUT', 'POST'], + path: '/', + handler: function (request, h) { + return 'Bir şey yaptım!'; + }, }); ``` @@ -40,11 +40,11 @@ Güzergah seçeneği bir metin olmalı. Bununla birlikte içerisinde adlandırı ```javascript server.route({ - method: 'GET', - path: '/selam/{user}', - handler: function (request, h) { - return `Selam ${encodeURIComponent(request.params.user)}!`; - }, + method: 'GET', + path: '/selam/{user}', + handler: function (request, h) { + return `Selam ${encodeURIComponent(request.params.user)}!`; + }, }); ``` @@ -56,13 +56,13 @@ Yukarıdaki örnekte, user değiştirgesi gereklidir: `/selam/hilmi` ya da `/sel ```javascript server.route({ - method: 'GET', - path: '/selam/{user?}', - handler: function (request, h) { - const user = request.params.user ? encodeURIComponent(request.params.user) : 'yabancı'; + method: 'GET', + path: '/selam/{user?}', + handler: function (request, h) { + const user = request.params.user ? encodeURIComponent(request.params.user) : 'yabancı'; - return `Selam ${user}!`; - }, + return `Selam ${user}!`; + }, }); ``` @@ -74,12 +74,12 @@ Seçime bağlı güzergah değiştirgelerinin yanı sıra, birden çok bölmeyle ```javascript server.route({ - method: 'GET', - path: '/selam/{user*2}', - handler: function (request, h) { - const userParts = request.params.user.split('/'); - return `Selam ${encodeURIComponent(userParts[0])} ${encodeURIComponent(userParts[1])}!`; - }, + method: 'GET', + path: '/selam/{user*2}', + handler: function (request, h) { + const userParts = request.params.user.split('/'); + return `Selam ${encodeURIComponent(userParts[0])} ${encodeURIComponent(userParts[1])}!`; + }, }); ``` @@ -105,18 +105,18 @@ Burada dokümantasyon üretmek için tasarlanan bir kaç seçeneğe bakıyoruz: ```javascript server.route({ - method: 'GET', - path: '/selam/{user?}', - handler: function (request, h) { - const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger'; - - return `Selam ${user}!`; - }, - options: { - description: 'Say Selam!', - notes: "The user parameter defaults to 'stranger' if unspecified", - tags: ['api', 'greeting'], - }, + method: 'GET', + path: '/selam/{user?}', + handler: function (request, h) { + const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger'; + + return `Selam ${user}!`; + }, + options: { + description: 'Say Selam!', + notes: "The user parameter defaults to 'stranger' if unspecified", + tags: ['api', 'greeting'], + }, }); ``` diff --git a/docs/tutorials/tr_TR/server-methods.md b/docs/tutorials/tr_TR/server-methods.md index 0531ad8d..03d1046b 100644 --- a/docs/tutorials/tr_TR/server-methods.md +++ b/docs/tutorials/tr_TR/server-methods.md @@ -12,7 +12,7 @@ Sunucu yöntemleri birden fazla yerde kullanılan modüllerin lazım olan her ta ```javascript const add = function (x, y) { - return x + y; + return x + y; }; server.method('add', add, {}); @@ -22,13 +22,13 @@ server.method('add', add, {}); ```javascript const add = function (x, y) { - return x + y; + return x + y; }; server.method({ - name: 'add', - method: add, - options: {}, + name: 'add', + method: add, + options: {}, }); ``` @@ -48,8 +48,8 @@ Bu sunucu yöntemi `server.methods.math.add()` ile çağrılır. ```js const add = async function (x, y) { - const result = await someLongRunningFunction(x, y); - return result; + const result = await someLongRunningFunction(x, y); + return result; }; server.method('add', add, {}); @@ -63,13 +63,13 @@ Sunucu yöntemlerinin başlıca avantajlarından biri hapinin ana önbelleklemes ```javascript server.method('add', add, { - cache: { - expiresIn: 60000, - expiresAt: '20:30', - staleIn: 30000, - staleTimeout: 10000, - generateTimeout: 100, - }, + cache: { + expiresIn: 60000, + expiresAt: '20:30', + staleIn: 30000, + staleTimeout: 10000, + generateTimeout: 100, + }, }); ``` @@ -89,18 +89,18 @@ Bir sunucu yönteminin her bir çağrı sonucunun `ttl` (time-to-live (yaşanaca ```js const add = async function (x, y, flags) { - const result = await someLongRunningFunction(x, y); + const result = await someLongRunningFunction(x, y); - flags.ttl = 5 * 60 * 1000; // 5 mins + flags.ttl = 5 * 60 * 1000; // 5 mins - return result; + return result; }; server.method('add', add, { - cache: { - expiresIn: 2000, - generateTimeout: 100, - }, + cache: { + expiresIn: 2000, + generateTimeout: 100, + }, }); server.methods.add(5, 12); @@ -114,17 +114,17 @@ Yukarıdaki seçeneklere ek olarak, yöntemine gönderilen değiştirgeleri kull ```javascript const sum = function (array) { - let total = 0; + let total = 0; - array.forEach((item) => { - total += item; - }); + array.forEach((item) => { + total += item; + }); - return total; + return total; }; server.method('sum', sum, { - generateKey: (array) => array.join(','), + generateKey: (array) => array.join(','), }); ``` @@ -136,9 +136,9 @@ Sunucu yöntemine gönderilen son isteğe bağlı yöntem `bind` (bağla)dır. ` ```javascript const lookup = async function (id) { - // myDB.getOne çağrısı yapar + // myDB.getOne çağrısı yapar - return await this.getOne({ id }); + return await this.getOne({ id }); }; server.method('lookup', lookup, { bind: myDB }); diff --git a/docs/tutorials/tr_TR/serving-files.md b/docs/tutorials/tr_TR/serving-files.md index ea4418a6..2fc4dfc9 100644 --- a/docs/tutorials/tr_TR/serving-files.md +++ b/docs/tutorials/tr_TR/serving-files.md @@ -20,19 +20,19 @@ Bir ağ uygulaması yazarken eninde sonunda diskten bir dosya sunmanın vakti ge ```javascript const start = async () => { - await server.register(require('@hapi/inert')); + await server.register(require('@hapi/inert')); - server.route({ - method: 'GET', - path: '/picture.jpg', - handler: function (request, h) { - return h.file('/path/to/picture.jpg'); - }, - }); + server.route({ + method: 'GET', + path: '/picture.jpg', + handler: function (request, h) { + return h.file('/path/to/picture.jpg'); + }, + }); - await server.start(); + await server.start(); - console.log('Server running at:', server.info.uri); + console.log('Server running at:', server.info.uri); }; start(); @@ -51,27 +51,27 @@ const Hapi = require('@hapi/hapi'); const Path = require('path'); const server = Hapi.server({ - routes: { - files: { - relativeTo: Path.join(__dirname, 'public'), + routes: { + files: { + relativeTo: Path.join(__dirname, 'public'), + }, }, - }, }); const start = async () => { - await server.register(require('@hapi/inert')); + await server.register(require('@hapi/inert')); - server.route({ - method: 'GET', - path: '/picture.jpg', - handler: function (request, h) { - return h.file('picture.jpg'); - }, - }); + server.route({ + method: 'GET', + path: '/picture.jpg', + handler: function (request, h) { + return h.file('picture.jpg'); + }, + }); - await server.start(); + await server.start(); - console.log('Server running at:', server.info.uri); + console.log('Server running at:', server.info.uri); }; start(); @@ -85,11 +85,11 @@ start(); ```javascript server.route({ - method: 'GET', - path: '/picture.jpg', - handler: { - file: 'picture.jpg', - }, + method: 'GET', + path: '/picture.jpg', + handler: { + file: 'picture.jpg', + }, }); ``` @@ -99,13 +99,13 @@ Değiştirgeyi `request` (istek) nesnesi kabul ederek dosyanın güzergahını ( ```javascript server.route({ - method: 'GET', - path: '/{filename}', - handler: { - file: function (request) { - return request.params.filename; + method: 'GET', + path: '/{filename}', + handler: { + file: function (request) { + return request.params.filename; + }, }, - }, }); ``` @@ -113,16 +113,16 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/script.js', - handler: { - file: { - path: 'script.js', - filename: 'client.js', // Content-Disposition başlığındaki dosya adının üstüne yaz - mode: 'attachment', // Content-Dispositionın bir eklenti olduğunu belirt - lookupCompressed: true, // eğer istek izin veriyorsa script.js.gz aramasını etkinleştir + method: 'GET', + path: '/script.js', + handler: { + file: { + path: 'script.js', + filename: 'client.js', // Content-Disposition başlığındaki dosya adının üstüne yaz + mode: 'attachment', // Content-Dispositionın bir eklenti olduğunu belirt + lookupCompressed: true, // eğer istek izin veriyorsa script.js.gz aramasını etkinleştir + }, }, - }, }); ``` @@ -132,13 +132,13 @@ inert, `file` (dosya) işleyicisine ek olarak birden fazla dosya sunacak şekild ```javascript server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: 'public', + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: 'public', + }, }, - }, }); ``` @@ -148,14 +148,14 @@ Yukarıdaki yol (route) her isteği `public` dizininde istenen dosya adı eşle ```javascript server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: 'public', - index: ['index.html', 'default.html'], + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: 'public', + index: ['index.html', 'default.html'], + }, }, - }, }); ``` @@ -163,14 +163,14 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: 'public', - listing: true, + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: 'public', + listing: true, + }, }, - }, }); ``` diff --git a/docs/tutorials/tr_TR/validation.md b/docs/tutorials/tr_TR/validation.md index 9353a288..6bc1cd5a 100644 --- a/docs/tutorials/tr_TR/validation.md +++ b/docs/tutorials/tr_TR/validation.md @@ -18,18 +18,18 @@ Haydi bir örneğe bakalım: ```javascript server.route({ - method: 'GET', - path: '/selam/{name}', - handler: function (request, h) { - return `Selam ${request.params.name}!`; - }, - options: { - validate: { - params: { - name: Joi.string().min(3).max(10), - }, + method: 'GET', + path: '/selam/{name}', + handler: function (request, h) { + return `Selam ${request.params.name}!`; + }, + options: { + validate: { + params: { + name: Joi.string().min(3).max(10), + }, + }, }, - }, }); ``` @@ -41,9 +41,9 @@ Eğer bu yapılandırma ile `/selam/aylin` adresine bir istekte bulunursak bekle ```json { - "error": "Bad Request", - "message": "Invalid request params input", - "statusCode": 400 + "error": "Bad Request", + "message": "Invalid request params input", + "statusCode": 400 } ``` @@ -57,18 +57,18 @@ Sorgu değiştirgelerini doğrulamak için `validate.query` (sorguyu doğrula) s ```javascript server.route({ - method: 'GET', - path: '/posts', - handler: function (request, h) { - return posts.slice(0, request.query.limit); - }, - options: { - validate: { - query: { - limit: Joi.number().integer().min(1).max(100).default(10), - }, + method: 'GET', + path: '/posts', + handler: function (request, h) { + return posts.slice(0, request.query.limit); + }, + options: { + validate: { + query: { + limit: Joi.number().integer().min(1).max(100).default(10), + }, + }, }, - }, }); ``` @@ -144,25 +144,25 @@ Burada örnek olarak kitap listesi dönen bir yol (route) yapılandırması var: ```javascript const bookSchema = Joi.object({ - title: Joi.string().required(), - author: Joi.string().required(), - isbn: Joi.string().length(10), - pageCount: Joi.number(), - datePublished: Joi.date().iso(), + title: Joi.string().required(), + author: Joi.string().required(), + isbn: Joi.string().length(10), + pageCount: Joi.number(), + datePublished: Joi.date().iso(), }); server.route({ - method: 'GET', - path: '/books', - handler: async function (request, h) { - return await getBooks(); - }, - options: { - response: { - sample: 50, - schema: Joi.array().items(bookSchema), + method: 'GET', + path: '/books', + handler: async function (request, h) { + return await getBooks(); + }, + options: { + response: { + sample: 50, + schema: Joi.array().items(bookSchema), + }, }, - }, }); ``` diff --git a/docs/tutorials/tr_TR/views.md b/docs/tutorials/tr_TR/views.md index d537649a..c40ea569 100644 --- a/docs/tutorials/tr_TR/views.md +++ b/docs/tutorials/tr_TR/views.md @@ -24,15 +24,15 @@ const Hoek = require('@hapi/hoek'); const server = Hapi.server(); const start = async () => { - await server.register(require('@hapi/vision')); - - server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: 'templates', - }); + await server.register(require('@hapi/vision')); + + server.views({ + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: 'templates', + }); }; start(); @@ -52,13 +52,13 @@ Unutmayın ki tüm seçenekler kayıtlı tüm motorları yapılandıracak şekil ```javascript server.views({ - engines: { - html: { - module: require('handlebars'), - compileMode: 'sync', // motora özel + engines: { + html: { + module: require('handlebars'), + compileMode: 'sync', // motora özel + }, }, - }, - compileMode: 'async', // evrensel ayar + compileMode: 'async', // evrensel ayar }); ``` @@ -108,13 +108,13 @@ Ayarların şöyle olabilir: ```javascript server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: './templates', - layoutPath: './templates/layout', - helpersPath: './templates/helpers', + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: './templates', + layoutPath: './templates/layout', + helpersPath: './templates/helpers', }); ``` @@ -128,11 +128,11 @@ Bakacağımız ilk kullanıcı arayüzü yorumlayan yöntem `h.view()`. Hemen a ```javascript server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return h.view('index'); - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return h.view('index'); + }, }); ``` @@ -148,11 +148,11 @@ Kullanıcı arayüzü işlemenin ikinci yöntemi, hapi'nin hazır gelen kullanı ```javascript server.route({ - method: 'GET', - path: '/', - handler: { - view: 'index', - }, + method: 'GET', + path: '/', + handler: { + view: 'index', + }, }); ``` @@ -177,17 +177,17 @@ Bunu yapmanın en kolay yolu `server.views()` yöntemini çağırırken `context ```javascript const context = { - title: 'Benim sitem', + title: 'Benim sitem', }; server.views({ - engines: { - html: { - module: require('handlebars'), - compileMode: 'sync', // motora özgü + engines: { + html: { + module: require('handlebars'), + compileMode: 'sync', // motora özgü + }, }, - }, - context, + context, }); ``` @@ -201,21 +201,21 @@ Aşağıdaki kod bloğu `fortune.js` içerisinde `helpers` dizininde saklayacağ ```javascript module.exports = function () { - const fortune = [ - 'Tolga burada uyumuş olabilir...', - 'Ördek lazım mı?', - 'Önce hayır de, sonra pazarlık yap.', - 'Sona kalan dona kalır.', - 'Öğretmek öğrenmektir.', - 'Elinde çekiç olan her şeyi çivi sanır', - 'Beni tanıdığın için kendini affedeceksin', - 'Eller günahkar diller günahkar.', - 'Talih şanslıdan yanadır.', - 'İyi günler!', - ]; - - const x = Math.floor(Math.random() * fortune.length); - return fortune[x]; + const fortune = [ + 'Tolga burada uyumuş olabilir...', + 'Ördek lazım mı?', + 'Önce hayır de, sonra pazarlık yap.', + 'Sona kalan dona kalır.', + 'Öğretmek öğrenmektir.', + 'Elinde çekiç olan her şeyi çivi sanır', + 'Beni tanıdığın için kendini affedeceksin', + 'Eller günahkar diller günahkar.', + 'Talih şanslıdan yanadır.', + 'İyi günler!', + ]; + + const x = Math.floor(Math.random() * fortune.length); + return fortune[x]; }; ``` @@ -238,24 +238,24 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 8080 }); const start = async () => { - await server.register(require('@hapi/vision')); - - server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: 'templates', - helpersPath: 'helpers', - }); - - server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return h.view('index'); - }, - }); + await server.register(require('@hapi/vision')); + + server.views({ + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: 'templates', + helpersPath: 'helpers', + }); + + server.route({ + method: 'GET', + path: '/', + handler: function (request, h) { + return h.view('index'); + }, + }); }; start(); @@ -269,9 +269,9 @@ Yerleşik olarak gelen sayfa düzeni sistemini kullanmak için önce kullanıcı ```javascript server.views({ - // ... - layout: true, - layoutPath: 'templates/layout', + // ... + layout: true, + layoutPath: 'templates/layout', }); ``` @@ -281,9 +281,9 @@ Bu, yerleşik sayfa düzenlerini aktifleştiri ve varsayılan sayfa düzeni olar ```html - - {{{content}}} - + + {{{content}}} + ``` @@ -299,8 +299,8 @@ Varsayılan bir sayfa düzeni ayarlamak istersen bunu evrensel olarak yapabilirs ```javascript server.views({ - // ... - layout: 'another_default', + // ... + layout: 'another_default', }); ``` diff --git a/docs/tutorials/zh_CN/auth.md b/docs/tutorials/zh_CN/auth.md index 844d53f6..414a1431 100644 --- a/docs/tutorials/zh_CN/auth.md +++ b/docs/tutorials/zh_CN/auth.md @@ -21,47 +21,47 @@ const Bcrypt = require('bcrypt'); const Hapi = require('@hapi/hapi'); const users = { - john: { - username: 'john', - password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // '密码: secret' - name: 'John Doe', - id: '2133d32a', - }, + john: { + username: 'john', + password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // '密码: secret' + name: 'John Doe', + id: '2133d32a', + }, }; const validate = async (request, username, password) => { - const user = users[username]; - if (!user) { - return { credentials: null, isValid: false }; - } + const user = users[username]; + if (!user) { + return { credentials: null, isValid: false }; + } - const isValid = await Bcrypt.compare(password, user.password); - const credentials = { id: user.id, name: user.name }; + const isValid = await Bcrypt.compare(password, user.password); + const credentials = { id: user.id, name: user.name }; - return { isValid, credentials }; + return { isValid, credentials }; }; const start = async () => { - const server = Hapi.server({ port: 4000 }); + const server = Hapi.server({ port: 4000 }); - await server.register(require('hapi-auth-basic')); + await server.register(require('hapi-auth-basic')); - server.auth.strategy('simple', 'basic', { validate }); + server.auth.strategy('simple', 'basic', { validate }); - server.route({ - method: 'GET', - path: '/', - options: { - auth: 'simple', - }, - handler: function (request, h) { - return 'welcome'; - }, - }); + server.route({ + method: 'GET', + path: '/', + options: { + auth: 'simple', + }, + handler: function (request, h) { + return 'welcome'; + }, + }); - await server.start(); + await server.start(); - console.log('server running at: ' + server.info.uri); + console.log('server running at: ' + server.info.uri); }; start(); diff --git a/docs/tutorials/zh_CN/caching.md b/docs/tutorials/zh_CN/caching.md index 4d51154c..8e3126bd 100644 --- a/docs/tutorials/zh_CN/caching.md +++ b/docs/tutorials/zh_CN/caching.md @@ -22,23 +22,23 @@ HTTP 协议定义了许多 HTTP 头部(headers)信息,方便如浏览器 ```javascript server.route({ - path: '/hapi/{ttl?}', - method: 'GET', - handler: function (request, h) { - const response = h.response({ be: 'hapi' }); - - if (request.params.ttl) { - response.ttl(request.params.ttl); - } - - return response; - }, - options: { - cache: { - expiresIn: 30 * 1000, - privacy: 'private', + path: '/hapi/{ttl?}', + method: 'GET', + handler: function (request, h) { + const response = h.response({ be: 'hapi' }); + + if (request.params.ttl) { + response.ttl(request.params.ttl); + } + + return response; + }, + options: { + cache: { + expiresIn: 30 * 1000, + privacy: 'private', + }, }, - }, }); ``` @@ -93,21 +93,21 @@ hapi 通过 [catbox memory](https://github.com/hapijs/catbox-memory) 适配器 const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 8000, - cache: [ - { - name: 'mongoCache', - engine: require('catbox-mongodb'), - host: '127.0.0.1', - partition: 'cache', - }, - { - name: 'redisCache', - engine: require('catbox-redis'), - host: '127.0.0.1', - partition: 'cache', - }, - ], + port: 8000, + cache: [ + { + name: 'mongoCache', + engine: require('catbox-mongodb'), + host: '127.0.0.1', + partition: 'cache', + }, + { + name: 'redisCache', + engine: require('catbox-redis'), + host: '127.0.0.1', + partition: 'cache', + }, + ], }); ``` @@ -119,36 +119,36 @@ const server = Hapi.server({ ```javascript const start = async () => { - const add = async (a, b) => { - await Hoek.wait(1000); // 模拟一些慢的 I/O 操作 - - return Number(a) + Number(b); - }; - - const sumCache = server.cache({ - cache: 'mongoCache', - expiresIn: 10 * 1000, - segment: 'customSegment', - generateFunc: async (id) => { - return await add(id.a, id.b); - }, - generateTimeout: 2000, - }); - - server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: async function (request, h) { - const { a, b } = request.params; - const id = `${a}:${b}`; - - return await sumCache.get({ id, a, b }); - }, - }); - - await server.start(); - - console.log('Server running at:', server.info.uri); + const add = async (a, b) => { + await Hoek.wait(1000); // 模拟一些慢的 I/O 操作 + + return Number(a) + Number(b); + }; + + const sumCache = server.cache({ + cache: 'mongoCache', + expiresIn: 10 * 1000, + segment: 'customSegment', + generateFunc: async (id) => { + return await add(id.a, id.b); + }, + generateTimeout: 2000, + }); + + server.route({ + path: '/add/{a}/{b}', + method: 'GET', + handler: async function (request, h) { + const { a, b } = request.params; + const id = `${a}:${b}`; + + return await sumCache.get({ id, a, b }); + }, + }); + + await server.start(); + + console.log('Server running at:', server.info.uri); }; start(); @@ -170,28 +170,28 @@ start(); ```javascript const start = async () => { - // ... - - server.method('sum', add, { - cache: { - cache: 'mongoCache', - expiresIn: 10 * 1000, - generateTimeout: 2000, - }, - }); - - server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: async function (request, h) { - const { a, b } = request.params; - return await server.methods.sum(a, b); - }, - }); - - await server.start(); - - // ... + // ... + + server.method('sum', add, { + cache: { + cache: 'mongoCache', + expiresIn: 10 * 1000, + generateTimeout: 2000, + }, + }); + + server.route({ + path: '/add/{a}/{b}', + method: 'GET', + handler: async function (request, h) { + const { a, b } = request.params; + return await server.methods.sum(a, b); + }, + }); + + await server.start(); + + // ... }; start(); @@ -212,32 +212,32 @@ start(); ```javascript const start = async () => { - //... - - server.method('sum', add, { - cache: { - cache: 'mongoCache', - expiresIn: 10 * 1000, - generateTimeout: 2000, - getDecoratedValue: true, - }, - }); - - server.route({ - path: '/add/{a}/{b}', - method: 'GET', - handler: async function (request, h) { - const { a, b } = request.params; - const { value, cached } = await server.methods.sum(a, b); - const lastModified = cached ? new Date(cached.stored) : new Date(); - - return h.response(value).header('Last-modified', lastModified.toUTCString()); - }, - }); - - await server.start(); - - // ... + //... + + server.method('sum', add, { + cache: { + cache: 'mongoCache', + expiresIn: 10 * 1000, + generateTimeout: 2000, + getDecoratedValue: true, + }, + }); + + server.route({ + path: '/add/{a}/{b}', + method: 'GET', + handler: async function (request, h) { + const { a, b } = request.params; + const { value, cached } = await server.methods.sum(a, b); + const lastModified = cached ? new Date(cached.stored) : new Date(); + + return h.response(value).header('Last-modified', lastModified.toUTCString()); + }, + }); + + await server.start(); + + // ... }; ``` diff --git a/docs/tutorials/zh_CN/cookies.md b/docs/tutorials/zh_CN/cookies.md index 751002e5..876c6fba 100644 --- a/docs/tutorials/zh_CN/cookies.md +++ b/docs/tutorials/zh_CN/cookies.md @@ -18,12 +18,12 @@ hapi 有许多配置选项用于处理 cookies。默认的配置已经可以适 ```javascript server.state('data', { - ttl: null, - isSecure: true, - isHttpOnly: true, - encoding: 'base64json', - clearInvalid: false, // remove invalid cookies - strictHeader: true, // don't allow violations of RFC 6265 + ttl: null, + isSecure: true, + isHttpOnly: true, + encoding: 'base64json', + clearInvalid: false, // remove invalid cookies + strictHeader: true, // don't allow violations of RFC 6265 }); ``` @@ -33,12 +33,12 @@ server.state('data', { ```json5 { - config: { - state: { - parse: true, // 解析 cookies 并储存在 request.state - failAction: 'error', // 也可以为 'ignore' 或者 'log' + config: { + state: { + parse: true, // 解析 cookies 并储存在 request.state + failAction: 'error', // 也可以为 'ignore' 或者 'log' + }, }, - }, } ``` diff --git a/docs/tutorials/zh_CN/express-to-hapi.md b/docs/tutorials/zh_CN/express-to-hapi.md index 732d8eec..11fbc2b4 100644 --- a/docs/tutorials/zh_CN/express-to-hapi.md +++ b/docs/tutorials/zh_CN/express-to-hapi.md @@ -41,13 +41,13 @@ hapi: const Hapi = require('@hapi/hapi'); const init = async () => { - const server = Hapi.server({ - port: 3000, - host: 'localhost', - }); + const server = Hapi.server({ + port: 3000, + host: 'localhost', + }); - await server.start(); - console.log('Server running on port 3000'); + await server.start(); + console.log('Server running on port 3000'); }; init(); @@ -65,7 +65,7 @@ Express: ```js app.get('/hello', function (req, res) { - res.send('Hello World!'); + res.send('Hello World!'); }); ``` @@ -73,11 +73,11 @@ hapi: ```js server.route({ - method: 'GET', - path: '/hello', - handler: (request, h) => { - return 'Hello World!'; - }, + method: 'GET', + path: '/hello', + handler: (request, h) => { + return 'Hello World!'; + }, }); ``` @@ -89,11 +89,11 @@ server.route({ ```js server.route({ - method: ['PUT', 'POST'], - path: '/', - handler: function (request, h) { - return 'I did something!'; - }, + method: ['PUT', 'POST'], + path: '/', + handler: function (request, h) { + return 'I did something!'; + }, }); ``` @@ -113,8 +113,8 @@ Express: ```js app.get('/hello/:name', function (req, res) { - const name = req.params.name; - res.send('Hello ' + name); + const name = req.params.name; + res.send('Hello ' + name); }); ``` @@ -122,12 +122,12 @@ hapi: ```js server.route({ - method: 'GET', - path: '/hello/{name}', - handler: function (request, h) { - const name = request.params.name; - return 'Hello ' + name; - }, + method: 'GET', + path: '/hello/{name}', + handler: function (request, h) { + const name = request.params.name; + return 'Hello ' + name; + }, }); ``` @@ -143,7 +143,7 @@ Express: ```js app.get('/home', function (req, res) { - res.redirect('/'); + res.redirect('/'); }); ``` @@ -151,11 +151,11 @@ hapi: ```js server.route({ - method: 'GET', - path: '/home', - handler: function (request, h) { - return h.redirect('/'); - }, + method: 'GET', + path: '/home', + handler: function (request, h) { + return h.redirect('/'); + }, }); ``` @@ -163,18 +163,18 @@ server.route({ ```js server.route({ - method: 'GET', - path: '/user', - handler: function (request, h) { - const user = { - firstName: 'John', - lastName: 'Doe', - userName: 'JohnDoe', - id: 123, - }; - - return user; - }, + method: 'GET', + path: '/user', + handler: function (request, h) { + const user = { + firstName: 'John', + lastName: 'Doe', + userName: 'JohnDoe', + id: 123, + }; + + return user; + }, }); ``` @@ -194,8 +194,8 @@ hapi在请求周期内一共具有7个扩展点。 按顺序,它们分别都 ```js server.ext('onRequest', function (request, h) { - request.setUrl('/test'); - return h.continue; + request.setUrl('/test'); + return h.continue; }); ``` @@ -209,12 +209,12 @@ Express: ```js const getDate = function (req, res, next) { - req.getDate = function () { - const date = new Date(); - return date; - }; + req.getDate = function () { + const date = new Date(); + return date; + }; - next(); + next(); }; ``` @@ -222,16 +222,16 @@ hapi: ```js const getDate = { - name: 'getDate', - version: '1.0.0', - register: async function (server, options) { - const currentDate = function () { - const date = new Date(); - return date; - }; - - server.decorate('toolkit', 'getDate', currentDate); - }, + name: 'getDate', + version: '1.0.0', + register: async function (server, options) { + const currentDate = function () { + const date = new Date(); + return date; + }; + + server.decorate('toolkit', 'getDate', currentDate); + }, }; ``` @@ -251,7 +251,7 @@ hapi: ```js await server.register({ - plugin: getDate, + plugin: getDate, }); ``` @@ -265,14 +265,14 @@ Express: ```js module.exports = function (options) { - return function getDate(req, res, next) { - req.getDate = function () { - const date = 'Hello ' + options.name + ', the date is ' + new Date(); - return date; - }; + return function getDate(req, res, next) { + req.getDate = function () { + const date = 'Hello ' + options.name + ', the date is ' + new Date(); + return date; + }; - next(); - }; + next(); + }; }; ``` @@ -280,10 +280,10 @@ hapi: ```js server.register({ - plugin: getDate, - options: { - name: 'Tom', - }, + plugin: getDate, + options: { + name: 'Tom', + }, }); ``` @@ -301,16 +301,16 @@ hapi: ```js const getDate = { - name: 'getDate', - version: '1.0.0', - register: async function (server, options) { - const currentDate = function () { - const date = 'Hello ' + options.name + ', the date is ' + new Date(); - return date; - }; - - server.decorate('toolkit', 'getDate', currentDate); - }, + name: 'getDate', + version: '1.0.0', + register: async function (server, options) { + const currentDate = function () { + const date = 'Hello ' + options.name + ', the date is ' + new Date(); + return date; + }; + + server.decorate('toolkit', 'getDate', currentDate); + }, }; ``` @@ -326,8 +326,8 @@ var bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({ extend: true })); app.post('/hello', function (req, res) { - var name = req.body.name; - res.send('Hello ' + name); + var name = req.body.name; + res.send('Hello ' + name); }); ``` @@ -335,12 +335,12 @@ hapi: ```js server.route({ - method: 'POST', - path: '/hello', - handler: function (request, h) { - const name = request.payload.name; - return `Hello ` + name; - }, + method: 'POST', + path: '/hello', + handler: function (request, h) { + const name = request.payload.name; + return `Hello ` + name; + }, }); ``` @@ -362,9 +362,9 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 8000 }); server.state('data', { - ttl: null, - isSecure: true, - isHttpOnly: true, + ttl: null, + isSecure: true, + isHttpOnly: true, }); ``` @@ -382,8 +382,8 @@ var cookieParser = require('cookie-parser'); app.use(cookieParser()); app.get('/', function (req, res) { - res.cookie('username', 'tom', { maxAge: null, secure: true, httpOnly: true }); - res.send('Hello'); + res.cookie('username', 'tom', { maxAge: null, secure: true, httpOnly: true }); + res.send('Hello'); }); ``` @@ -395,18 +395,18 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 8000 }); server.state('username', { - ttl: null, - isSecure: true, - isHttpOnly: true, + ttl: null, + isSecure: true, + isHttpOnly: true, }); server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - h.state('username', 'tom'); - return h.response('Hello'); - }, + method: 'GET', + path: '/', + handler: function (request, h) { + h.state('username', 'tom'); + return h.response('Hello'); + }, }); ``` @@ -440,18 +440,18 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 8000 }); server.state('username', { - ttl: null, - isSecure: true, - isHttpOnly: true, + ttl: null, + isSecure: true, + isHttpOnly: true, }); server.route({ - method: 'GET', - path: '/', - handler: async (request, h) => { - h.state('username', 'tom'); - return h.response(request.state.username); - }, + method: 'GET', + path: '/', + handler: async (request, h) => { + h.state('username', 'tom'); + return h.response(request.state.username); + }, }); ``` @@ -516,34 +516,34 @@ const server = Hapi.server({ port: 8000 }); await server.register(Bell); server.auth.strategy('twitter', 'bell', { - provider: 'twitter', - password: 'cookie_encryption_password_secure', - clientId: TWITTER_CONSUMER_KEY, - clientSecret: TWITTER_CONSUMER_SECRET, - isSecure: false, + provider: 'twitter', + password: 'cookie_encryption_password_secure', + clientId: TWITTER_CONSUMER_KEY, + clientSecret: TWITTER_CONSUMER_SECRET, + isSecure: false, }); server.route({ - method: '*', - path: '/auth/twitter', // The callback endpoint registered with the provider - handler: function (request, h) { - if (!request.auth.isAuthenticated) { - return `Authentication failed due to: ${request.auth.error.message}`; - } + method: '*', + path: '/auth/twitter', // The callback endpoint registered with the provider + handler: function (request, h) { + if (!request.auth.isAuthenticated) { + return `Authentication failed due to: ${request.auth.error.message}`; + } - // Perform any account lookup or registration, setup local session, - // and redirect to the application. The third-party credentials are - // stored in request.auth.credentials. Any query parameters from - // the initial request are passed back via request.auth.credentials.query. - - return h.redirect('/home'); - }, - options: { - auth: { - strategy: 'twitter', - mode: 'try', + // Perform any account lookup or registration, setup local session, + // and redirect to the application. The third-party credentials are + // stored in request.auth.credentials. Any query parameters from + // the initial request are passed back via request.auth.credentials.query. + + return h.redirect('/home'); + }, + options: { + auth: { + strategy: 'twitter', + mode: 'try', + }, }, - }, }); ``` @@ -584,14 +584,14 @@ app.use(bodyParser.urlencoded({ extended: true })); app.use(expressValidator()); app.post('/post', function (req, res) { - req.check('post', 'Post too long').isLength({ max: 140 }); + req.check('post', 'Post too long').isLength({ max: 140 }); - let errors = req.validationErrors(); - if (errors) { - res.status(400).send(errors); - } else { - res.send('Blog post added!'); - } + let errors = req.validationErrors(); + if (errors) { + res.status(400).send(errors); + } else { + res.send('Blog post added!'); + } }); ``` @@ -607,18 +607,18 @@ npm install joi const Joi = require('joi'); server.route({ - method: 'POST', - path: '/post', - handler: (request, h) => { - return 'Blog post added!'; - }, - options: { - validate: { - payload: Joi.object({ - post: Joi.string().max(140), - }), + method: 'POST', + path: '/post', + handler: (request, h) => { + return 'Blog post added!'; + }, + options: { + validate: { + payload: Joi.object({ + post: Joi.string().max(140), + }), + }, }, - }, }); ``` @@ -636,25 +636,25 @@ hapi: ```js const bookSchema = Joi.object({ - title: Joi.string().required(), - author: Joi.string().required(), - isbn: Joi.string().length(10), - pageCount: Joi.number(), - datePublished: Joi.date().iso(), + title: Joi.string().required(), + author: Joi.string().required(), + isbn: Joi.string().length(10), + pageCount: Joi.number(), + datePublished: Joi.date().iso(), }); server.route({ - method: 'GET', - path: '/books', - handler: async function (request, h) { - return await getBooks(); - }, - options: { - response: { - schema: Joi.array().items(bookSchema), - failAction: 'log', + method: 'GET', + path: '/books', + handler: async function (request, h) { + return await getBooks(); + }, + options: { + response: { + schema: Joi.array().items(bookSchema), + failAction: 'log', + }, }, - }, }); ``` @@ -678,11 +678,11 @@ app.set('view engine', 'pug'); await server.register(require('@hapi/vision')); server.views({ - engines: { - pug: require('pug'), - }, - relativeTo: __dirname, - path: 'views', + engines: { + pug: require('pug'), + }, + relativeTo: __dirname, + path: 'views', }); ``` @@ -699,7 +699,7 @@ hapi在 `server.views` 中有更多可配置的选项。要查看功能的完整 ```js app.get('/', function (req, res) { - res.render('index', { title: 'Homepage', message: 'Welcome' }); + res.render('index', { title: 'Homepage', message: 'Welcome' }); }); ``` @@ -707,11 +707,11 @@ Using `h.view` in hapi: ```js server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return h.view('index', { title: 'Homepage', message: 'Welcome' }); - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return h.view('index', { title: 'Homepage', message: 'Welcome' }); + }, }); ``` @@ -719,17 +719,17 @@ server.route({ ```js server.route({ - method: 'GET', - path: '/', - handler: { - view: { - template: 'index', - context: { - title: 'Homepage', - message: 'Welcome', - }, + method: 'GET', + path: '/', + handler: { + view: { + template: 'index', + context: { + title: 'Homepage', + message: 'Welcome', + }, + }, }, - }, }); ``` @@ -747,7 +747,7 @@ Express: ```js app.get('/image', function (req, res) { - res.sendFile('image.jpg', { root: './public' }); + res.sendFile('image.jpg', { root: './public' }); }); ``` @@ -755,22 +755,22 @@ hapi with `h.file()`: ```js const server = new Hapi.Server({ - port: 3000, - routes: { - files: { - relativeTo: Path.join(__dirname, 'public'), + port: 3000, + routes: { + files: { + relativeTo: Path.join(__dirname, 'public'), + }, }, - }, }); await server.register(require('@hapi/inert')); server.route({ - method: 'GET', - path: '/image', - handler: function (request, h) { - return h.file('image.jpg'); - }, + method: 'GET', + path: '/image', + handler: function (request, h) { + return h.file('image.jpg'); + }, }); ``` @@ -778,22 +778,22 @@ hapi with file handler: ```js const server = new Hapi.Server({ - port: 3000, - routes: { - files: { - relativeTo: Path.join(__dirname, 'public'), + port: 3000, + routes: { + files: { + relativeTo: Path.join(__dirname, 'public'), + }, }, - }, }); await server.register(require('@hapi/inert')); server.route({ - method: 'GET', - path: '/image', - handler: { - file: 'image.jpg', - }, + method: 'GET', + path: '/image', + handler: { + file: 'image.jpg', + }, }); ``` @@ -813,24 +813,24 @@ hapi: ```js const server = new Hapi.Server({ - port: 3000, - routes: { - files: { - relativeTo: Path.join(__dirname, 'public'), + port: 3000, + routes: { + files: { + relativeTo: Path.join(__dirname, 'public'), + }, }, - }, }); await server.register(require('@hapi/inert')); server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: '.', + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: '.', + }, }, - }, }); ``` @@ -851,9 +851,9 @@ hapi: ```json { - "statusCode": 404, - "error": "Not Found", - "message": "Not Found" + "statusCode": 404, + "error": "Not Found", + "message": "Not Found" } ``` diff --git a/docs/tutorials/zh_CN/getting-started.md b/docs/tutorials/zh_CN/getting-started.md index 250d4263..be0be9b4 100644 --- a/docs/tutorials/zh_CN/getting-started.md +++ b/docs/tutorials/zh_CN/getting-started.md @@ -28,18 +28,18 @@ _该教程适用于 hapi v17版本_ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 3000, - host: 'localhost', + port: 3000, + host: 'localhost', }); const init = async () => { - await server.start(); - console.log(`Server running at: ${server.info.uri}`); + await server.start(); + console.log(`Server running at: ${server.info.uri}`); }; process.on('unhandledRejection', (err) => { - console.log(err); - process.exit(1); + console.log(err); + process.exit(1); }); init(); @@ -59,34 +59,34 @@ Web 服务器可以通过以下方式创建:指定主机名、填写IP地址 const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 3000, - host: 'localhost', + port: 3000, + host: 'localhost', }); server.route({ - method: 'GET', - path: '/', - handler: (request, h) => { - return 'Hello, world!'; - }, + method: 'GET', + path: '/', + handler: (request, h) => { + return 'Hello, world!'; + }, }); server.route({ - method: 'GET', - path: '/{name}', - handler: (request, h) => { - return 'Hello, ' + encodeURIComponent(request.params.name) + '!'; - }, + method: 'GET', + path: '/{name}', + handler: (request, h) => { + return 'Hello, ' + encodeURIComponent(request.params.name) + '!'; + }, }); const init = async () => { - await server.start(); - console.log(`Server running at: ${server.info.uri}`); + await server.start(); + console.log(`Server running at: ${server.info.uri}`); }; process.on('unhandledRejection', (err) => { - console.log(err); - process.exit(1); + console.log(err); + process.exit(1); }); init(); @@ -108,18 +108,18 @@ init(); ```javascript const init = async () => { - await server.register(require('@hapi/inert')); - - server.route({ - method: 'GET', - path: '/hello', - handler: (request, h) => { - return h.file('./public/hello.html'); - }, - }); - - await server.start(); - console.log(`Server running at: ${server.info.uri}`); + await server.register(require('@hapi/inert')); + + server.route({ + method: 'GET', + path: '/hello', + handler: (request, h) => { + return h.file('./public/hello.html'); + }, + }); + + await server.start(); + console.log(`Server running at: ${server.info.uri}`); }; ``` @@ -134,13 +134,13 @@ const init = async () => { ```html - - - Hapi.js is awesome! - - -

    Hello World.

    - + + + Hapi.js is awesome! + + +

    Hello World.

    + ``` @@ -170,46 +170,46 @@ npm install hapi-pino const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 3000, - host: 'localhost', + port: 3000, + host: 'localhost', }); server.route({ - method: 'GET', - path: '/', - handler: (request, h) => { - return 'Hello, world!'; - }, + method: 'GET', + path: '/', + handler: (request, h) => { + return 'Hello, world!'; + }, }); server.route({ - method: 'GET', - path: '/{name}', - handler: (request, h) => { - // request.log(['a', 'name'], "Request name"); - // or - request.logger.info('In handler %s', request.path); - - return `Hello, ${encodeURIComponent(request.params.name)}!`; - }, -}); + method: 'GET', + path: '/{name}', + handler: (request, h) => { + // request.log(['a', 'name'], "Request name"); + // or + request.logger.info('In handler %s', request.path); -const init = async () => { - await server.register({ - plugin: require('hapi-pino'), - options: { - prettyPrint: false, - logEvents: ['response', 'onPostStart'], + return `Hello, ${encodeURIComponent(request.params.name)}!`; }, - }); +}); - await server.start(); - console.log(`Server running at: ${server.info.uri}`); +const init = async () => { + await server.register({ + plugin: require('hapi-pino'), + options: { + prettyPrint: false, + logEvents: ['response', 'onPostStart'], + }, + }); + + await server.start(); + console.log(`Server running at: ${server.info.uri}`); }; process.on('unhandledRejection', (err) => { - console.log(err); - process.exit(1); + console.log(err); + process.exit(1); }); init(); diff --git a/docs/tutorials/zh_CN/logging.md b/docs/tutorials/zh_CN/logging.md index 68cccb04..f455d9bd 100644 --- a/docs/tutorials/zh_CN/logging.md +++ b/docs/tutorials/zh_CN/logging.md @@ -34,9 +34,9 @@ hapi 服务器对象为每个日志事件都发出了事件。你可以通过标 ```javascript server.events.on('log', (event, tags) => { - if (tags.error) { - console.log(`Server error: ${event.error ? event.error.message : 'unknown'}`); - } + if (tags.error) { + console.log(`Server error: ${event.error ? event.error.message : 'unknown'}`); + } }); ``` @@ -46,16 +46,16 @@ server.events.on('log', (event, tags) => { ```javascript server.route({ - method: 'GET', - path: '/', - options: { - log: { - collect: true, + method: 'GET', + path: '/', + options: { + log: { + collect: true, + }, + }, + handler: function (request, h) { + return 'hello'; }, - }, - handler: function (request, h) { - return 'hello'; - }, }); ``` diff --git a/docs/tutorials/zh_CN/plugins.md b/docs/tutorials/zh_CN/plugins.md index 5da71503..9ca5fd59 100644 --- a/docs/tutorials/zh_CN/plugins.md +++ b/docs/tutorials/zh_CN/plugins.md @@ -20,22 +20,22 @@ hapi 拥有一个可扩展并且强健的插件系统,它允许你将应用分 'use strict'; const myPlugin = { - name: 'myPlugin', - version: '1.0.0', - register: async function (server, options) { - // 创建一个路由作为示例 - - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'hello, world'; - }, - }); - - // etc ... - await someAsyncMethods(); - }, + name: 'myPlugin', + version: '1.0.0', + register: async function (server, options) { + // 创建一个路由作为示例 + + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'hello, world'; + }, + }); + + // etc ... + await someAsyncMethods(); + }, }; ``` @@ -45,21 +45,21 @@ const myPlugin = { 'use strict'; exports.plugin = { - pkg: require('./package.json'), - register: async function (server, options) { - // 创建一个路由作为示例 - - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'hello, world'; - }, - }); - - // etc... - await someAsyncMethods(); - }, + pkg: require('./package.json'), + register: async function (server, options) { + // 创建一个路由作为示例 + + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'hello, world'; + }, + }); + + // etc... + await someAsyncMethods(); + }, }; ``` @@ -87,13 +87,13 @@ exports.plugin = { ```javascript const start = async function () { - // 载入一个插件 + // 载入一个插件 - await server.register(require('myplugin')); + await server.register(require('myplugin')); - // 载入多个插件 + // 载入多个插件 - await server.register([require('myplugin'), require('yourplugin')]); + await server.register([require('myplugin'), require('yourplugin')]); }; ``` @@ -101,12 +101,12 @@ const start = async function () { ```javascript const start = async function () { - await server.register({ - plugin: require('myplugin'), - options: { - message: 'hello', - }, - }); + await server.register({ + plugin: require('myplugin'), + options: { + message: 'hello', + }, + }); }; ``` @@ -114,16 +114,16 @@ const start = async function () { ```javascript const start = async function () { - await server.register([ - { - plugin: require('plugin1'), - options: {}, - }, - { - plugin: require('plugin2'), - options: {}, - }, - ]); + await server.register([ + { + plugin: require('plugin1'), + options: {}, + }, + { + plugin: require('plugin2'), + options: {}, + }, + ]); }; ``` @@ -139,19 +139,19 @@ options 对象将被 hapi 使用,并且 _不会_ 传递到被装载的插件 'use strict'; exports.plugin = { - pkg: require('./package.json'), - register: async function (server, options) { - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'test passed'; - }, - }); - - // 其他... - await someAsyncMethods(); - }, + pkg: require('./package.json'), + register: async function (server, options) { + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'test passed'; + }, + }); + + // 其他... + await someAsyncMethods(); + }, }; ``` @@ -159,11 +159,11 @@ exports.plugin = { ```javascript const start = async function () { - await server.register(require('myplugin'), { - routes: { - prefix: '/plugins', - }, - }); + await server.register(require('myplugin'), { + routes: { + prefix: '/plugins', + }, + }); }; ``` diff --git a/docs/tutorials/zh_CN/routing.md b/docs/tutorials/zh_CN/routing.md index 60cf81b7..919ef3e0 100644 --- a/docs/tutorials/zh_CN/routing.md +++ b/docs/tutorials/zh_CN/routing.md @@ -12,11 +12,11 @@ _该教程适用于 hapi v17版本_ ```javascript server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return 'Hello!'; - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return 'Hello!'; + }, }); ``` @@ -26,11 +26,11 @@ server.route({ ```javascript server.route({ - method: ['PUT', 'POST'], - path: '/', - handler: function (request, h) { - return 'I did something!'; - }, + method: ['PUT', 'POST'], + path: '/', + handler: function (request, h) { + return 'I did something!'; + }, }); ``` @@ -40,11 +40,11 @@ path 参数必须为一个字符串, 虽然他们可以包含一个命名的参 ```javascript server.route({ - method: 'GET', - path: '/hello/{user}', - handler: function (request, h) { - return `Hello ${encodeURIComponent(request.params.user)}!`; - }, + method: 'GET', + path: '/hello/{user}', + handler: function (request, h) { + return `Hello ${encodeURIComponent(request.params.user)}!`; + }, }); ``` @@ -56,13 +56,13 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/hello/{user?}', - handler: function (request, h) { - const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger'; + method: 'GET', + path: '/hello/{user?}', + handler: function (request, h) { + const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger'; - return `Hello ${user}!`; - }, + return `Hello ${user}!`; + }, }); ``` @@ -74,12 +74,12 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/hello/{user*2}', - handler: function (request, h) { - const userParts = request.params.user.split('/'); - return `Hello ${encodeURIComponent(userParts[0])} ${encodeURIComponent(userParts[1])}!`; - }, + method: 'GET', + path: '/hello/{user*2}', + handler: function (request, h) { + const userParts = request.params.user.split('/'); + return `Hello ${encodeURIComponent(userParts[0])} ${encodeURIComponent(userParts[1])}!`; + }, }); ``` @@ -105,18 +105,18 @@ Handler 是一个接收两个参数的函数, `request` 和 `h`。 ```javascript server.route({ - method: 'GET', - path: '/hello/{user?}', - handler: function (request, h) { - const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger'; - - return `Hello ${user}!`; - }, - options: { - description: 'Say hello!', - notes: "The user parameter defaults to 'stranger' if unspecified", - tags: ['api', 'greeting'], - }, + method: 'GET', + path: '/hello/{user?}', + handler: function (request, h) { + const user = request.params.user ? encodeURIComponent(request.params.user) : 'stranger'; + + return `Hello ${user}!`; + }, + options: { + description: 'Say hello!', + notes: "The user parameter defaults to 'stranger' if unspecified", + tags: ['api', 'greeting'], + }, }); ``` diff --git a/docs/tutorials/zh_CN/server-methods.md b/docs/tutorials/zh_CN/server-methods.md index a55dbaa1..d1d9f0ff 100644 --- a/docs/tutorials/zh_CN/server-methods.md +++ b/docs/tutorials/zh_CN/server-methods.md @@ -12,7 +12,7 @@ _该教程适用于 hapi v17版本_ ```javascript const add = function (x, y) { - return x + y; + return x + y; }; server.method('add', add, {}); @@ -22,13 +22,13 @@ server.method('add', add, {}); ```javascript const add = function (x, y) { - return x + y; + return x + y; }; server.method({ - name: 'add', - method: add, - options: {}, + name: 'add', + method: add, + options: {}, }); ``` @@ -48,8 +48,8 @@ server.method('math.add', add); ```js const add = async function (x, y) { - const result = await someLongRunningFunction(x, y); - return result; + const result = await someLongRunningFunction(x, y); + return result; }; server.method('add', add, {}); @@ -63,13 +63,13 @@ server.method('add', add, {}); ```javascript server.method('add', add, { - cache: { - expiresIn: 60000, - expiresAt: '20:30', - staleIn: 30000, - staleTimeout: 10000, - generateTimeout: 100, - }, + cache: { + expiresIn: 60000, + expiresAt: '20:30', + staleIn: 30000, + staleTimeout: 10000, + generateTimeout: 100, + }, }); ``` @@ -89,18 +89,18 @@ server.method('add', add, { ```js const add = async function (x, y, flags) { - const result = await someLongRunningFunction(x, y); + const result = await someLongRunningFunction(x, y); - flags.ttl = 5 * 60 * 1000; // 5 mins + flags.ttl = 5 * 60 * 1000; // 5 mins - return result; + return result; }; server.method('add', add, { - cache: { - expiresIn: 2000, - generateTimeout: 100, - }, + cache: { + expiresIn: 2000, + generateTimeout: 100, + }, }); server.methods.add(5, 12); @@ -114,17 +114,17 @@ server.methods.add(5, 12); ```javascript const sum = function (array) { - let total = 0; + let total = 0; - array.forEach((item) => { - total += item; - }); + array.forEach((item) => { + total += item; + }); - return total; + return total; }; server.method('sum', sum, { - generateKey: (array) => array.join(','), + generateKey: (array) => array.join(','), }); ``` @@ -136,9 +136,9 @@ server.method('sum', sum, { ```javascript const lookup = async function (id) { - // 调用 myDB.getOne + // 调用 myDB.getOne - return await this.getOne({ id }); + return await this.getOne({ id }); }; server.method('lookup', lookup, { bind: myDB }); diff --git a/docs/tutorials/zh_CN/serving-files.md b/docs/tutorials/zh_CN/serving-files.md index 626ab9bd..671ee833 100644 --- a/docs/tutorials/zh_CN/serving-files.md +++ b/docs/tutorials/zh_CN/serving-files.md @@ -20,19 +20,19 @@ _该教程适用于 hapi v17版本_ ```javascript const start = async () => { - await server.register(require('@hapi/inert')); + await server.register(require('@hapi/inert')); - server.route({ - method: 'GET', - path: '/picture.jpg', - handler: function (request, h) { - return h.file('/path/to/picture.jpg'); - }, - }); + server.route({ + method: 'GET', + path: '/picture.jpg', + handler: function (request, h) { + return h.file('/path/to/picture.jpg'); + }, + }); - await server.start(); + await server.start(); - console.log('Server running at:', server.info.uri); + console.log('Server running at:', server.info.uri); }; start(); @@ -51,27 +51,27 @@ const Hapi = require('@hapi/hapi'); const Path = require('path'); const server = Hapi.server({ - routes: { - files: { - relativeTo: Path.join(__dirname, 'public'), + routes: { + files: { + relativeTo: Path.join(__dirname, 'public'), + }, }, - }, }); const start = async () => { - await server.register(require('@hapi/inert')); + await server.register(require('@hapi/inert')); - server.route({ - method: 'GET', - path: '/picture.jpg', - handler: function (request, h) { - return h.file('picture.jpg'); - }, - }); + server.route({ + method: 'GET', + path: '/picture.jpg', + handler: function (request, h) { + return h.file('picture.jpg'); + }, + }); - await server.start(); + await server.start(); - console.log('Server running at:', server.info.uri); + console.log('Server running at:', server.info.uri); }; start(); @@ -85,11 +85,11 @@ start(); ```javascript server.route({ - method: 'GET', - path: '/picture.jpg', - handler: { - file: 'picture.jpg', - }, + method: 'GET', + path: '/picture.jpg', + handler: { + file: 'picture.jpg', + }, }); ``` @@ -99,13 +99,13 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/{filename}', - handler: { - file: function (request) { - return request.params.filename; + method: 'GET', + path: '/{filename}', + handler: { + file: function (request) { + return request.params.filename; + }, }, - }, }); ``` @@ -113,16 +113,16 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/script.js', - handler: { - file: { - path: 'script.js', - filename: 'client.js', // 修改 Content-Disposition 头中的文件名 - mode: 'attachment', // 指定 Content-Disposition 是一个附件 - lookupCompressed: true, // 如果请求允许,将允许查找 script.js.gz + method: 'GET', + path: '/script.js', + handler: { + file: { + path: 'script.js', + filename: 'client.js', // 修改 Content-Disposition 头中的文件名 + mode: 'attachment', // 指定 Content-Disposition 是一个附件 + lookupCompressed: true, // 如果请求允许,将允许查找 script.js.gz + }, }, - }, }); ``` @@ -132,13 +132,13 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: 'public', + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: 'public', + }, }, - }, }); ``` @@ -148,14 +148,14 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: 'public', - index: ['index.html', 'default.html'], + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: 'public', + index: ['index.html', 'default.html'], + }, }, - }, }); ``` @@ -163,14 +163,14 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: 'public', - listing: true, + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: 'public', + listing: true, + }, }, - }, }); ``` diff --git a/docs/tutorials/zh_CN/testing.md b/docs/tutorials/zh_CN/testing.md index 8b6c7d62..ce5c84a0 100644 --- a/docs/tutorials/zh_CN/testing.md +++ b/docs/tutorials/zh_CN/testing.md @@ -40,32 +40,32 @@ Hapi设计理念是创建健壮的、可测试的应用.为此,Hapi具备不用 const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 3000, - host: 'localhost', + port: 3000, + host: 'localhost', }); server.route({ - method: 'GET', - path: '/', - handler: function () { - return 'Hello World!'; - }, + method: 'GET', + path: '/', + handler: function () { + return 'Hello World!'; + }, }); exports.init = async () => { - await server.initialize(); - return server; + await server.initialize(); + return server; }; exports.start = async () => { - await server.start(); - console.log(`Server running at: ${server.info.uri}`); - return server; + await server.start(); + console.log(`Server running at: ${server.info.uri}`); + return server; }; process.on('unhandledRejection', (err) => { - console.log(err); - process.exit(1); + console.log(err); + process.exit(1); }); ``` @@ -100,23 +100,23 @@ const { afterEach, beforeEach, describe, it } = (exports.lab = Lab.script()); const { init } = require('../lib/server'); describe('GET /', () => { - let server; + let server; - beforeEach(async () => { - server = await init(); - }); + beforeEach(async () => { + server = await init(); + }); - afterEach(async () => { - await server.stop(); - }); + afterEach(async () => { + await server.stop(); + }); - it('responds with 200', async () => { - const res = await server.inject({ - method: 'get', - url: '/', + it('responds with 200', async () => { + const res = await server.inject({ + method: 'get', + url: '/', + }); + expect(res.statusCode).to.equal(200); }); - expect(res.statusCode).to.equal(200); - }); }); ``` diff --git a/docs/tutorials/zh_CN/validation.md b/docs/tutorials/zh_CN/validation.md index 6fbe9f96..f2005edc 100644 --- a/docs/tutorials/zh_CN/validation.md +++ b/docs/tutorials/zh_CN/validation.md @@ -18,18 +18,18 @@ _该教程适用于 hapi v17版本_ ```javascript server.route({ - method: 'GET', - path: '/hello/{name}', - handler: function (request, h) { - return `Hello ${request.params.name}!`; - }, - options: { - validate: { - params: { - name: Joi.string().min(3).max(10), - }, + method: 'GET', + path: '/hello/{name}', + handler: function (request, h) { + return `Hello ${request.params.name}!`; + }, + options: { + validate: { + params: { + name: Joi.string().min(3).max(10), + }, + }, }, - }, }); ``` @@ -41,9 +41,9 @@ server.route({ ```json { - "error": "Bad Request", - "message": "Invalid request params input", - "statusCode": 400 + "error": "Bad Request", + "message": "Invalid request params input", + "statusCode": 400 } ``` @@ -57,18 +57,18 @@ server.route({ ```javascript server.route({ - method: 'GET', - path: '/posts', - handler: function (request, h) { - return posts.slice(0, request.query.limit); - }, - options: { - validate: { - query: { - limit: Joi.number().integer().min(1).max(100).default(10), - }, + method: 'GET', + path: '/posts', + handler: function (request, h) { + return posts.slice(0, request.query.limit); + }, + options: { + validate: { + query: { + limit: Joi.number().integer().min(1).max(100).default(10), + }, + }, }, - }, }); ``` @@ -137,25 +137,25 @@ hapi 可以通过不同的验证模式对此进行支持。`response.status` 是 ```javascript const bookSchema = Joi.object({ - title: Joi.string().required(), - author: Joi.string().required(), - isbn: Joi.string().length(10), - pageCount: Joi.number(), - datePublished: Joi.date().iso(), + title: Joi.string().required(), + author: Joi.string().required(), + isbn: Joi.string().length(10), + pageCount: Joi.number(), + datePublished: Joi.date().iso(), }); server.route({ - method: 'GET', - path: '/books', - handler: async function (request, h) { - return await getBooks(); - }, - options: { - response: { - sample: 50, - schema: Joi.array().items(bookSchema), + method: 'GET', + path: '/books', + handler: async function (request, h) { + return await getBooks(); + }, + options: { + response: { + sample: 50, + schema: Joi.array().items(bookSchema), + }, }, - }, }); ``` diff --git a/docs/tutorials/zh_CN/views.md b/docs/tutorials/zh_CN/views.md index 50921593..909833a1 100644 --- a/docs/tutorials/zh_CN/views.md +++ b/docs/tutorials/zh_CN/views.md @@ -24,15 +24,15 @@ const Hoek = require('@hapi/hoek'); const server = Hapi.server(); const start = async () => { - await server.register(require('@hapi/vision')); - - server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: 'templates', - }); + await server.register(require('@hapi/vision')); + + server.views({ + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: 'templates', + }); }; start(); @@ -53,13 +53,13 @@ hapi 的视图引擎有众多的选项。完整的文档可以在这里找到 [v ```javascript server.views({ - engines: { - html: { - module: require('handlebars'), - compileMode: 'sync', // 引擎特定配置 + engines: { + html: { + module: require('handlebars'), + compileMode: 'sync', // 引擎特定配置 + }, }, - }, - compileMode: 'async', // 全局配置 + compileMode: 'async', // 全局配置 }); ``` @@ -108,13 +108,13 @@ templates\ ```javascript server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: './templates', - layoutPath: './templates/layout', - helpersPath: './templates/helpers', + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: './templates', + layoutPath: './templates/layout', + helpersPath: './templates/helpers', }); ``` @@ -128,11 +128,11 @@ server.views({ ```javascript server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return h.view('index'); - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return h.view('index'); + }, }); ``` @@ -148,11 +148,11 @@ return h.view('index', { title: 'My home page' }); ```javascript server.route({ - method: 'GET', - path: '/', - handler: { - view: 'index', - }, + method: 'GET', + path: '/', + handler: { + view: 'index', + }, }); ``` @@ -177,17 +177,17 @@ handler: { ```javascript const context = { - title: 'My personal site', + title: 'My personal site', }; server.views({ - engines: { - html: { - module: require('handlebars'), - compileMode: 'sync', // engine specific + engines: { + html: { + module: require('handlebars'), + compileMode: 'sync', // engine specific + }, }, - }, - context, + context, }); ``` @@ -201,21 +201,21 @@ server.views({ ```javascript module.exports = function () { - const fortunes = [ - 'Heisenberg may have slept here...', - 'Wanna buy a duck?', - 'Say no, then negotiate.', - 'Time and tide wait for no man.', - 'To teach is to learn.', - 'Never ask the barber if you need a haircut.', - 'You will forget that you ever knew me.', - 'You will be run over by a beer truck.', - 'Fortune favors the lucky.', - 'Have a nice day!', - ]; - - const x = Math.floor(Math.random() * fortunes.length); - return fortunes[x]; + const fortunes = [ + 'Heisenberg may have slept here...', + 'Wanna buy a duck?', + 'Say no, then negotiate.', + 'Time and tide wait for no man.', + 'To teach is to learn.', + 'Never ask the barber if you need a haircut.', + 'You will forget that you ever knew me.', + 'You will be run over by a beer truck.', + 'Fortune favors the lucky.', + 'Have a nice day!', + ]; + + const x = Math.floor(Math.random() * fortunes.length); + return fortunes[x]; }; ``` @@ -238,24 +238,24 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 8080 }); const start = async () => { - await server.register(require('@hapi/vision')); - - server.views({ - engines: { - html: require('handlebars'), - }, - relativeTo: __dirname, - path: 'templates', - helpersPath: 'helpers', - }); - - server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return h.view('index'); - }, - }); + await server.register(require('@hapi/vision')); + + server.views({ + engines: { + html: require('handlebars'), + }, + relativeTo: __dirname, + path: 'templates', + helpersPath: 'helpers', + }); + + server.route({ + method: 'GET', + path: '/', + handler: function (request, h) { + return h.view('index'); + }, + }); }; start(); @@ -269,9 +269,9 @@ vision 对于视图布局有一些内建的支持,这个功能默认是关闭 ```javascript server.views({ - // ... - layout: true, - layoutPath: 'templates/layout', + // ... + layout: true, + layoutPath: 'templates/layout', }); ``` @@ -281,9 +281,9 @@ server.views({ ```html - - {{{content}}} - + + {{{content}}} + ``` @@ -299,8 +299,8 @@ server.views({ ```javascript server.views({ - // ... - layout: 'another_default', + // ... + layout: 'another_default', }); ``` diff --git a/env.d.ts b/env.d.ts index cfab8ba8..84618842 100644 --- a/env.d.ts +++ b/env.d.ts @@ -1,13 +1,13 @@ declare module '*.vue' { - import type { DefineComponent } from 'vue'; - // oxlint-disable-next-line typescript/ban-types - const component: DefineComponent<{}, {}, any>; - export default component; + import type { DefineComponent } from 'vue'; + // oxlint-disable-next-line typescript/ban-types + const component: DefineComponent<{}, {}, any>; + export default component; } declare module '*?raw' { - const content: string; - export default content; + const content: string; + export default content; } declare module '*.css' {} diff --git a/generated/markdown/basic/7/api.md b/generated/markdown/basic/7/api.md index 3b45a364..374d85b7 100644 --- a/generated/markdown/basic/7/api.md +++ b/generated/markdown/basic/7/api.md @@ -3,16 +3,16 @@ Basic authentication requires validating a username and password combination. The `'basic'` scheme takes the following options: - `validate` - (required) a user lookup and password validation function with the signature `[async] function(request, username, password, h)` where: - - `request` - is the hapi request object of the request which is being authenticated. - - `username` - the username received from the client. - - `password` - the password received from the client. - - `h` - the response toolkit. - - Returns an object `{ isValid, credentials, response }` where: - - `isValid` - `true` if both the username was found and the password matched, otherwise `false`. - - `credentials` - a credentials object passed back to the application in `request.auth.credentials`. - - `response` - Optional. If provided will be used immediately as a takeover response. Can be used to redirect the client, for example. Don't need to provide `isValid` or `credentials` if `response` is provided - - Throwing an error from this function will replace default `Boom.unauthorized` error - - Typically, `credentials` are only included when `isValid` is `true`, but there are cases when the application needs to know who tried to authenticate even when it fails (e.g. with authentication mode `'try'`). + - `request` - is the hapi request object of the request which is being authenticated. + - `username` - the username received from the client. + - `password` - the password received from the client. + - `h` - the response toolkit. + - Returns an object `{ isValid, credentials, response }` where: + - `isValid` - `true` if both the username was found and the password matched, otherwise `false`. + - `credentials` - a credentials object passed back to the application in `request.auth.credentials`. + - `response` - Optional. If provided will be used immediately as a takeover response. Can be used to redirect the client, for example. Don't need to provide `isValid` or `credentials` if `response` is provided + - Throwing an error from this function will replace default `Boom.unauthorized` error + - Typically, `credentials` are only included when `isValid` is `true`, but there are cases when the application needs to know who tried to authenticate even when it fails (e.g. with authentication mode `'try'`). - `allowEmptyUsername` - (optional) if `true`, allows making requests with an empty username. Defaults to `false`. - `unauthorizedAttributes` - (optional) if set, passed directly to [Boom.unauthorized](https://github.com/hapijs/boom#boomunauthorizedmessage-scheme-attributes) if no custom `err` is thrown. Useful for setting realm attribute in WWW-Authenticate header. Defaults to `undefined`. @@ -21,55 +21,56 @@ const Bcrypt = require('bcrypt'); const Hapi = require('@hapi/hapi'); const users = { - john: { - username: 'john', - password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' - name: 'John Doe', - id: '2133d32a', - }, + john: { + username: 'john', + password: + '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' + name: 'John Doe', + id: '2133d32a', + }, }; const validate = async (request, username, password, h) => { - if (username === 'help') { - return { response: h.redirect('https://hapijs.com/help') }; // custom response - } + if (username === 'help') { + return { response: h.redirect('https://hapijs.com/help') }; // custom response + } - const user = users[username]; - if (!user) { - return { credentials: null, isValid: false }; - } + const user = users[username]; + if (!user) { + return { credentials: null, isValid: false }; + } - const isValid = await Bcrypt.compare(password, user.password); - const credentials = { id: user.id, name: user.name }; + const isValid = await Bcrypt.compare(password, user.password); + const credentials = { id: user.id, name: user.name }; - return { isValid, credentials }; + return { isValid, credentials }; }; const main = async () => { - const server = Hapi.server({ port: 4000 }); + const server = Hapi.server({ port: 4000 }); - await server.register(require('@hapi/basic')); + await server.register(require('@hapi/basic')); - server.auth.strategy('simple', 'basic', { validate }); - server.auth.default('simple'); + server.auth.strategy('simple', 'basic', { validate }); + server.auth.default('simple'); - server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return 'welcome'; - }, - }); + server.route({ + method: 'GET', + path: '/', + handler: function (request, h) { + return 'welcome'; + }, + }); - await server.start(); + await server.start(); - return server; + return server; }; main() - .then((server) => console.log(`Server listening on ${server.info.uri}`)) - .catch((err) => { - console.error(err); - process.exit(1); - }); + .then((server) => console.log(`Server listening on ${server.info.uri}`)) + .catch((err) => { + console.error(err); + process.exit(1); + }); ``` diff --git a/generated/markdown/bell/13/api.md b/generated/markdown/bell/13/api.md index 38909141..447741cc 100644 --- a/generated/markdown/bell/13/api.md +++ b/generated/markdown/bell/13/api.md @@ -33,54 +33,54 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ port: 8000 }); - - // Register bell with the server - - await server.register(Bell); - - // Declare an authentication strategy using the bell scheme - // with the name of the provider, cookie encryption password, - // and the OAuth client credentials. - - server.auth.strategy('twitter', 'bell', { - provider: 'twitter', - password: 'cookie_encryption_password_secure', - clientId: 'my_twitter_client_id', - clientSecret: 'my_twitter_client_secret', - isSecure: false, // Terrible idea but required if not using HTTPS especially if developing locally - }); - - // Use the 'twitter' authentication strategy to protect the - // endpoint handling the incoming authentication credentials. - // This endpoint usually looks up the third party account in - // the database and sets some application state (cookie) with - // the local application account information. - - server.route({ - method: ['GET', 'POST'], // Must handle both GET and POST - path: '/login', // The callback endpoint registered with the provider - options: { - auth: { - mode: 'try', - strategy: 'twitter', - }, - handler: function (request, h) { - if (!request.auth.isAuthenticated) { - return `Authentication failed due to: ${request.auth.error.message}`; - } - - // Perform any account lookup or registration, setup local session, - // and redirect to the application. The third-party credentials are - // stored in request.auth.credentials. Any query parameters from - // the initial request are passed back via request.auth.credentials.query. - - return h.redirect('/home'); - }, - }, - }); - - await server.start(); + const server = Hapi.server({ port: 8000 }); + + // Register bell with the server + + await server.register(Bell); + + // Declare an authentication strategy using the bell scheme + // with the name of the provider, cookie encryption password, + // and the OAuth client credentials. + + server.auth.strategy('twitter', 'bell', { + provider: 'twitter', + password: 'cookie_encryption_password_secure', + clientId: 'my_twitter_client_id', + clientSecret: 'my_twitter_client_secret', + isSecure: false, // Terrible idea but required if not using HTTPS especially if developing locally + }); + + // Use the 'twitter' authentication strategy to protect the + // endpoint handling the incoming authentication credentials. + // This endpoint usually looks up the third party account in + // the database and sets some application state (cookie) with + // the local application account information. + + server.route({ + method: ['GET', 'POST'], // Must handle both GET and POST + path: '/login', // The callback endpoint registered with the provider + options: { + auth: { + mode: 'try', + strategy: 'twitter', + }, + handler: function (request, h) { + if (!request.auth.isAuthenticated) { + return `Authentication failed due to: ${request.auth.error.message}`; + } + + // Perform any account lookup or registration, setup local session, + // and redirect to the application. The third-party credentials are + // stored in request.auth.credentials. Any query parameters from + // the initial request are passed back via request.auth.credentials.query. + + return h.redirect('/home'); + }, + }, + }); + + await server.start(); }; internals.start(); @@ -110,54 +110,54 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ port: 8000 }); - - // Register bell with the server - - await server.register(Bell); - - // Declare an authentication strategy using the bell scheme - // with the name of the provider, cookie encryption password, - // and the OAuth client credentials. - - server.auth.strategy('twitter', 'bell', { - provider: 'twitter', - password: 'cookie_encryption_password_secure', - clientId: 'my_twitter_client_id', - clientSecret: 'my_twitter_client_secret', - isSecure: false, // Terrible idea but required if not using HTTPS especially if developing locally - }); - - // Use the 'twitter' authentication strategy to protect the - // endpoint handling the incoming authentication credentials. - // This endpoints usually looks up the third party account in - // the database and sets some application state (cookie) with - // the local application account information. - - server.route({ - method: ['GET', 'POST'], // Must handle both GET and POST - path: '/login', // The callback endpoint registered with the provider - options: { - auth: { - mode: 'try', - strategy: 'twitter', - }, - handler: function (request, h) { - if (!request.auth.isAuthenticated) { - return `Authentication failed due to: ${request.auth.error.message}`; - } - - // Perform any account lookup or registration, setup local session, - // and redirect to the application. The third-party credentials are - // stored in request.auth.credentials. Any query parameters from - // the initial request are passed back via request.auth.credentials.query. - - return h.redirect('/home'); - }, - }, - }); - - await server.start(); + const server = Hapi.server({ port: 8000 }); + + // Register bell with the server + + await server.register(Bell); + + // Declare an authentication strategy using the bell scheme + // with the name of the provider, cookie encryption password, + // and the OAuth client credentials. + + server.auth.strategy('twitter', 'bell', { + provider: 'twitter', + password: 'cookie_encryption_password_secure', + clientId: 'my_twitter_client_id', + clientSecret: 'my_twitter_client_secret', + isSecure: false, // Terrible idea but required if not using HTTPS especially if developing locally + }); + + // Use the 'twitter' authentication strategy to protect the + // endpoint handling the incoming authentication credentials. + // This endpoints usually looks up the third party account in + // the database and sets some application state (cookie) with + // the local application account information. + + server.route({ + method: ['GET', 'POST'], // Must handle both GET and POST + path: '/login', // The callback endpoint registered with the provider + options: { + auth: { + mode: 'try', + strategy: 'twitter', + }, + handler: function (request, h) { + if (!request.auth.isAuthenticated) { + return `Authentication failed due to: ${request.auth.error.message}`; + } + + // Perform any account lookup or registration, setup local session, + // and redirect to the application. The third-party credentials are + // stored in request.auth.credentials. Any query parameters from + // the initial request are passed back via request.auth.credentials.query. + + return h.redirect('/home'); + }, + }, + }); + + await server.start(); }; internals.start(); @@ -172,39 +172,39 @@ The `server.auth.strategy()` method requires the following strategy options: `'instagram'`, `'linkedin'`, `'live'`, `'twitter'`, `'vk'`, `'arcgisonline'`, `'yahoo'`, `'nest'`, `'phabricator'`, `'pinterest'`) or an object containing a custom provider with the following: - - `name` - the custom provider name. Defaults to `custom`. - - `protocol` - the authorization protocol used. Must be one of: - - `'oauth'` - OAuth 1.0a - - `'oauth2'` - OAuth 2.0 - - `signatureMethod` - the OAuth signature method (OAuth 1.0a only). Must be one of: - - `'HMAC-SHA1'` - default - - `'RSA-SHA1'` - in that case, the `clientSecret` is your RSA private key - - `temporary` - the temporary credentials (request token) endpoint (OAuth 1.0a only). - - `useParamsAuth` - boolean that determines if OAuth client id and client secret will be sent - as parameters as opposed to an Authorization header (OAuth 2.0 only). Defaults to `false`. - - `auth` - the authorization endpoint URI. - - `token` - the access token endpoint URI. - - `scope` - an array of scope strings (OAuth 2.0 only). - - `scopeSeparator` - the scope separator character (OAuth 2.0 only). Only required when a - provider has a broken OAuth 2.0 implementation. Defaults to space (Facebook and GitHub - default to comma). - - `headers` - a headers object with additional headers required by the provider (e.g. GitHub - required the 'User-Agent' header which is set by default). - - `profileMethod` - `get` or `post` for obtaining user profile by `profile` function. Default - is `get`. - - `profile` - a function used to obtain user profile information and normalize it. The function - signature is `async function(credentials, params, get)` where: - - `credentials` - the credentials object. Change the object directly within the function - (profile information is typically stored under `credentials.profile`). - - `params` - the parsed information received from the provider (e.g. token, secret, and - other custom fields). - - `get` - an OAuth helper function to make authenticated requests using the credentials - received. The `get` function signature is `async function(uri, params)` where: - - `uri` - the requested resource URI (**bell** will add the token or authentication - header as needed). - - `params` - any URI query parameters (cannot include them in the URI due to signature - requirements). - - returns the parsed profile response object. + - `name` - the custom provider name. Defaults to `custom`. + - `protocol` - the authorization protocol used. Must be one of: + - `'oauth'` - OAuth 1.0a + - `'oauth2'` - OAuth 2.0 + - `signatureMethod` - the OAuth signature method (OAuth 1.0a only). Must be one of: + - `'HMAC-SHA1'` - default + - `'RSA-SHA1'` - in that case, the `clientSecret` is your RSA private key + - `temporary` - the temporary credentials (request token) endpoint (OAuth 1.0a only). + - `useParamsAuth` - boolean that determines if OAuth client id and client secret will be sent + as parameters as opposed to an Authorization header (OAuth 2.0 only). Defaults to `false`. + - `auth` - the authorization endpoint URI. + - `token` - the access token endpoint URI. + - `scope` - an array of scope strings (OAuth 2.0 only). + - `scopeSeparator` - the scope separator character (OAuth 2.0 only). Only required when a + provider has a broken OAuth 2.0 implementation. Defaults to space (Facebook and GitHub + default to comma). + - `headers` - a headers object with additional headers required by the provider (e.g. GitHub + required the 'User-Agent' header which is set by default). + - `profileMethod` - `get` or `post` for obtaining user profile by `profile` function. Default + is `get`. + - `profile` - a function used to obtain user profile information and normalize it. The function + signature is `async function(credentials, params, get)` where: + - `credentials` - the credentials object. Change the object directly within the function + (profile information is typically stored under `credentials.profile`). + - `params` - the parsed information received from the provider (e.g. token, secret, and + other custom fields). + - `get` - an OAuth helper function to make authenticated requests using the credentials + received. The `get` function signature is `async function(uri, params)` where: + - `uri` - the requested resource URI (**bell** will add the token or authentication + header as needed). + - `params` - any URI query parameters (cannot include them in the URI due to signature + requirements). + - returns the parsed profile response object. - `password` - the cookie encryption password. Used to encrypt the temporary state cookie used by the module in between the authorization protocol steps. @@ -241,10 +241,10 @@ Each strategy accepts the following optional settings: passed either as an object to merge into the query string, or a function which takes the client's `request` and returns an object. Each provider supports its own set of parameters which customize the user's login experience. For example: - - Facebook supports `display` ('page', 'popup', or 'touch'), `auth_type`, `auth_nonce`. - - Google supports `access_type`, `approval_prompt`, `prompt`, `login_hint`, `user_id`, `hd`. - - Twitter supports `force_login`, `screen_name`. - - Linkedin supports `fields`. + - Facebook supports `display` ('page', 'popup', or 'touch'), `auth_type`, `auth_nonce`. + - Google supports `access_type`, `approval_prompt`, `prompt`, `login_hint`, `user_id`, `hd`. + - Twitter supports `force_login`, `screen_name`. + - Linkedin supports `fields`. - `allowRuntimeProviderParams` - allows passing query parameters from a **bell** protected endpoint to the auth request. It will merge the query params you pass along with the providerParams and any other predefined ones. Be aware that this will override predefined query parameters! Default @@ -256,13 +256,13 @@ Each strategy accepts the following optional settings: - `skipProfile` - skips obtaining a user profile from the provider. Useful if you need specific `scope`s, but not the user profile. Defaults to `false`. - `config` - a configuration object used to customize the provider settings: - - Twitter: - - `extendedProfile` - - `getMethod` - - GitHub and Phabricator: - - `uri` - allows pointing to a private enterprise installation (e.g. - `'https://vpn.example.com'`). See [Providers documentation](https://github.com/hapijs/bell/blob/master/Providers.md) for more - information. + - Twitter: + - `extendedProfile` + - `getMethod` + - GitHub and Phabricator: + - `uri` - allows pointing to a private enterprise installation (e.g. + `'https://vpn.example.com'`). See [Providers documentation](https://github.com/hapijs/bell/blob/master/Providers.md) for more + information. - `tokenParams` - provider-specific query parameters for the token endpoint. It may be passed either as an object to merge into the query string, or a function which takes the client's `request` and returns an object. Each provider supports its own set of parameters which customize @@ -283,7 +283,7 @@ On route handlers, the [authentication object](https://hapi.dev/api/#request.aut ```javascript auth.credentials = { - provider: String, // provider name + provider: String, // provider name }; ``` @@ -293,9 +293,9 @@ auth.credentials = { ```javascript auth.credentials = { - token: String, - secret: String, - query: Object, // sign-in request query params + token: String, + secret: String, + query: Object, // sign-in request query params }; ``` @@ -303,10 +303,10 @@ auth.credentials = { ```javascript auth.credentials = { - token: String, - refreshToken: String, - expiresIn: Number, - query: Object, // sign-in request query params + token: String, + refreshToken: String, + expiresIn: Number, + query: Object, // sign-in request query params }; auth.artifacts = Object; // OAuth token payload response @@ -316,7 +316,7 @@ auth.artifacts = Object; // OAuth token payload response ```javascript auth.credentials = { - query: Object, // sign-in request query params + query: Object, // sign-in request query params }; ``` @@ -364,8 +364,8 @@ The `Bell.simulate(credentialsFunc)` takes a single argument: should return the credentials object to be set in `request.auth.credentials`. Note that **bell** will set the default keys automatically if not present except for the provider-specific values. - has the signature `function(request)` where: - - `request` - the **hapi** request object. + has the signature `function(request)` where: + - `request` - the **hapi** request object. Note that you must call `Bell.simulate()` before the module is registered by your application and need to call `Bell.simulate(false)` to stop it from simulating authentication. @@ -389,15 +389,15 @@ updates on their behalf. ```js server.auth.strategy('twitter', 'bell', { - provider: 'twitter', - password: 'some cookie password', - location: 'http://example.com/oauth', - scope(request) { - const scopes = ['public_profile', 'email']; - if (request.query.wantsSharePermission) { - scopes.push('publish_actions'); - } - return scopes; - }, + provider: 'twitter', + password: 'some cookie password', + location: 'http://example.com/oauth', + scope(request) { + const scopes = ['public_profile', 'email']; + if (request.query.wantsSharePermission) { + scopes.push('publish_actions'); + } + return scopes; + }, }); ``` diff --git a/generated/markdown/bell/examples.md b/generated/markdown/bell/examples.md index 6bdb219d..9a4ee8e5 100644 --- a/generated/markdown/bell/examples.md +++ b/generated/markdown/bell/examples.md @@ -9,39 +9,41 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ port: 8000 }); - await server.register(Bell); - - // You'll need to go to https://developers.arcgis.com/en/applications and set up an application to get started - // Once you create your app you will get your ClientID and Client Secret. - // Also be sure to set redirect URL as well at the bottom of the screen in Redirect URIs section. - - server.auth.strategy('arcgisonline', 'bell', { - provider: 'arcgisonline', - password: 'cookie_encryption_password_secure', - isSecure: false, - clientId: '', - clientSecret: '', - providerParams: { - redirect_uri: server.info.uri + '/bell/door', - }, - }); - - server.route({ - method: '*', - path: '/bell/door', - options: { - auth: 'arcgisonline', - handler: function (request, h) { - return ( - '
    ' + JSON.stringify(request.auth.credentials, null, 4) + '
    ' - ); - }, - }, - }); - - await server.start(); - console.log('Server started at:', server.info.uri); + const server = Hapi.server({ port: 8000 }); + await server.register(Bell); + + // You'll need to go to https://developers.arcgis.com/en/applications and set up an application to get started + // Once you create your app you will get your ClientID and Client Secret. + // Also be sure to set redirect URL as well at the bottom of the screen in Redirect URIs section. + + server.auth.strategy('arcgisonline', 'bell', { + provider: 'arcgisonline', + password: 'cookie_encryption_password_secure', + isSecure: false, + clientId: '', + clientSecret: '', + providerParams: { + redirect_uri: server.info.uri + '/bell/door', + }, + }); + + server.route({ + method: '*', + path: '/bell/door', + options: { + auth: 'arcgisonline', + handler: function (request, h) { + return ( + '
    ' +
    +                    JSON.stringify(request.auth.credentials, null, 4) +
    +                    '
    ' + ); + }, + }, + }); + + await server.start(); + console.log('Server started at:', server.info.uri); }; internals.start(); @@ -58,34 +60,36 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ port: 8000 }); - await server.register(Bell); - - // Fill in your clientId and clientSecret: https://discord.com/developers/applications/me - - server.auth.strategy('discord', 'bell', { - provider: 'discord', - password: 'cookie_encryption_password_secure', - isSecure: false, - clientId: '', - clientSecret: '', - }); - - server.route({ - method: '*', - path: '/bell/door', - options: { - auth: 'discord', - handler: function (request, h) { - return ( - '
    ' + JSON.stringify(request.auth.credentials, null, 4) + '
    ' - ); - }, - }, - }); - - await server.start(); - console.log('Server started at:', server.info.uri); + const server = Hapi.server({ port: 8000 }); + await server.register(Bell); + + // Fill in your clientId and clientSecret: https://discord.com/developers/applications/me + + server.auth.strategy('discord', 'bell', { + provider: 'discord', + password: 'cookie_encryption_password_secure', + isSecure: false, + clientId: '', + clientSecret: '', + }); + + server.route({ + method: '*', + path: '/bell/door', + options: { + auth: 'discord', + handler: function (request, h) { + return ( + '
    ' +
    +                    JSON.stringify(request.auth.credentials, null, 4) +
    +                    '
    ' + ); + }, + }, + }); + + await server.start(); + console.log('Server started at:', server.info.uri); }; internals.start(); @@ -102,46 +106,51 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ host: 'localhost', port: 8000 }); - await server.register(Bell); - - // You'll need to go to https://developers.facebook.com/ and set up a - // Website application to get started - // Once you create your app, fill out Settings and set the App Domains - // Under Settings >> Advanced, set the Valid OAuth redirect URIs to include http:///bell/door - // and enable Client OAuth Login - - server.auth.strategy('facebook', 'bell', { - provider: 'facebook', - password: 'cookie_encryption_password_secure', - isSecure: false, - clientId: '', - clientSecret: '', - location: server.info.uri, - }); - - server.route({ - method: '*', - path: '/bell/door', - options: { - auth: { - strategy: 'facebook', - mode: 'try', - }, - handler: function (request, h) { - if (!request.auth.isAuthenticated) { - return 'Authentication failed due to: ' + request.auth.error.message; - } - - return ( - '
    ' + JSON.stringify(request.auth.credentials, null, 4) + '
    ' - ); - }, - }, - }); - - await server.start(); - console.log('Server started at:', server.info.uri); + const server = Hapi.server({ host: 'localhost', port: 8000 }); + await server.register(Bell); + + // You'll need to go to https://developers.facebook.com/ and set up a + // Website application to get started + // Once you create your app, fill out Settings and set the App Domains + // Under Settings >> Advanced, set the Valid OAuth redirect URIs to include http:///bell/door + // and enable Client OAuth Login + + server.auth.strategy('facebook', 'bell', { + provider: 'facebook', + password: 'cookie_encryption_password_secure', + isSecure: false, + clientId: '', + clientSecret: '', + location: server.info.uri, + }); + + server.route({ + method: '*', + path: '/bell/door', + options: { + auth: { + strategy: 'facebook', + mode: 'try', + }, + handler: function (request, h) { + if (!request.auth.isAuthenticated) { + return ( + 'Authentication failed due to: ' + + request.auth.error.message + ); + } + + return ( + '
    ' +
    +                    JSON.stringify(request.auth.credentials, null, 4) +
    +                    '
    ' + ); + }, + }, + }); + + await server.start(); + console.log('Server started at:', server.info.uri); }; internals.start(); @@ -158,45 +167,47 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ port: 8000 }); - await server.register(Bell); - - // You will need github account for setting up an application and get a clientID and ClientSecret - // This is a helpful tutorial for the whole process: https://developer.github.com/apps/building-github-apps/creating-a-github-app/ - // This guide will help you set up your app and generate ID and secret. - - server.auth.strategy('github', 'bell', { - provider: 'github', - password: 'cookie_encryption_password_secure', - isSecure: false, // For testing or in environments secured via other means - clientId: '', - clientSecret: '', - location: 'https://example.com', - scope: [], - }); - - server.route({ - method: ['GET', 'POST'], - path: '/login', - options: { - auth: { - strategy: 'github', - mode: 'try', - }, - handler: function (request, h) { - if (!request.auth.isAuthenticated) { - return `Authentication failed due to: ${request.auth.error.message}`; - } - - return ( - '
    ' + JSON.stringify(request.auth.credentials, null, 4) + '
    ' - ); - }, - }, - }); - - await server.start(); - console.log('Server started at:', server.info.uri); + const server = Hapi.server({ port: 8000 }); + await server.register(Bell); + + // You will need github account for setting up an application and get a clientID and ClientSecret + // This is a helpful tutorial for the whole process: https://developer.github.com/apps/building-github-apps/creating-a-github-app/ + // This guide will help you set up your app and generate ID and secret. + + server.auth.strategy('github', 'bell', { + provider: 'github', + password: 'cookie_encryption_password_secure', + isSecure: false, // For testing or in environments secured via other means + clientId: '', + clientSecret: '', + location: 'https://example.com', + scope: [], + }); + + server.route({ + method: ['GET', 'POST'], + path: '/login', + options: { + auth: { + strategy: 'github', + mode: 'try', + }, + handler: function (request, h) { + if (!request.auth.isAuthenticated) { + return `Authentication failed due to: ${request.auth.error.message}`; + } + + return ( + '
    ' +
    +                    JSON.stringify(request.auth.credentials, null, 4) +
    +                    '
    ' + ); + }, + }, + }); + + await server.start(); + console.log('Server started at:', server.info.uri); }; internals.start(); @@ -213,47 +224,52 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ host: 'localhost', port: 8000 }); - await server.register(Bell); - - // You'll need to go to https://console.developers.google.com and set up an application to get started - // Once you create your app, fill out "APIs & auth >> Consent screen" and make sure to set the email field - // Next, go to "APIs & auth >> Credentials and Create new Client ID - // Select "web application" and set "AUTHORIZED JAVASCRIPT ORIGINS" and "AUTHORIZED REDIRECT URIS" - // This will net you the clientId and the clientSecret needed. - // Also be sure to pass the location as well. It must be in the list of "AUTHORIZED REDIRECT URIS" - - server.auth.strategy('google', 'bell', { - provider: 'google', - password: 'cookie_encryption_password_secure', - isSecure: false, - clientId: '', - clientSecret: '', - location: server.info.uri, - }); - - server.route({ - method: '*', - path: '/bell/door', - options: { - auth: { - strategy: 'google', - mode: 'try', - }, - handler: function (request, h) { - if (!request.auth.isAuthenticated) { - return 'Authentication failed due to: ' + request.auth.error.message; - } - - return ( - '
    ' + JSON.stringify(request.auth.credentials, null, 4) + '
    ' - ); - }, - }, - }); - - await server.start(); - console.log('Server started at:', server.info.uri); + const server = Hapi.server({ host: 'localhost', port: 8000 }); + await server.register(Bell); + + // You'll need to go to https://console.developers.google.com and set up an application to get started + // Once you create your app, fill out "APIs & auth >> Consent screen" and make sure to set the email field + // Next, go to "APIs & auth >> Credentials and Create new Client ID + // Select "web application" and set "AUTHORIZED JAVASCRIPT ORIGINS" and "AUTHORIZED REDIRECT URIS" + // This will net you the clientId and the clientSecret needed. + // Also be sure to pass the location as well. It must be in the list of "AUTHORIZED REDIRECT URIS" + + server.auth.strategy('google', 'bell', { + provider: 'google', + password: 'cookie_encryption_password_secure', + isSecure: false, + clientId: '', + clientSecret: '', + location: server.info.uri, + }); + + server.route({ + method: '*', + path: '/bell/door', + options: { + auth: { + strategy: 'google', + mode: 'try', + }, + handler: function (request, h) { + if (!request.auth.isAuthenticated) { + return ( + 'Authentication failed due to: ' + + request.auth.error.message + ); + } + + return ( + '
    ' +
    +                    JSON.stringify(request.auth.credentials, null, 4) +
    +                    '
    ' + ); + }, + }, + }); + + await server.start(); + console.log('Server started at:', server.info.uri); }; internals.start(); @@ -270,38 +286,40 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ port: 8000 }); - await server.register(Bell); - - // You'll need to go to https://www.linkedin.com/secure/developer?newapp= and set up an application to get started - // Follow the instructions on https://developer.linkedin.com/docs/oauth2 to setup redirect_uri and default scopes - - server.auth.strategy('linkedin', 'bell', { - provider: 'linkedin', - password: 'cookie_encryption_password_secure', - isSecure: false, - clientId: '', - clientSecret: '', - providerParams: { - redirect_uri: server.info.uri + '/bell/door', - }, - }); - - server.route({ - method: '*', - path: '/bell/door', - options: { - auth: 'linkedin', - handler: function (request, h) { - return ( - '
    ' + JSON.stringify(request.auth.credentials, null, 4) + '
    ' - ); - }, - }, - }); - - await server.start(); - console.log('Server started at:', server.info.uri); + const server = Hapi.server({ port: 8000 }); + await server.register(Bell); + + // You'll need to go to https://www.linkedin.com/secure/developer?newapp= and set up an application to get started + // Follow the instructions on https://developer.linkedin.com/docs/oauth2 to setup redirect_uri and default scopes + + server.auth.strategy('linkedin', 'bell', { + provider: 'linkedin', + password: 'cookie_encryption_password_secure', + isSecure: false, + clientId: '', + clientSecret: '', + providerParams: { + redirect_uri: server.info.uri + '/bell/door', + }, + }); + + server.route({ + method: '*', + path: '/bell/door', + options: { + auth: 'linkedin', + handler: function (request, h) { + return ( + '
    ' +
    +                    JSON.stringify(request.auth.credentials, null, 4) +
    +                    '
    ' + ); + }, + }, + }); + + await server.start(); + console.log('Server started at:', server.info.uri); }; internals.start(); @@ -318,37 +336,39 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ port: 8000 }); - await server.register(Bell); - - // Firstly give the meetup oauth docs a quick glance --> http://www.meetup.com/meetup_api/auth/#oauth2 - // Secondly you'll need to create an OAuth consumer --> https://secure.meetup.com/meetup_api/oauth_consumers/ - // Now you can fill in the required fields below and take this example for a test drive - - server.auth.strategy('meetup', 'bell', { - provider: 'meetup', - password: 'cookie_encryption_password_secure', - isSecure: false, - clientId: '', - clientSecret: '', - // scope: ['basic', 'ageless', 'group_edit', 'reporting'] // Uncomment for more scopes, if not you get the "basic" scope by default - }); - - server.route({ - method: '*', - path: '/bell/door', - options: { - auth: 'meetup', - handler: function (request, h) { - return ( - '
    ' + JSON.stringify(request.auth.credentials, null, 4) + '
    ' - ); - }, - }, - }); - - await server.start(); - console.log('Server started at:', server.info.uri); + const server = Hapi.server({ port: 8000 }); + await server.register(Bell); + + // Firstly give the meetup oauth docs a quick glance --> http://www.meetup.com/meetup_api/auth/#oauth2 + // Secondly you'll need to create an OAuth consumer --> https://secure.meetup.com/meetup_api/oauth_consumers/ + // Now you can fill in the required fields below and take this example for a test drive + + server.auth.strategy('meetup', 'bell', { + provider: 'meetup', + password: 'cookie_encryption_password_secure', + isSecure: false, + clientId: '', + clientSecret: '', + // scope: ['basic', 'ageless', 'group_edit', 'reporting'] // Uncomment for more scopes, if not you get the "basic" scope by default + }); + + server.route({ + method: '*', + path: '/bell/door', + options: { + auth: 'meetup', + handler: function (request, h) { + return ( + '
    ' +
    +                    JSON.stringify(request.auth.credentials, null, 4) +
    +                    '
    ' + ); + }, + }, + }); + + await server.start(); + console.log('Server started at:', server.info.uri); }; internals.start(); @@ -365,32 +385,34 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ port: 8000 }); - await server.register(Bell); - - server.auth.strategy('nest', 'bell', { - provider: 'nest', - password: 'cookie_encryption_password_secure', - isSecure: false, - clientId: '', // Fill in your clientId and clientSecret - clientSecret: '', - }); - - server.route({ - method: '*', - path: '/bell/door', - options: { - auth: 'nest', - handler: function (request, h) { - return ( - '
    ' + JSON.stringify(request.auth.credentials, null, 4) + '
    ' - ); - }, - }, - }); - - await server.start(); - console.log('Server started at:', server.info.uri); + const server = Hapi.server({ port: 8000 }); + await server.register(Bell); + + server.auth.strategy('nest', 'bell', { + provider: 'nest', + password: 'cookie_encryption_password_secure', + isSecure: false, + clientId: '', // Fill in your clientId and clientSecret + clientSecret: '', + }); + + server.route({ + method: '*', + path: '/bell/door', + options: { + auth: 'nest', + handler: function (request, h) { + return ( + '
    ' +
    +                    JSON.stringify(request.auth.credentials, null, 4) +
    +                    '
    ' + ); + }, + }, + }); + + await server.start(); + console.log('Server started at:', server.info.uri); }; internals.start(); @@ -407,46 +429,51 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ host: 'localhost', port: 8000 }); - await server.register(Bell); - - // You'll need an Office 365 account to set up an application and get a clientID and ClientSecret - // This is a helpful tutorial for the whole process: https://dev.outlook.com/restapi/tutorial/node - // Once you have an account, you can set up your app and generate an ID and Secret here: - // https://apps.dev.microsoft.com/ - - server.auth.strategy('office', 'bell', { - provider: 'office365', - clientId: '', - clientSecret: '', - providerParams: { - response_type: 'code', - }, - scope: ['openid', 'offline_access', 'profile'], - }); - - server.route({ - method: '*', - path: '/bell/door', - options: { - auth: { - strategy: 'office', - mode: 'try', - }, - handler: function (request, h) { - if (!request.auth.isAuthenticated) { - return 'Authentication failed due to: ' + request.auth.error.message; - } - - return ( - '
    ' + JSON.stringify(request.auth.credentials, null, 4) + '
    ' - ); - }, - }, - }); - - await server.start(); - console.log('Server started at:', server.info.uri); + const server = Hapi.server({ host: 'localhost', port: 8000 }); + await server.register(Bell); + + // You'll need an Office 365 account to set up an application and get a clientID and ClientSecret + // This is a helpful tutorial for the whole process: https://dev.outlook.com/restapi/tutorial/node + // Once you have an account, you can set up your app and generate an ID and Secret here: + // https://apps.dev.microsoft.com/ + + server.auth.strategy('office', 'bell', { + provider: 'office365', + clientId: '', + clientSecret: '', + providerParams: { + response_type: 'code', + }, + scope: ['openid', 'offline_access', 'profile'], + }); + + server.route({ + method: '*', + path: '/bell/door', + options: { + auth: { + strategy: 'office', + mode: 'try', + }, + handler: function (request, h) { + if (!request.auth.isAuthenticated) { + return ( + 'Authentication failed due to: ' + + request.auth.error.message + ); + } + + return ( + '
    ' +
    +                    JSON.stringify(request.auth.credentials, null, 4) +
    +                    '
    ' + ); + }, + }, + }); + + await server.start(); + console.log('Server started at:', server.info.uri); }; internals.start(); @@ -464,67 +491,67 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ port: 8000 }); - await server.register([require('@hapi/cookie'), Bell]); - - server.auth.strategy('session', 'cookie', { - cookie: { - name: 'sid-okta-example', // Cookie name - password: 'password-should-be-32-characters', // Use something more secure in production - isSecure: false, // Should be set to true (which is the default) in production - }, - redirectTo: '/auth/okta', // If there is no session, redirect here - }); - - server.auth.strategy('okta', 'bell', { - provider: 'okta', - config: { uri: 'https://your-organization.okta.com' }, - password: 'cookie_encryption_password_secure', - isSecure: false, - location: 'http://127.0.0.1:8000', - clientId: 'IIA1yMR7IK4XGhfyfCno', - clientSecret: 'PEh_HemJovaR-Zjs-unX8-cC9IhQgzF5M1RUrUgW', - }); - - server.route({ - method: 'GET', - path: '/auth/okta', - options: { - auth: { - strategy: 'okta', - mode: 'try', - }, - handler: function (request, h) { - if (!request.auth.isAuthenticated) { - throw Boom.unauthorized( - 'Authentication failed: ' + request.auth.error.message, - ); - } - - // Just store the third party credentials in the session as an example. You could do something - // more useful here - like loading or setting up an account (social signup). - - request.auth.session.set(request.auth.credentials); - return h.redirect('/'); - }, - }, - }); - - server.route({ - method: 'GET', - path: '/', - options: { - auth: 'session', - handler: function (request, h) { - //Return a message using the information from the session - - return 'Hello, ' + request.auth.credentials.profile.email + '!'; - }, - }, - }); - - await server.start(); - console.log('Server started at:', server.info.uri); + const server = Hapi.server({ port: 8000 }); + await server.register([require('@hapi/cookie'), Bell]); + + server.auth.strategy('session', 'cookie', { + cookie: { + name: 'sid-okta-example', // Cookie name + password: 'password-should-be-32-characters', // Use something more secure in production + isSecure: false, // Should be set to true (which is the default) in production + }, + redirectTo: '/auth/okta', // If there is no session, redirect here + }); + + server.auth.strategy('okta', 'bell', { + provider: 'okta', + config: { uri: 'https://your-organization.okta.com' }, + password: 'cookie_encryption_password_secure', + isSecure: false, + location: 'http://127.0.0.1:8000', + clientId: 'IIA1yMR7IK4XGhfyfCno', + clientSecret: 'PEh_HemJovaR-Zjs-unX8-cC9IhQgzF5M1RUrUgW', + }); + + server.route({ + method: 'GET', + path: '/auth/okta', + options: { + auth: { + strategy: 'okta', + mode: 'try', + }, + handler: function (request, h) { + if (!request.auth.isAuthenticated) { + throw Boom.unauthorized( + 'Authentication failed: ' + request.auth.error.message, + ); + } + + // Just store the third party credentials in the session as an example. You could do something + // more useful here - like loading or setting up an account (social signup). + + request.auth.session.set(request.auth.credentials); + return h.redirect('/'); + }, + }, + }); + + server.route({ + method: 'GET', + path: '/', + options: { + auth: 'session', + handler: function (request, h) { + //Return a message using the information from the session + + return 'Hello, ' + request.auth.credentials.profile.email + '!'; + }, + }, + }); + + await server.start(); + console.log('Server started at:', server.info.uri); }; internals.start(); @@ -541,30 +568,32 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ port: 8000 }); - await server.register(Bell); - server.auth.strategy('slack', 'bell', { - provider: 'slack', - password: 'cookie_encryption_password_secure', - isSecure: false, - clientId: '', - clientSecret: '', - }); - - server.route({ - method: '*', - path: '/bell/door', - options: { - auth: 'slack', - handler: function (request, h) { - return ( - '
    ' + JSON.stringify(request.auth.credentials, null, 4) + '
    ' - ); - }, - }, - }); - - await server.start(); + const server = Hapi.server({ port: 8000 }); + await server.register(Bell); + server.auth.strategy('slack', 'bell', { + provider: 'slack', + password: 'cookie_encryption_password_secure', + isSecure: false, + clientId: '', + clientSecret: '', + }); + + server.route({ + method: '*', + path: '/bell/door', + options: { + auth: 'slack', + handler: function (request, h) { + return ( + '
    ' +
    +                    JSON.stringify(request.auth.credentials, null, 4) +
    +                    '
    ' + ); + }, + }, + }); + + await server.start(); }; internals.start(); @@ -581,42 +610,47 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ port: 8000 }); - await server.register(Bell); - - // You need to register developer application with a Twitch account to obtain your clientId, clientSecret, and assign redirect URI - - server.auth.strategy('twitch', 'bell', { - provider: 'twitch', - password: 'cookie_encryption_password_secure', - isSecure: false, - clientId: '', // Set client id - clientSecret: '', // Set client secret - // scope: ['user_read', 'channel_read'] // Uncomment for more scopes (check Twitch API documentation), "user_read" scope is set as default - }); - - server.route({ - method: ['GET', 'POST'], - path: '/bell/door', - options: { - auth: { - strategy: 'twitch', - mode: 'try', - }, - handler: function (request, h) { - if (!request.auth.isAuthenticated) { - return 'Authentication failed due to: ' + request.auth.error.message; - } - - return ( - '
    ' + JSON.stringify(request.auth.credentials, null, 4) + '
    ' - ); - }, - }, - }); - - await server.start(); - console.log('Server started at:', server.info.uri); + const server = Hapi.server({ port: 8000 }); + await server.register(Bell); + + // You need to register developer application with a Twitch account to obtain your clientId, clientSecret, and assign redirect URI + + server.auth.strategy('twitch', 'bell', { + provider: 'twitch', + password: 'cookie_encryption_password_secure', + isSecure: false, + clientId: '', // Set client id + clientSecret: '', // Set client secret + // scope: ['user_read', 'channel_read'] // Uncomment for more scopes (check Twitch API documentation), "user_read" scope is set as default + }); + + server.route({ + method: ['GET', 'POST'], + path: '/bell/door', + options: { + auth: { + strategy: 'twitch', + mode: 'try', + }, + handler: function (request, h) { + if (!request.auth.isAuthenticated) { + return ( + 'Authentication failed due to: ' + + request.auth.error.message + ); + } + + return ( + '
    ' +
    +                    JSON.stringify(request.auth.credentials, null, 4) +
    +                    '
    ' + ); + }, + }, + }); + + await server.start(); + console.log('Server started at:', server.info.uri); }; internals.start(); @@ -633,36 +667,38 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ port: 8000 }); - await server.register(Bell); - - // Make sure to set a "Callback URL" and - // check the "Allow this application to be used to Sign in with Twitter" - // on the "Settings" tab in your Twitter application - - server.auth.strategy('twitter', 'bell', { - provider: 'twitter', - password: 'cookie_encryption_password_secure', - isSecure: false, - clientId: '', // Set client id - clientSecret: '', // Set client secret - }); - - server.route({ - method: '*', - path: '/bell/door', - options: { - auth: 'twitter', - handler: function (request, h) { - return ( - '
    ' + JSON.stringify(request.auth.credentials, null, 4) + '
    ' - ); - }, - }, - }); - - await server.start(); - console.log('Server started at:', server.info.uri); + const server = Hapi.server({ port: 8000 }); + await server.register(Bell); + + // Make sure to set a "Callback URL" and + // check the "Allow this application to be used to Sign in with Twitter" + // on the "Settings" tab in your Twitter application + + server.auth.strategy('twitter', 'bell', { + provider: 'twitter', + password: 'cookie_encryption_password_secure', + isSecure: false, + clientId: '', // Set client id + clientSecret: '', // Set client secret + }); + + server.route({ + method: '*', + path: '/bell/door', + options: { + auth: 'twitter', + handler: function (request, h) { + return ( + '
    ' +
    +                    JSON.stringify(request.auth.credentials, null, 4) +
    +                    '
    ' + ); + }, + }, + }); + + await server.start(); + console.log('Server started at:', server.info.uri); }; internals.start(); diff --git a/generated/markdown/bell/providers.md b/generated/markdown/bell/providers.md index 54bc8beb..8ae61d7f 100644 --- a/generated/markdown/bell/providers.md +++ b/generated/markdown/bell/providers.md @@ -19,17 +19,17 @@ The default profile response will look like this: ```javascript credentials.profile = { - provider: 'arcgisonline', - orgId: profile.orgId, - username: profile.username, - displayName: profile.fullName, - name: { - first: profile.firstName, - last: profile.lastName, - }, - email: profile.email, - role: profile.role, - raw: profile, + provider: 'arcgisonline', + orgId: profile.orgId, + username: profile.username, + displayName: profile.fullName, + name: { + first: profile.firstName, + last: profile.lastName, + }, + email: profile.email, + role: profile.role, + raw: profile, }; ``` @@ -39,7 +39,7 @@ credentials.profile = { - `scope`: Defaults to `['openid', 'email', 'profile']` - `config`: - - `domain`: Your Auth0 domain name, such as `example.auth0.com` or `example.eu.auth0.com` + - `domain`: Your Auth0 domain name, such as `example.auth0.com` or `example.eu.auth0.com` - `auth`: [/authorize](https://auth0.com/docs/auth-api#!#get--authorize_social) - `token`: [/oauth/token](https://auth0.com/docs/protocols#3-getting-the-access-token) @@ -58,7 +58,7 @@ To authenticate a user with a specific identity provider directly, use `provider ```javascript providerParams: { - connection: 'Username-Password-Authentication'; + connection: 'Username-Password-Authentication'; } ``` @@ -66,14 +66,14 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.user_id, - email: profile.email, - displayName: profile.name, - name: { - first: profile.given_name, - last: profile.family_name, - }, - raw: profile, + id: profile.user_id, + email: profile.email, + displayName: profile.name, + name: { + first: profile.given_name, + last: profile.family_name, + }, + raw: profile, }; ``` @@ -93,10 +93,10 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.uuid, - username: profile.username, - displayName: profile.display_name, - raw: profile, + id: profile.uuid, + username: profile.username, + displayName: profile.display_name, + raw: profile, }; ``` @@ -106,7 +106,7 @@ credentials.profile = { - `scope`: Defaults to `['openid', 'email', 'profile']` - `config`: - - `uri`: Point to your Cognito user pool uri. Intentionally no default as Cognito is organization specific. + - `uri`: Point to your Cognito user pool uri. Intentionally no default as Cognito is organization specific. - `auth`: https://your-cognito-user-pool.amazoncognito.com/oauth2/authorize - `token`: https://your-cognito-user-pool.amazoncognito.com/oauth2/token @@ -114,13 +114,13 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.sub, - username: profile.preferred_username, - displayName: profile.name, - firstName: profile.given_name, - lastName: profile.family_name, - email: profile.email, - raw: profile, + id: profile.sub, + username: profile.preferred_username, + displayName: profile.name, + firstName: profile.given_name, + lastName: profile.family_name, + email: profile.email, + raw: profile, }; ``` @@ -137,11 +137,11 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.account.uuid, - email: profile.account.email, - status: profile.account.status, - dropletLimit: profile.account.droplet_limit, - raw: profile.account, + id: profile.account.uuid, + email: profile.account.email, + status: profile.account.status, + dropletLimit: profile.account.droplet_limit, + raw: profile.account, }; ``` @@ -158,22 +158,22 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.id, - discriminator: profile.discriminator, - username: profile.username, - email: profile.email, - mfa_enabled: profile.mfa_enabled, - verified: profile.verified, - avatar: { - id: profile.avatar, - url: - 'https://discord.com/api/users/' + - profile.id + - '/avatars/' + - profile.avatar + - '.jpg', - }, - raw: profile, + id: profile.id, + discriminator: profile.discriminator, + username: profile.username, + email: profile.email, + mfa_enabled: profile.mfa_enabled, + verified: profile.verified, + avatar: { + id: profile.avatar, + url: + 'https://discord.com/api/users/' + + profile.id + + '/avatars/' + + profile.avatar + + '.jpg', + }, + raw: profile, }; ``` @@ -198,7 +198,7 @@ The default profile response will look like this: - `scope`: Defaults to `['email']` - `config`: - - `fields`: List of profile fields to retrieve, as described in [Facebook's documentation](https://developers.facebook.com/docs/graph-api/reference/user). Defaults to `'id,name,email,first_name,last_name,middle_name,gender,link,locale,timezone,updated_time,verified'`. + - `fields`: List of profile fields to retrieve, as described in [Facebook's documentation](https://developers.facebook.com/docs/graph-api/reference/user). Defaults to `'id,name,email,first_name,last_name,middle_name,gender,link,locale,timezone,updated_time,verified'`. - `auth`: https://www.facebook.com/v3.1/dialog/oauth - `token`: https://graph.facebook.com/v3.1/oauth/access_token @@ -206,16 +206,16 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.id, - username: profile.username, - displayName: profile.name, - name: { - first: profile.first_name, - last: profile.last_name, - middle: profile.middle_name, - }, - email: profile.email, - raw: profile, + id: profile.id, + username: profile.username, + displayName: profile.name, + name: { + first: profile.first_name, + last: profile.last_name, + middle: profile.middle_name, + }, + email: profile.email, + raw: profile, }; ``` @@ -232,9 +232,9 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.user.encodedId, - displayName: profile.user.displayName, - name: profile.user.fullName, + id: profile.user.encodedId, + displayName: profile.user.displayName, + name: profile.user.fullName, }; ``` @@ -251,14 +251,14 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.id, - displayName: profile.firstName + ' ' + profile.lastName, - name: { - first: profile.firstName, - last: profile.lastName, - }, - email: profile.contact.email, - raw: profile, + id: profile.id, + displayName: profile.firstName + ' ' + profile.lastName, + name: { + first: profile.firstName, + last: profile.lastName, + }, + email: profile.contact.email, + raw: profile, }; ``` @@ -268,7 +268,7 @@ credentials.profile = { - `scope`: Defaults to `['user:email']` - `config`: - - `uri`: Point to your github enterprise uri. Defaults to `https://github.com`. + - `uri`: Point to your github enterprise uri. Defaults to `https://github.com`. - `auth`: /login/oauth/authorize - `token`: /login/oauth/access_token @@ -276,11 +276,11 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.id, - username: profile.login, - displayName: profile.name, - email: profile.email, - raw: profile, + id: profile.id, + username: profile.login, + displayName: profile.name, + email: profile.email, + raw: profile, }; ``` @@ -290,7 +290,7 @@ credentials.profile = { - `scope`: No default scope. - `config`: - - `uri`: Point to your gitlab uri. Defaults to `https://gitlab.com`. + - `uri`: Point to your gitlab uri. Defaults to `https://gitlab.com`. - `auth`: /oauth/authorize - `token`: /oauth/token @@ -313,14 +313,14 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.id, - displayName: profile.name, - name: { - given_name: profile.given_name, - family_name: profile.family_name, - }, - email: profile.email, - raw: profile, + id: profile.id, + displayName: profile.name, + name: { + given_name: profile.given_name, + family_name: profile.family_name, + }, + email: profile.email, + raw: profile, }; ``` @@ -339,11 +339,11 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.id, - displayName: profile.displayName, - name: profile.name, - emails: profile.emails, - raw: profile, + id: profile.id, + displayName: profile.displayName, + name: profile.name, + emails: profile.emails, + raw: profile, }; ``` @@ -353,7 +353,7 @@ credentials.profile = { - `scope`: Defaults to `['basic']` - `config`: - - `extendedProfile`: Boolean that determines if extended profile information will be fetched + - `extendedProfile`: Boolean that determines if extended profile information will be fetched - `auth`: https://api.instagram.com/oauth/authorize - `token`: https://api.instagram.com/oauth/access_token @@ -361,10 +361,10 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: params.user.id, - username: params.user.username, - displayName: params.user.full_name, - raw: params.user, + id: params.user.id, + username: params.user.username, + displayName: params.user.full_name, + raw: params.user, }; // if extendedProfile is true then raw will have access to all the information @@ -383,14 +383,14 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.id, - name: { - first: profile.firstName, - last: profile.lastName, - }, - email: profile.email, - headline: profile.headline, - raw: profile, + id: profile.id, + name: { + first: profile.firstName, + last: profile.lastName, + }, + email: profile.email, + headline: profile.headline, + raw: profile, }; ``` @@ -400,7 +400,7 @@ Here is an example of a custom strategy configuration: ```javascript providerParams: { - fields: ':(id,first-name,last-name,positions,picture-url,picture-urls::(original),email-address)'; + fields: ':(id,first-name,last-name,positions,picture-url,picture-urls::(original),email-address)'; } ``` @@ -417,10 +417,10 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.data.id, - username: profile.data.username, - displayName: profile.data.name, - raw: profile.data, + id: profile.data.id, + username: profile.data.username, + displayName: profile.data.name, + raw: profile.data, }; ``` @@ -452,15 +452,16 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.id, - username: profile.username, - displayName: profile.name, - name: { - first: profile.first_name, - last: profile.last_name, - }, - email: profile.emails && (profile.emails.preferred || profile.emails.account), - raw: profile, + id: profile.id, + username: profile.username, + displayName: profile.name, + name: { + first: profile.first_name, + last: profile.last_name, + }, + email: + profile.emails && (profile.emails.preferred || profile.emails.account), + raw: profile, }; ``` @@ -486,7 +487,7 @@ The default profile response will look like this: - `scope`: Defaults to `['whoami']` - `config`: - - `uri`: URI of phabricator instance + - `uri`: URI of phabricator instance - `auth`: /oauthserver/auth/ - `token`: /oauthserver/token/ @@ -494,11 +495,11 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.result.phid, - username: profile.result.userName, - displayName: profile.result.realName, - email: profile.result.primaryEmail, - raw: profile, + id: profile.result.phid, + username: profile.result.userName, + displayName: profile.result.realName, + email: profile.result.primaryEmail, + raw: profile, }; ``` @@ -508,7 +509,7 @@ credentials.profile = { - `scope`: Defaults to `['openid', 'email']` - `config`: - - `uri`: Point to your Pingfederate enterprise uri. Intentionally no default as Ping is organization specific. + - `uri`: Point to your Pingfederate enterprise uri. Intentionally no default as Ping is organization specific. - `auth`: https://www.example.com:9031/as/authorization.oauth2 - `token`: https://www.example.com:9031/as/token.oauth2 @@ -516,11 +517,11 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.sub, - username: profile.email, - displayName: profile.email, - email: profile.email, - raw: profile, + id: profile.sub, + username: profile.email, + displayName: profile.email, + email: profile.email, + raw: profile, }; ``` @@ -537,13 +538,13 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.data.id, - username: profile.data.username, - name: { - first: profile.data.first_name, - last: profile.data.last_name, - }, - raw: profile, + id: profile.data.id, + username: profile.data.username, + name: { + first: profile.data.first_name, + last: profile.data.last_name, + }, + raw: profile, }; ``` @@ -568,7 +569,7 @@ The default profile response will look like this: - `scope`: Defaults to `['identify']` - `config`: - - `extendedProfile`: Set to `false` if all you want is the `access_token`, without `user_id`, `user`, `raw`, etc... + - `extendedProfile`: Set to `false` if all you want is the `access_token`, without `user_id`, `user`, `raw`, etc... - `auth`: https://slack.com/oauth/authorize - `token`: https://slack.com/api/oauth.access @@ -576,7 +577,7 @@ To authenticate user in a specific team, use `providerParams`. For example: ```javascript providerParams: { - team: 'T0XXXXXX'; + team: 'T0XXXXXX'; } ``` @@ -584,10 +585,10 @@ The default profile response will look like this: ```javascript credentials.profile = { - scope: params.scope, - access_token: params.access_token, - user: params.user, - user_id: params.user_id, + scope: params.scope, + access_token: params.access_token, + user: params.user, + user_id: params.user_id, }; // credentials.profile.raw will contain all of the keys sent by Slack for the `auth.test` method @@ -607,11 +608,11 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.id, - username: profile.id, - displayName: profile.display_name, - email: profile.email, - raw: profile, + id: profile.id, + username: profile.id, + displayName: profile.display_name, + email: profile.email, + raw: profile, }; ``` @@ -628,17 +629,17 @@ The default profile response will look like this: ```javascript credentials.profile = { - username: profile.username, - private: profile.private, - joined_at: profile.joined_at, - name: profile.name, - vip: profile.vip, - ids: profile.ids, - location: profile.location, - about: profile.about, - gender: profile.gender, - age: profile.age, - images: profile.images, + username: profile.username, + private: profile.private, + joined_at: profile.joined_at, + name: profile.name, + vip: profile.vip, + ids: profile.ids, + location: profile.location, + about: profile.about, + gender: profile.gender, + age: profile.age, + images: profile.images, }; ``` @@ -648,9 +649,9 @@ credentials.profile = { - `scope`: not applicable - `config`: - - `extendedProfile`: Request for more profile information - - `getMethod`: [Twitter API](https://dev.twitter.com/rest/public) GET method to call when `extendedProfile` is enabled. Defaults to `'users/show'` - - `getParams`: Additional parameters to pass to the GET method. For example, the `include_email` parameter for the [`account/verify` route](https://dev.twitter.com/rest/reference/get/account/verify_credentials) + - `extendedProfile`: Request for more profile information + - `getMethod`: [Twitter API](https://dev.twitter.com/rest/public) GET method to call when `extendedProfile` is enabled. Defaults to `'users/show'` + - `getParams`: Additional parameters to pass to the GET method. For example, the `include_email` parameter for the [`account/verify` route](https://dev.twitter.com/rest/reference/get/account/verify_credentials) - `temporary`: 'https://api.twitter.com/oauth/request_token' - `auth`: https://api.twitter.com/oauth/authenticate - `token`: https://api.twitter.com/oauth/access_token @@ -659,8 +660,8 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: params.user_id, - username: params.screen_name, + id: params.user_id, + username: params.screen_name, }; // credentials.profile.raw will contain extendedProfile if enabled @@ -679,13 +680,13 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.uid, - displayName: profile.first_name + ' ' + profile.last_name, - name: { - first: profile.first_name, - last: profile.last_name, - }, - raw: profile, + id: profile.uid, + displayName: profile.first_name + ' ' + profile.last_name, + name: { + first: profile.first_name, + last: profile.last_name, + }, + raw: profile, }; ``` @@ -703,13 +704,13 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.profile.guid, - displayName: profile.profile.givenName + ' ' + profile.profile.familyName, - name: { - first: profile.profile.givenName, - last: profile.profile.familyName, - }, - raw: profile, + id: profile.profile.guid, + displayName: profile.profile.givenName + ' ' + profile.profile.familyName, + name: { + first: profile.profile.givenName, + last: profile.profile.familyName, + }, + raw: profile, }; ``` @@ -726,8 +727,8 @@ The default profile response will look like this: ```javascript credentials.profile = { - username: profile.response.user.name, - raw: profile.response.user, + username: profile.response.user.name, + raw: profile.response.user, }; ``` @@ -751,9 +752,9 @@ The default profile response will look like this: - `scope`: not applicable - `config`: - - `uri`: Point to your Salesforce org. Defaults to `https://login.salesforce.com` - - `extendedProfile`: Request for more profile information. Defaults to true - - `identityServiceProfile`: Determines if the profile information fetch uses the [Force.com Identity Service](https://developer.salesforce.com/page/Digging_Deeper_into_OAuth_2.0_on_Force.com#The_Force.com_Identity_Service). Defaults to false (UserInfo Endpoint) + - `uri`: Point to your Salesforce org. Defaults to `https://login.salesforce.com` + - `extendedProfile`: Request for more profile information. Defaults to true + - `identityServiceProfile`: Determines if the profile information fetch uses the [Force.com Identity Service](https://developer.salesforce.com/page/Digging_Deeper_into_OAuth_2.0_on_Force.com#The_Force.com_Identity_Service). Defaults to false (UserInfo Endpoint) - `auth`: /services/oauth2/authorize - `token`: /services/oauth2/token @@ -807,11 +808,11 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.id, - legalName: profile.business_name, - displayName: profile.display_name, - email: profile.email, - raw: profile, + id: profile.id, + legalName: profile.business_name, + displayName: profile.display_name, + email: profile.email, + raw: profile, }; ``` @@ -828,10 +829,10 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.Id, - displayName: profile.DisplayName, - email: profile.EmailAddress, - raw: profile, + id: profile.Id, + displayName: profile.DisplayName, + email: profile.EmailAddress, + raw: profile, }; ``` @@ -841,8 +842,8 @@ credentials.profile = { - `scope`: Defaults to `['openid', 'email', 'offline_access']` - `config`: - - `uri`: Point to your Okta enterprise uri. Intentionally no default as Okta is organization specific. - - `authorizationServerId`: If you are using a [custom authorization server](https://support.okta.com/help/s/article/Difference-Between-Okta-as-An-Authorization-Server-vs-Custom-Authorization-Server) you need to pass the alphanumeric ID here. + - `uri`: Point to your Okta enterprise uri. Intentionally no default as Okta is organization specific. + - `authorizationServerId`: If you are using a [custom authorization server](https://support.okta.com/help/s/article/Difference-Between-Okta-as-An-Authorization-Server-vs-Custom-Authorization-Server) you need to pass the alphanumeric ID here. - `auth`: https://your-organization.okta.com/oauth2/v1/authorize - `token`: https://your-organization.okta.com/oauth2/v1/token @@ -850,13 +851,13 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.sub, - username: profile.email, - displayName: profile.nickname, - firstName: profile.given_name, - lastName: profile.family_name, - email: profile.email, - raw: profile, + id: profile.sub, + username: profile.email, + displayName: profile.nickname, + firstName: profile.given_name, + lastName: profile.family_name, + email: profile.email, + raw: profile, }; ``` @@ -872,10 +873,10 @@ The default profile response will look like this: ```javascript credentials.profile = { - id: profile.ID, - username: profile.username, - displayName: profile.display_name, - raw: profile, + id: profile.ID, + username: profile.username, + displayName: profile.display_name, + raw: profile, }; ``` diff --git a/generated/markdown/boom/10/api.md b/generated/markdown/boom/10/api.md index 4e28c58d..e4af0c1e 100644 --- a/generated/markdown/boom/10/api.md +++ b/generated/markdown/boom/10/api.md @@ -9,14 +9,14 @@ error response object which includes the following properties: - `typeof` - the constructor used to create the error (e.g. `Boom.badRequest`). - `output` - the formatted response. Can be directly manipulated after object construction to return a custom error response. Allowed root keys: - - `statusCode` - the HTTP status code (typically 4xx or 5xx). - - `headers` - an object containing any HTTP headers where each key is a header name and value is the header content. - - `payload` - the formatted object used as the response payload (stringified). Can be directly manipulated but any - changes will be lost - if `reformat()` is called. Any content allowed and by default includes the following content: - - `statusCode` - the HTTP status code, derived from `error.output.statusCode`. - - `error` - the HTTP status message (e.g. 'Bad Request', 'Internal Server Error') derived from `statusCode`. - - `message` - the error message derived from `error.message`. + - `statusCode` - the HTTP status code (typically 4xx or 5xx). + - `headers` - an object containing any HTTP headers where each key is a header name and value is the header content. + - `payload` - the formatted object used as the response payload (stringified). Can be directly manipulated but any + changes will be lost + if `reformat()` is called. Any content allowed and by default includes the following content: + - `statusCode` - the HTTP status code, derived from `error.output.statusCode`. + - `error` - the HTTP status message (e.g. 'Bad Request', 'Internal Server Error') derived from `statusCode`. + - `message` - the error message derived from `error.message`. - inherited `Error` properties. The `Boom` object also supports the following method: @@ -43,12 +43,12 @@ Creates a new `Boom` object using the provided `message` and then calling - `message` - the error message. If `message` is an error, it is the same as calling [`boomify()`](#boomifyerr-options) directly. - `options` - and optional object where: - - `statusCode` - the HTTP status code. Defaults to `500` if no status code is already set. - - `data` - additional error information (assigned to `error.data`). - - `decorate` - an option with extra properties to set on the error object. - - `ctor` - constructor reference used to crop the exception call stack output. - - if `message` is an error object, also supports the other [`boomify()`](#boomifyerr-options) - options. + - `statusCode` - the HTTP status code. Defaults to `500` if no status code is already set. + - `data` - additional error information (assigned to `error.data`). + - `decorate` - an option with extra properties to set on the error object. + - `ctor` - constructor reference used to crop the exception call stack output. + - if `message` is an error object, also supports the other [`boomify()`](#boomifyerr-options) + options. ##### `boomify(err, [options])` @@ -56,13 +56,13 @@ Decorates an error with the `Boom` properties where: - `err` - the `Error` object to decorate. - `options` - optional object with the following optional settings: - - `statusCode` - the HTTP status code. Defaults to `500` if no status code is already set and `err` is not a `Boom` object. - - `message` - error message string. If the error already has a message, the provided `message` is added as a prefix. - Defaults to no message. - - `decorate` - an option with extra properties to set on the error object. - - `override` - if `false`, the `err` provided is a `Boom` object, and a `statusCode` or `message` are provided, - the values are ignored. Defaults to `true` (apply the provided `statusCode` and `message` options to the error - regardless of its type, `Error` or `Boom` object). + - `statusCode` - the HTTP status code. Defaults to `500` if no status code is already set and `err` is not a `Boom` object. + - `message` - error message string. If the error already has a message, the provided `message` is added as a prefix. + Defaults to no message. + - `decorate` - an option with extra properties to set on the error object. + - `override` - if `false`, the `err` provided is a `Boom` object, and a `statusCode` or `message` are provided, + the values are ignored. Defaults to `true` (apply the provided `statusCode` and `message` options to the error + regardless of its type, `Error` or `Boom` object). ```js var error = new Error('Unexpected input'); @@ -98,9 +98,9 @@ Generates the following response payload: ```json { - "statusCode": 400, - "error": "Bad Request", - "message": "invalid query" + "statusCode": 400, + "error": "Bad Request", + "message": "invalid query" } ``` @@ -110,8 +110,8 @@ Returns a 401 Unauthorized error where: - `message` - optional message. - `scheme` can be one of the following: - - an authentication scheme name - - an array of string values. These values will be separated by ', ' and set to the 'WWW-Authenticate' header. + - an authentication scheme name + - an array of string values. These values will be separated by ', ' and set to the 'WWW-Authenticate' header. - `attributes` - an object of values to use while setting the 'WWW-Authenticate' header. This value is only used when `scheme` is a string, otherwise it is ignored. Every key/value pair will be included in the 'WWW-Authenticate' in the format of 'key="value"' as well as in the response payload under the `attributes` key. Alternatively value can be a string which is use to set the value of the scheme, for example setting the token value for negotiate header. If string is used message parameter must be null. @@ -176,9 +176,9 @@ Generates the following response: ```js Boom.unauthorized('invalid password', 'sample', { - ttl: 0, - cache: null, - foo: 'bar', + ttl: 0, + cache: null, + foo: 'bar', }); ``` @@ -216,9 +216,9 @@ Generates the following response payload: ```json { - "statusCode": 402, - "error": "Payment Required", - "message": "bandwidth used" + "statusCode": 402, + "error": "Payment Required", + "message": "bandwidth used" } ``` @@ -237,9 +237,9 @@ Generates the following response payload: ```json { - "statusCode": 403, - "error": "Forbidden", - "message": "try again some time" + "statusCode": 403, + "error": "Forbidden", + "message": "try again some time" } ``` @@ -258,9 +258,9 @@ Generates the following response payload: ```json { - "statusCode": 404, - "error": "Not Found", - "message": "missing" + "statusCode": 404, + "error": "Not Found", + "message": "missing" } ``` @@ -280,9 +280,9 @@ Generates the following response payload: ```json { - "statusCode": 405, - "error": "Method Not Allowed", - "message": "that method is not allowed" + "statusCode": 405, + "error": "Method Not Allowed", + "message": "that method is not allowed" } ``` @@ -301,9 +301,9 @@ Generates the following response payload: ```json { - "statusCode": 406, - "error": "Not Acceptable", - "message": "unacceptable" + "statusCode": 406, + "error": "Not Acceptable", + "message": "unacceptable" } ``` @@ -322,9 +322,9 @@ Generates the following response payload: ```json { - "statusCode": 407, - "error": "Proxy Authentication Required", - "message": "auth missing" + "statusCode": 407, + "error": "Proxy Authentication Required", + "message": "auth missing" } ``` @@ -343,9 +343,9 @@ Generates the following response payload: ```json { - "statusCode": 408, - "error": "Request Time-out", - "message": "timed out" + "statusCode": 408, + "error": "Request Time-out", + "message": "timed out" } ``` @@ -364,9 +364,9 @@ Generates the following response payload: ```json { - "statusCode": 409, - "error": "Conflict", - "message": "there was a conflict" + "statusCode": 409, + "error": "Conflict", + "message": "there was a conflict" } ``` @@ -385,9 +385,9 @@ Generates the following response payload: ```json { - "statusCode": 410, - "error": "Gone", - "message": "it is gone" + "statusCode": 410, + "error": "Gone", + "message": "it is gone" } ``` @@ -406,9 +406,9 @@ Generates the following response payload: ```json { - "statusCode": 411, - "error": "Length Required", - "message": "length needed" + "statusCode": 411, + "error": "Length Required", + "message": "length needed" } ``` @@ -427,8 +427,8 @@ Generates the following response payload: ```json { - "statusCode": 412, - "error": "Precondition Failed" + "statusCode": 412, + "error": "Precondition Failed" } ``` @@ -447,9 +447,9 @@ Generates the following response payload: ```json { - "statusCode": 413, - "error": "Request Entity Too Large", - "message": "too big" + "statusCode": 413, + "error": "Request Entity Too Large", + "message": "too big" } ``` @@ -468,9 +468,9 @@ Generates the following response payload: ```json { - "statusCode": 414, - "error": "Request-URI Too Large", - "message": "uri is too long" + "statusCode": 414, + "error": "Request-URI Too Large", + "message": "uri is too long" } ``` @@ -489,9 +489,9 @@ Generates the following response payload: ```json { - "statusCode": 415, - "error": "Unsupported Media Type", - "message": "that media is not supported" + "statusCode": 415, + "error": "Unsupported Media Type", + "message": "that media is not supported" } ``` @@ -510,8 +510,8 @@ Generates the following response payload: ```json { - "statusCode": 416, - "error": "Requested Range Not Satisfiable" + "statusCode": 416, + "error": "Requested Range Not Satisfiable" } ``` @@ -530,9 +530,9 @@ Generates the following response payload: ```json { - "statusCode": 417, - "error": "Expectation Failed", - "message": "expected this to work" + "statusCode": 417, + "error": "Expectation Failed", + "message": "expected this to work" } ``` @@ -551,9 +551,9 @@ Generates the following response payload: ```json { - "statusCode": 418, - "error": "I'm a Teapot", - "message": "Sorry, no coffee..." + "statusCode": 418, + "error": "I'm a Teapot", + "message": "Sorry, no coffee..." } ``` @@ -572,9 +572,9 @@ Generates the following response payload: ```json { - "statusCode": 422, - "error": "Unprocessable Entity", - "message": "your data is bad and you should feel bad" + "statusCode": 422, + "error": "Unprocessable Entity", + "message": "your data is bad and you should feel bad" } ``` @@ -593,9 +593,9 @@ Generates the following response payload: ```json { - "statusCode": 423, - "error": "Locked", - "message": "this resource has been locked" + "statusCode": 423, + "error": "Locked", + "message": "this resource has been locked" } ``` @@ -614,9 +614,9 @@ Generates the following response payload: ```json { - "statusCode": 424, - "error": "Failed Dependency", - "message": "an external resource failed" + "statusCode": 424, + "error": "Failed Dependency", + "message": "an external resource failed" } ``` @@ -635,9 +635,9 @@ Generates the following response payload: ```json { - "statusCode": 425, - "error": "Too Early", - "message": "the server is unwilling to risk processing the request" + "statusCode": 425, + "error": "Too Early", + "message": "the server is unwilling to risk processing the request" } ``` @@ -656,9 +656,9 @@ Generates the following response payload: ```json { - "statusCode": 428, - "error": "Precondition Required", - "message": "you must supply an If-Match header" + "statusCode": 428, + "error": "Precondition Required", + "message": "you must supply an If-Match header" } ``` @@ -677,9 +677,9 @@ Generates the following response payload: ```json { - "statusCode": 429, - "error": "Too Many Requests", - "message": "you have exceeded your request limit" + "statusCode": 429, + "error": "Too Many Requests", + "message": "you have exceeded your request limit" } ``` @@ -698,9 +698,9 @@ Generates the following response payload: ```json { - "statusCode": 451, - "error": "Unavailable For Legal Reasons", - "message": "you are not permitted to view this resource for legal reasons" + "statusCode": 451, + "error": "Unavailable For Legal Reasons", + "message": "you are not permitted to view this resource for legal reasons" } ``` @@ -723,9 +723,9 @@ Generates the following response payload: ```json { - "statusCode": 500, - "error": "Internal Server Error", - "message": "An internal server error occurred" + "statusCode": 500, + "error": "Internal Server Error", + "message": "An internal server error occurred" } ``` @@ -744,9 +744,9 @@ Generates the following response payload: ```json { - "statusCode": 501, - "error": "Not Implemented", - "message": "method not implemented" + "statusCode": 501, + "error": "Not Implemented", + "message": "method not implemented" } ``` @@ -765,9 +765,9 @@ Generates the following response payload: ```json { - "statusCode": 502, - "error": "Bad Gateway", - "message": "that is a bad gateway" + "statusCode": 502, + "error": "Bad Gateway", + "message": "that is a bad gateway" } ``` @@ -786,9 +786,9 @@ Generates the following response payload: ```json { - "statusCode": 503, - "error": "Service Unavailable", - "message": "unavailable" + "statusCode": 503, + "error": "Service Unavailable", + "message": "unavailable" } ``` @@ -807,8 +807,8 @@ Generates the following response payload: ```json { - "statusCode": 504, - "error": "Gateway Time-out" + "statusCode": 504, + "error": "Gateway Time-out" } ``` diff --git a/generated/markdown/bossy/5/api.md b/generated/markdown/bossy/5/api.md index d075e430..6e38871d 100644 --- a/generated/markdown/bossy/5/api.md +++ b/generated/markdown/bossy/5/api.md @@ -4,27 +4,27 @@ const Bossy = require('@hapi/bossy'); const definition = { - h: { - description: 'Show help', - alias: 'help', - type: 'boolean', - }, - n: { - description: 'Show your name', - alias: 'name', - }, + h: { + description: 'Show help', + alias: 'help', + type: 'boolean', + }, + n: { + description: 'Show your name', + alias: 'name', + }, }; const args = Bossy.parse(definition); if (args instanceof Error) { - console.error(args.message); - return; + console.error(args.message); + return; } if (args.h || !args.n) { - console.log(Bossy.usage(definition, 'hello -n ')); - return; + console.log(Bossy.usage(definition, 'hello -n ')); + return; } console.log('Hello ' + args.n); @@ -59,12 +59,12 @@ Un-flattens dot-separated arguments based at `name` from `Bossy.parse()`'s outpu const Bossy = require('@hapi/bossy'); const definition = { - 'pet.name': { - type: 'string', - }, - 'pet.age': { - type: 'number', - }, + 'pet.name': { + type: 'string', + }, + 'pet.age': { + type: 'number', + }, }; // Example CLI args: --pet.name Maddie --pet.age 5 @@ -72,8 +72,8 @@ const definition = { const parsed = Bossy.parse(definition); // { 'pet.name': 'Maddie', 'pet.age': 5 } if (parsed instanceof Error) { - console.error(parsed.message); - return; + console.error(parsed.message); + return; } const pet = Bossy.object('pet', parsed); // { name: 'Maddie', age: 5 } @@ -86,42 +86,42 @@ line argument. Each argument key supports the following properties: - `alias`: A string or array of strings that can also be used as the argument name. For example: - ```js - h: { - alias: 'help'; - } - ``` + ```js + h: { + alias: 'help'; + } + ``` - `type`: Available types are: `boolean`, `range`, `number`, `string`, `json`, and `help`. Defaults to `string`. - The `boolean` type may be negated by passing its argument prefixed with `no-`. - For example, if the command line argument is named `color` then `--color` would - ensure the boolean is `true` and `--no-color` would ensure it is `false`. - - `help` is a special type that allows the switch to be executed even though - other paramters are required. Use case is to display a help message and - quit. This will bypass all other errors, so be sure to capture it. It - behaves like a `boolean`. - - The `json` type allows building an object using command line arguments that utilize - dot-separated (`.`) paths and JSON values. For example, an object argument named - `pet` might be built from `--pet '{ "type": "dog" }' --pet.name Maddie`, resulting in - the parsing output `{ pet: { type: 'dog', name: 'Maddie' } }`. The contents of the - flags are deeply merged together in the order they were specified. Additionally, - JSON primitives (i.e. `null`, booleans, and numbers) and non-JSON are treated as strings - by default, though this behavior may be controlled with the `parsePrimitives` option - documented below. The following example demonstrates the default behavior: - - ```sh - # CLI input - create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true \ - --pet '{ "name": "Maddie", "type": "dog" }' --pet.legs 4 - ``` - - ```js - // Parsing output - { pet: { name: 'Maddie', type: 'dog', legs: '4', mammal: 'true' } } - ``` + The `boolean` type may be negated by passing its argument prefixed with `no-`. + For example, if the command line argument is named `color` then `--color` would + ensure the boolean is `true` and `--no-color` would ensure it is `false`. + + `help` is a special type that allows the switch to be executed even though + other paramters are required. Use case is to display a help message and + quit. This will bypass all other errors, so be sure to capture it. It + behaves like a `boolean`. + + The `json` type allows building an object using command line arguments that utilize + dot-separated (`.`) paths and JSON values. For example, an object argument named + `pet` might be built from `--pet '{ "type": "dog" }' --pet.name Maddie`, resulting in + the parsing output `{ pet: { type: 'dog', name: 'Maddie' } }`. The contents of the + flags are deeply merged together in the order they were specified. Additionally, + JSON primitives (i.e. `null`, booleans, and numbers) and non-JSON are treated as strings + by default, though this behavior may be controlled with the `parsePrimitives` option + documented below. The following example demonstrates the default behavior: + + ```sh + # CLI input + create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true \ + --pet '{ "name": "Maddie", "type": "dog" }' --pet.legs 4 + ``` + + ```js + // Parsing output + { pet: { name: 'Maddie', type: 'dog', legs: '4', mammal: 'true' } } + ``` - `multiple` : Boolean to indicate if the same argument can be provided multiple times. If true, the parsed value will always be an array of `type`'s. Defaults to `false`. Does not apply to `json` type arguments. @@ -135,58 +135,58 @@ line argument. Each argument key supports the following properties: - `valid`: A value or array of values that the argument is allowed to equal. Does not apply to `json` type arguments. - `parsePrimitives`: A value of `false`, `true`, or `'strict'` used to control the treatment of input to `json` type arguments. Defaults to `false`. Each of the settings are described below: - - `false` - JSON primitives (i.e. `null`, booleans, and numbers) are treated as strings, non-JSON input is interpreted as a string, and the input may be a JSON array or object. This is the default behavior. + - `false` - JSON primitives (i.e. `null`, booleans, and numbers) are treated as strings, non-JSON input is interpreted as a string, and the input may be a JSON array or object. This is the default behavior. - ```sh - # CLI input - create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true \ - --pet '{ "name": "Maddie", "type": "dog" }' --pet.legs 4 - ``` + ```sh + # CLI input + create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true \ + --pet '{ "name": "Maddie", "type": "dog" }' --pet.legs 4 + ``` - ```js - // Parsing output - { pet: { name: 'Maddie', type: 'dog', legs: '4', mammal: 'true' } } - ``` + ```js + // Parsing output + { pet: { name: 'Maddie', type: 'dog', legs: '4', mammal: 'true' } } + ``` - - `true` - JSON primitives are parsed, non-JSON input is interpreted as a string, and the input may be a JSON array or object. + - `true` - JSON primitives are parsed, non-JSON input is interpreted as a string, and the input may be a JSON array or object. - For example, when `parsePrimitives` is `false`, `--pet.name null` will result in the output `{ pet: { name: 'null' } }`. However, when `parsePrimitives` is `true`, the same input would result in the output `{ pet: { name: null } }`. The same applies for other JSON primitives too, i.e. booleans and numbers. When this option is `true`, users may represent string values as JSON in order to avoid ambiguity, e.g. `--pet.name '"null"'`. It's recommended that applications using this option document the behavior for their users. + For example, when `parsePrimitives` is `false`, `--pet.name null` will result in the output `{ pet: { name: 'null' } }`. However, when `parsePrimitives` is `true`, the same input would result in the output `{ pet: { name: null } }`. The same applies for other JSON primitives too, i.e. booleans and numbers. When this option is `true`, users may represent string values as JSON in order to avoid ambiguity, e.g. `--pet.name '"null"'`. It's recommended that applications using this option document the behavior for their users. - ```sh - # CLI input - create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true \ - --pet '{ "name": "Maddie", "type": "dog" }' --pet.legs 4 - ``` + ```sh + # CLI input + create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true \ + --pet '{ "name": "Maddie", "type": "dog" }' --pet.legs 4 + ``` - ```js - // Parsing output - { pet: { name: 'Maddie', type: 'dog', legs: 4, mammal: true } } - ``` + ```js + // Parsing output + { pet: { name: 'Maddie', type: 'dog', legs: 4, mammal: true } } + ``` - - `'strict'` - JSON primitives are parsed, non-JSON input is not allowed, and the input may not be a JSON array or object. In other words, the user may only set primitive values, and they are required to be valid JSON. + - `'strict'` - JSON primitives are parsed, non-JSON input is not allowed, and the input may not be a JSON array or object. In other words, the user may only set primitive values, and they are required to be valid JSON. - When this option is used, users must represent string values as JSON, e.g. `--pet.name '"Maddie"'`. It's recommended that applications using this option document the behavior for their users. + When this option is used, users must represent string values as JSON, e.g. `--pet.name '"Maddie"'`. It's recommended that applications using this option document the behavior for their users. - ```sh - # CLI input - create-pet --pet.type '"kangaroo"' --pet.legs 2 --pet.mammal true - ``` + ```sh + # CLI input + create-pet --pet.type '"kangaroo"' --pet.legs 2 --pet.mammal true + ``` - ```js - // Parsing output - { pet: { type: 'kangaroo', legs: 2, mammal: true } } - ``` + ```js + // Parsing output + { pet: { type: 'kangaroo', legs: 2, mammal: true } } + ``` - The following input would result in an error because the input to `--pet.type` is invalid JSON: + The following input would result in an error because the input to `--pet.type` is invalid JSON: - ```sh - # CLI input - create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true - ``` + ```sh + # CLI input + create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true + ``` - The following input would result in an error because the input to `--pet` does not represent a JSON primitive: + The following input would result in an error because the input to `--pet` does not represent a JSON primitive: - ```sh - # CLI input - create-pet --pet '{ "name": "Maddie", "type": "dog" }' --pet.type '"kangaroo"' - ``` + ```sh + # CLI input + create-pet --pet '{ "name": "Maddie", "type": "dog" }' --pet.type '"kangaroo"' + ``` diff --git a/generated/markdown/bossy/6/api.md b/generated/markdown/bossy/6/api.md index d075e430..6e38871d 100644 --- a/generated/markdown/bossy/6/api.md +++ b/generated/markdown/bossy/6/api.md @@ -4,27 +4,27 @@ const Bossy = require('@hapi/bossy'); const definition = { - h: { - description: 'Show help', - alias: 'help', - type: 'boolean', - }, - n: { - description: 'Show your name', - alias: 'name', - }, + h: { + description: 'Show help', + alias: 'help', + type: 'boolean', + }, + n: { + description: 'Show your name', + alias: 'name', + }, }; const args = Bossy.parse(definition); if (args instanceof Error) { - console.error(args.message); - return; + console.error(args.message); + return; } if (args.h || !args.n) { - console.log(Bossy.usage(definition, 'hello -n ')); - return; + console.log(Bossy.usage(definition, 'hello -n ')); + return; } console.log('Hello ' + args.n); @@ -59,12 +59,12 @@ Un-flattens dot-separated arguments based at `name` from `Bossy.parse()`'s outpu const Bossy = require('@hapi/bossy'); const definition = { - 'pet.name': { - type: 'string', - }, - 'pet.age': { - type: 'number', - }, + 'pet.name': { + type: 'string', + }, + 'pet.age': { + type: 'number', + }, }; // Example CLI args: --pet.name Maddie --pet.age 5 @@ -72,8 +72,8 @@ const definition = { const parsed = Bossy.parse(definition); // { 'pet.name': 'Maddie', 'pet.age': 5 } if (parsed instanceof Error) { - console.error(parsed.message); - return; + console.error(parsed.message); + return; } const pet = Bossy.object('pet', parsed); // { name: 'Maddie', age: 5 } @@ -86,42 +86,42 @@ line argument. Each argument key supports the following properties: - `alias`: A string or array of strings that can also be used as the argument name. For example: - ```js - h: { - alias: 'help'; - } - ``` + ```js + h: { + alias: 'help'; + } + ``` - `type`: Available types are: `boolean`, `range`, `number`, `string`, `json`, and `help`. Defaults to `string`. - The `boolean` type may be negated by passing its argument prefixed with `no-`. - For example, if the command line argument is named `color` then `--color` would - ensure the boolean is `true` and `--no-color` would ensure it is `false`. - - `help` is a special type that allows the switch to be executed even though - other paramters are required. Use case is to display a help message and - quit. This will bypass all other errors, so be sure to capture it. It - behaves like a `boolean`. - - The `json` type allows building an object using command line arguments that utilize - dot-separated (`.`) paths and JSON values. For example, an object argument named - `pet` might be built from `--pet '{ "type": "dog" }' --pet.name Maddie`, resulting in - the parsing output `{ pet: { type: 'dog', name: 'Maddie' } }`. The contents of the - flags are deeply merged together in the order they were specified. Additionally, - JSON primitives (i.e. `null`, booleans, and numbers) and non-JSON are treated as strings - by default, though this behavior may be controlled with the `parsePrimitives` option - documented below. The following example demonstrates the default behavior: - - ```sh - # CLI input - create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true \ - --pet '{ "name": "Maddie", "type": "dog" }' --pet.legs 4 - ``` - - ```js - // Parsing output - { pet: { name: 'Maddie', type: 'dog', legs: '4', mammal: 'true' } } - ``` + The `boolean` type may be negated by passing its argument prefixed with `no-`. + For example, if the command line argument is named `color` then `--color` would + ensure the boolean is `true` and `--no-color` would ensure it is `false`. + + `help` is a special type that allows the switch to be executed even though + other paramters are required. Use case is to display a help message and + quit. This will bypass all other errors, so be sure to capture it. It + behaves like a `boolean`. + + The `json` type allows building an object using command line arguments that utilize + dot-separated (`.`) paths and JSON values. For example, an object argument named + `pet` might be built from `--pet '{ "type": "dog" }' --pet.name Maddie`, resulting in + the parsing output `{ pet: { type: 'dog', name: 'Maddie' } }`. The contents of the + flags are deeply merged together in the order they were specified. Additionally, + JSON primitives (i.e. `null`, booleans, and numbers) and non-JSON are treated as strings + by default, though this behavior may be controlled with the `parsePrimitives` option + documented below. The following example demonstrates the default behavior: + + ```sh + # CLI input + create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true \ + --pet '{ "name": "Maddie", "type": "dog" }' --pet.legs 4 + ``` + + ```js + // Parsing output + { pet: { name: 'Maddie', type: 'dog', legs: '4', mammal: 'true' } } + ``` - `multiple` : Boolean to indicate if the same argument can be provided multiple times. If true, the parsed value will always be an array of `type`'s. Defaults to `false`. Does not apply to `json` type arguments. @@ -135,58 +135,58 @@ line argument. Each argument key supports the following properties: - `valid`: A value or array of values that the argument is allowed to equal. Does not apply to `json` type arguments. - `parsePrimitives`: A value of `false`, `true`, or `'strict'` used to control the treatment of input to `json` type arguments. Defaults to `false`. Each of the settings are described below: - - `false` - JSON primitives (i.e. `null`, booleans, and numbers) are treated as strings, non-JSON input is interpreted as a string, and the input may be a JSON array or object. This is the default behavior. + - `false` - JSON primitives (i.e. `null`, booleans, and numbers) are treated as strings, non-JSON input is interpreted as a string, and the input may be a JSON array or object. This is the default behavior. - ```sh - # CLI input - create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true \ - --pet '{ "name": "Maddie", "type": "dog" }' --pet.legs 4 - ``` + ```sh + # CLI input + create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true \ + --pet '{ "name": "Maddie", "type": "dog" }' --pet.legs 4 + ``` - ```js - // Parsing output - { pet: { name: 'Maddie', type: 'dog', legs: '4', mammal: 'true' } } - ``` + ```js + // Parsing output + { pet: { name: 'Maddie', type: 'dog', legs: '4', mammal: 'true' } } + ``` - - `true` - JSON primitives are parsed, non-JSON input is interpreted as a string, and the input may be a JSON array or object. + - `true` - JSON primitives are parsed, non-JSON input is interpreted as a string, and the input may be a JSON array or object. - For example, when `parsePrimitives` is `false`, `--pet.name null` will result in the output `{ pet: { name: 'null' } }`. However, when `parsePrimitives` is `true`, the same input would result in the output `{ pet: { name: null } }`. The same applies for other JSON primitives too, i.e. booleans and numbers. When this option is `true`, users may represent string values as JSON in order to avoid ambiguity, e.g. `--pet.name '"null"'`. It's recommended that applications using this option document the behavior for their users. + For example, when `parsePrimitives` is `false`, `--pet.name null` will result in the output `{ pet: { name: 'null' } }`. However, when `parsePrimitives` is `true`, the same input would result in the output `{ pet: { name: null } }`. The same applies for other JSON primitives too, i.e. booleans and numbers. When this option is `true`, users may represent string values as JSON in order to avoid ambiguity, e.g. `--pet.name '"null"'`. It's recommended that applications using this option document the behavior for their users. - ```sh - # CLI input - create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true \ - --pet '{ "name": "Maddie", "type": "dog" }' --pet.legs 4 - ``` + ```sh + # CLI input + create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true \ + --pet '{ "name": "Maddie", "type": "dog" }' --pet.legs 4 + ``` - ```js - // Parsing output - { pet: { name: 'Maddie', type: 'dog', legs: 4, mammal: true } } - ``` + ```js + // Parsing output + { pet: { name: 'Maddie', type: 'dog', legs: 4, mammal: true } } + ``` - - `'strict'` - JSON primitives are parsed, non-JSON input is not allowed, and the input may not be a JSON array or object. In other words, the user may only set primitive values, and they are required to be valid JSON. + - `'strict'` - JSON primitives are parsed, non-JSON input is not allowed, and the input may not be a JSON array or object. In other words, the user may only set primitive values, and they are required to be valid JSON. - When this option is used, users must represent string values as JSON, e.g. `--pet.name '"Maddie"'`. It's recommended that applications using this option document the behavior for their users. + When this option is used, users must represent string values as JSON, e.g. `--pet.name '"Maddie"'`. It's recommended that applications using this option document the behavior for their users. - ```sh - # CLI input - create-pet --pet.type '"kangaroo"' --pet.legs 2 --pet.mammal true - ``` + ```sh + # CLI input + create-pet --pet.type '"kangaroo"' --pet.legs 2 --pet.mammal true + ``` - ```js - // Parsing output - { pet: { type: 'kangaroo', legs: 2, mammal: true } } - ``` + ```js + // Parsing output + { pet: { type: 'kangaroo', legs: 2, mammal: true } } + ``` - The following input would result in an error because the input to `--pet.type` is invalid JSON: + The following input would result in an error because the input to `--pet.type` is invalid JSON: - ```sh - # CLI input - create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true - ``` + ```sh + # CLI input + create-pet --pet.type kangaroo --pet.legs 2 --pet.mammal true + ``` - The following input would result in an error because the input to `--pet` does not represent a JSON primitive: + The following input would result in an error because the input to `--pet` does not represent a JSON primitive: - ```sh - # CLI input - create-pet --pet '{ "name": "Maddie", "type": "dog" }' --pet.type '"kangaroo"' - ``` + ```sh + # CLI input + create-pet --pet '{ "name": "Maddie", "type": "dog" }' --pet.type '"kangaroo"' + ``` diff --git a/generated/markdown/bounce/3/api.md b/generated/markdown/bounce/3/api.md index f0ca417f..b095ae67 100644 --- a/generated/markdown/bounce/3/api.md +++ b/generated/markdown/bounce/3/api.md @@ -17,28 +17,28 @@ For example: ```js async function email(user) { - if (!user.address) { - throw new Error('User has no email address'); - } + if (!user.address) { + throw new Error('User has no email address'); + } - const message = 'Welcome!'; - if (user.name) { - message = `Welcome ${user.name}!`; - } + const message = 'Welcome!'; + if (user.name) { + message = `Welcome ${user.name}!`; + } - await mailer.send(user.address, message); + await mailer.send(user.address, message); } async function register(address, name) { - const user = { address, name }; - const id = await db.user.insert(user); - user.id = id; + const user = { address, name }; + const id = await db.user.insert(user); + user.id = id; - try { - await email(user); - } catch (err) {} // Ignore errors + try { + await email(user); + } catch (err) {} // Ignore errors - return user; + return user; } ``` @@ -53,17 +53,17 @@ This can be solved by adding a `rethrow()` statement: const Bounce = require('@hapi/bounce'); async function register(address, name) { - const user = { address, name }; - const id = await db.user.insert(user); - user.id = id; + const user = { address, name }; + const id = await db.user.insert(user); + user.id = id; - try { - await email(user); - } catch (err) { - Bounce.rethrow(err, 'system'); // Rethrows system errors and ignores application errors - } + try { + await email(user); + } catch (err) { + Bounce.rethrow(err, 'system'); // Rethrows system errors and ignores application errors + } - return user; + return user; } ``` @@ -75,17 +75,17 @@ Throws the error passed if it matches any of the specified rules where: - `err` - the error. - `type` - a single item or an array of items of: - - An error constructor (e.g. `SyntaxError`). - - `'system'` - matches any languange native error or node assertions. - - `'boom'` - matches [**boom**](https://github.com/hapijs/boom) errors. - - an object where each property is compared with the error and must match the error property - value. All the properties in the object must match the error but do not need to include all - the error properties. + - An error constructor (e.g. `SyntaxError`). + - `'system'` - matches any languange native error or node assertions. + - `'boom'` - matches [**boom**](https://github.com/hapijs/boom) errors. + - an object where each property is compared with the error and must match the error property + value. All the properties in the object must match the error but do not need to include all + the error properties. - `options` - optional object where: - - `decorate` - an object which is assigned to the `err`, copying the properties onto the error. - - `override` - an error used to override `err` when `err` matches. If used with `decorate`, - the `override` object is modified. - - `return` - if `true`, the error is returned instead of thrown. Defaults to `false`. + - `decorate` - an object which is assigned to the `err`, copying the properties onto the error. + - `override` - an error used to override `err` when `err` matches. If used with `decorate`, + the `override` object is modified. + - `return` - if `true`, the error is returned instead of thrown. Defaults to `false`. ### `ignore(err, types, [options])` diff --git a/generated/markdown/bourne/3/api.md b/generated/markdown/bourne/3/api.md index 838d72a8..a1e8ce68 100644 --- a/generated/markdown/bourne/3/api.md +++ b/generated/markdown/bourne/3/api.md @@ -30,10 +30,10 @@ Parses a given JSON-formatted text into an object where: - `text` - the JSON text string. - `reviver` - the `JSON.parse()` optional `reviver` argument. - `options` - optional configuration object where: - - `protoAction` - optional string with one of: - - `'error'` - throw a `SyntaxError` when a `__proto__` key is found. This is the default value. - - `'remove'` - deletes any `__proto__` keys from the result object. - - `'ignore'` - skips all validation (same as calling `JSON.parse()` directly). + - `protoAction` - optional string with one of: + - `'error'` - throw a `SyntaxError` when a `__proto__` key is found. This is the default value. + - `'remove'` - deletes any `__proto__` keys from the result object. + - `'ignore'` - skips all validation (same as calling `JSON.parse()` directly). ### `Bourne.scan(obj, [options])` @@ -41,9 +41,9 @@ Scans a given object for prototype properties where: - `obj` - the object being scanned. - `options` - optional configuration object where: - - `protoAction` - optional string with one of: - - `'error'` - throw a `SyntaxError` when a `__proto__` key is found. This is the default value. - - `'remove'` - deletes any `__proto__` keys from the input `obj`. + - `protoAction` - optional string with one of: + - `'error'` - throw a `SyntaxError` when a `__proto__` key is found. This is the default value. + - `'remove'` - deletes any `__proto__` keys from the input `obj`. ### `Bourne.safeParse(text, [reviver])` diff --git a/generated/markdown/call/9/api.md b/generated/markdown/call/9/api.md index 04d89099..52f90ade 100644 --- a/generated/markdown/call/9/api.md +++ b/generated/markdown/call/9/api.md @@ -18,7 +18,7 @@ router.add({ method: 'post', path: '/users' }, 'route specific data'); // Add another route with dynamic path router.add({ method: 'put', path: '/users/{userId}' }, () => { - /* ...handler... */ + /* ...handler... */ }); // Match route @@ -79,8 +79,8 @@ When determining what handler to use for a particular request, router searches p Constructor to create a new router instance where: - `options` - an optional configuration object with the following fields: - - `isCaseSensitive` - specifies if the paths should case sensitive. If set to `true`, - `/users` and `/USERS` are considered as two different paths. Defaults to `true`. + - `isCaseSensitive` - specifies if the paths should case sensitive. If set to `true`, + `/users` and `/USERS` are considered as two different paths. Defaults to `true`. ```js const router = new Call.Router(); @@ -91,10 +91,10 @@ const router = new Call.Router(); Adds a new route to the router where: - `options` - a configuration object with the following fields: - - `method` - the HTTP method (`'get'`, `'put'`, `'post'`, `'delete'`, etc.) or the wildcard - character (`'*'`) to match any methods. The method must be lowercase. - - `path` - the URL path to be used for route matching. The path segment can be static like - `'/users/1234'` or it can be a [dynamic path](#path-matching). + - `method` - the HTTP method (`'get'`, `'put'`, `'post'`, `'delete'`, etc.) or the wildcard + character (`'*'`) to match any methods. The method must be lowercase. + - `path` - the URL path to be used for route matching. The path segment can be static like + `'/users/1234'` or it can be a [dynamic path](#path-matching). - `data` - the application data to retrieve when a route match is found during lookup. This is typically the route handler or other metadata about what to do when a route is matched. diff --git a/generated/markdown/catbox-redis/7/api.md b/generated/markdown/catbox-redis/7/api.md index ee0081ac..6ba3cf8e 100644 --- a/generated/markdown/catbox-redis/7/api.md +++ b/generated/markdown/catbox-redis/7/api.md @@ -3,9 +3,9 @@ The connection can be specified with one (and only one) of: - `client` - a custom Redis client instance where `client` must: - - be manually started and stopped, - - be compatible with the **ioredis** module API, and - - expose the `status` property that must be set to `'ready'` when connected. + - be manually started and stopped, + - be compatible with the **ioredis** module API, and + - expose the `status` property that must be set to `'ready'` when connected. - `url` - a Redis server URL. @@ -41,11 +41,11 @@ const Catbox = require('@hapi/catbox'); const { Engine: CatboxRedis } = require('@hapi/catbox-redis'); const cache = new Catbox.Client(CatboxRedis, { - partition: 'my_cached_data', - host: 'redis-cluster.domain.com', - port: 6379, - db: 0, - tls: {}, + partition: 'my_cached_data', + host: 'redis-cluster.domain.com', + port: 6379, + db: 0, + tls: {}, }); ``` @@ -56,21 +56,21 @@ const Hapi = require('hapi'); const { Engine: CatboxRedis } = require('@hapi/catbox-redis'); const server = new Hapi.Server({ - cache: [ - { - name: 'my_cache', - provider: { - constructor: CatboxRedis, - options: { - partition: 'my_cached_data', - host: 'redis-cluster.domain.com', - port: 6379, - db: 0, - tls: {}, + cache: [ + { + name: 'my_cache', + provider: { + constructor: CatboxRedis, + options: { + partition: 'my_cached_data', + host: 'redis-cluster.domain.com', + port: 6379, + db: 0, + tls: {}, + }, + }, }, - }, - }, - ], + ], }); ``` diff --git a/generated/markdown/catbox/12/api.md b/generated/markdown/catbox/12/api.md index 55344140..cf1ba415 100644 --- a/generated/markdown/catbox/12/api.md +++ b/generated/markdown/catbox/12/api.md @@ -20,15 +20,15 @@ The `Client` object provides a low-level cache abstraction. The object is constr `new Client(engine, options)` where: - `engine` - is an object or a prototype function implementing the cache strategy: - - function - a prototype function with the signature `function(options)`. **catbox** will call - `new func(options)`. - - object - a pre instantiated client implementation object. Does not support passing `options`. + - function - a prototype function with the signature `function(options)`. **catbox** will call + `new func(options)`. + - object - a pre instantiated client implementation object. Does not support passing `options`. - `options` - the strategy configuration object. Each strategy defines its own configuration options with the following common options: - - `partition` - the partition name used to isolate the cached results across multiple clients. - The partition name is used as the MongoDB database name, the Riak bucket, or as a key prefix - in Redis and Memcached. To share the cache across multiple clients, use the same partition - name. + - `partition` - the partition name used to isolate the cached results across multiple clients. + The partition name is used as the MongoDB database name, the Riak bucket, or as a key prefix + in Redis and Memcached. To share the cache across multiple clients, use the same partition + name. Note that any implementation of client strategies must return deep copies of the stored data as the API assumes that the object returned from a `get()` is owned by the called and can be safely @@ -42,24 +42,24 @@ The `Client` object provides the following methods: method is available. Any errors are thrown. - `await stop()` - terminates the connection to the cache server. - `await get(key)` - retrieve an item from the cache engine if found where: - - `key` - a cache key object (see below). - - return value: - - `null` is the item is not found. - - throws an error if the request failed. - - otherwise, an object with the following properties: - - `item` - the value stored in the cache using `set()`. - - `stored` - the timestamp when the item was stored in the cache (in milliseconds). - - `ttl` - the remaining time-to-live (not the original value used when storing the - object). + - `key` - a cache key object (see below). + - return value: + - `null` is the item is not found. + - throws an error if the request failed. + - otherwise, an object with the following properties: + - `item` - the value stored in the cache using `set()`. + - `stored` - the timestamp when the item was stored in the cache (in milliseconds). + - `ttl` - the remaining time-to-live (not the original value used when storing the + object). - `await set(key, value, ttl)` - store an item in the cache for a specified length of time, where: - - `key` - a cache key object (see below). - - `value` - the string or object value to be stored. - - `ttl` - a time-to-live value in milliseconds after which the item is automatically removed - from the cache (or is marked invalid). - - any errors are thrown. + - `key` - a cache key object (see below). + - `value` - the string or object value to be stored. + - `ttl` - a time-to-live value in milliseconds after which the item is automatically removed + from the cache (or is marked invalid). + - any errors are thrown. - `await drop(key)` - remove an item from cache where: - - `key` - a cache key object (see below). - - any errors are thrown. + - `key` - a cache key object (see below). + - any errors are thrown. - `isReady()` - returns `true` if cache engine determines itself as ready, `false` if it is not ready. - `validateSegmentName(segment)` - returns `null` if the segment name is valid (see below), @@ -78,42 +78,42 @@ automatically applied to every storage action. The object is constructed using `new Policy(options, [cache, segment])` where: - `options` - is an object with the following optional keys (unless noted otherwise): - - `expiresIn` - relative expiration expressed in the number of milliseconds since the item was - saved in the cache. Cannot be used together with `expiresAt`. - - `expiresAt` - time of day expressed in 24h notation using the 'HH:MM' format, at which point - all cache records for the route expire. Uses local time. Cannot be used together with - `expiresIn`. - - `generateFunc` - a function used to generate a new cache item if one is not found in the - cache when calling `get()`. The method's signature is `async function(id, flags)` where: - - `id` - the `id` string or object provided to the `get()` method as-is (not normalized). - - `flags` - an object used to pass back additional flags: - - `ttl` - the cache ttl value in milliseconds. Set to `0` to skip storing in the cache. - Defaults to the cache global policy. - - `staleIn` - number of milliseconds to mark an item stored in cache as stale and attempt to - regenerate it when `generateFunc` is provided. Must be less than `expiresIn`. Alternatively - function that returns staleIn value in milliseconds. The function signature is - `function(stored, ttl)` where: - - `stored` - the timestamp when the item was stored in the cache (in milliseconds). - - `ttl` - the remaining time-to-live (not the original value used when storing the object). - - `staleTimeout` - number of milliseconds to wait before returning a stale value while - generateFunc is generating a fresh value. - - `generateTimeout` - number of milliseconds to wait before returning a timeout error when the - `generateFunc` function takes too long to return a value. When the value is eventually - returned, it is stored in the cache for future requests. Required if `generateFunc` is - present. Set to `false` to disable timeouts which may cause all `get()` requests to get stuck - forever. - - `dropOnError` - if `true`, an error or timeout in the `generateFunc` causes the stale value - to be evicted from the cache. Defaults to `true`. - - `generateOnReadError` - if `false`, an upstream cache read error will stop the `get()` method - from calling the generate function and will instead pass back the cache error. Defaults to - `true`. - - `generateIgnoreWriteError` - if `false`, an upstream cache write error will be passed back - with the generated value when calling the `get()` method. Defaults to `true`. - - `pendingGenerateTimeout` - number of milliseconds while generateFunc call is in progress for - a given id, before a subsequent generateFunc call is allowed. Defaults to 0, no blocking of - concurrent generateFunc calls beyond staleTimeout. - - `getDecoratedValue` - if `true`, the return value of `policy.get()` calls is an object with - `{ value, cached, report }`. Defaults to `false` which returns a plain value. + - `expiresIn` - relative expiration expressed in the number of milliseconds since the item was + saved in the cache. Cannot be used together with `expiresAt`. + - `expiresAt` - time of day expressed in 24h notation using the 'HH:MM' format, at which point + all cache records for the route expire. Uses local time. Cannot be used together with + `expiresIn`. + - `generateFunc` - a function used to generate a new cache item if one is not found in the + cache when calling `get()`. The method's signature is `async function(id, flags)` where: + - `id` - the `id` string or object provided to the `get()` method as-is (not normalized). + - `flags` - an object used to pass back additional flags: + - `ttl` - the cache ttl value in milliseconds. Set to `0` to skip storing in the cache. + Defaults to the cache global policy. + - `staleIn` - number of milliseconds to mark an item stored in cache as stale and attempt to + regenerate it when `generateFunc` is provided. Must be less than `expiresIn`. Alternatively + function that returns staleIn value in milliseconds. The function signature is + `function(stored, ttl)` where: + - `stored` - the timestamp when the item was stored in the cache (in milliseconds). + - `ttl` - the remaining time-to-live (not the original value used when storing the object). + - `staleTimeout` - number of milliseconds to wait before returning a stale value while + generateFunc is generating a fresh value. + - `generateTimeout` - number of milliseconds to wait before returning a timeout error when the + `generateFunc` function takes too long to return a value. When the value is eventually + returned, it is stored in the cache for future requests. Required if `generateFunc` is + present. Set to `false` to disable timeouts which may cause all `get()` requests to get stuck + forever. + - `dropOnError` - if `true`, an error or timeout in the `generateFunc` causes the stale value + to be evicted from the cache. Defaults to `true`. + - `generateOnReadError` - if `false`, an upstream cache read error will stop the `get()` method + from calling the generate function and will instead pass back the cache error. Defaults to + `true`. + - `generateIgnoreWriteError` - if `false`, an upstream cache write error will be passed back + with the generated value when calling the `get()` method. Defaults to `true`. + - `pendingGenerateTimeout` - number of milliseconds while generateFunc call is in progress for + a given id, before a subsequent generateFunc call is allowed. Defaults to 0, no blocking of + concurrent generateFunc calls beyond staleTimeout. + - `getDecoratedValue` - if `true`, the return value of `policy.get()` calls is an object with + `{ value, cached, report }`. Defaults to `false` which returns a plain value. - `cache` - a `Client` instance (which has already been started). - `segment` - required when `cache` is provided. The segment name used to isolate cached items within the cache partition. @@ -125,57 +125,57 @@ The `Policy` object provides the following methods: - `await get(id)` - retrieve an item from the cache. If the item is not found and the `generateFunc` method was provided, a new value is generated, stored in the cache, and returned. Multiple concurrent requests are queued and processed once. The method arguments are: - - `id` - the unique item identifier (within the policy segment). Can be a string or an object - with the required 'id' key. - - return value: - - the requested item if found, otherwise `null`. - - any errors are thrown. - - if `getDecoratedValue` is `true`, returns an object with the following properties: - - `value` - the fetched or generated value. - - `cached` - `null` if a valid item was not found in the cache, or an object with the - following keys: - - `item` - the cached `value`. - - `stored` - the timestamp when the item was stored in the cache. - - `ttl` - the cache ttl value for the record. - - `isStale` - `true` if the item is stale. - - `report` - an object with logging information about the generation operation - containing the following keys (as relevant): - - `msec` - the cache lookup time in milliseconds. - - `stored` - the timestamp when the item was stored in the cache. - - `isStale` - `true` if the item is stale. - - `ttl` - the cache ttl value for the record. - - `error` - lookup error. + - `id` - the unique item identifier (within the policy segment). Can be a string or an object + with the required 'id' key. + - return value: + - the requested item if found, otherwise `null`. + - any errors are thrown. + - if `getDecoratedValue` is `true`, returns an object with the following properties: + - `value` - the fetched or generated value. + - `cached` - `null` if a valid item was not found in the cache, or an object with the + following keys: + - `item` - the cached `value`. + - `stored` - the timestamp when the item was stored in the cache. + - `ttl` - the cache ttl value for the record. + - `isStale` - `true` if the item is stale. + - `report` - an object with logging information about the generation operation + containing the following keys (as relevant): + - `msec` - the cache lookup time in milliseconds. + - `stored` - the timestamp when the item was stored in the cache. + - `isStale` - `true` if the item is stale. + - `ttl` - the cache ttl value for the record. + - `error` - lookup error. - `await set(id, value, ttl)` - store an item in the cache where: - - `id` - the unique item identifier (within the policy segment). - - `value` - the string or object value to be stored. - - `ttl` - a time-to-live **override** value in milliseconds after which the item is - automatically removed from the cache (or is marked invalid). This should be set to `0` in - order to use the caching rules configured when creating the `Policy` object. - - any errors are thrown. + - `id` - the unique item identifier (within the policy segment). + - `value` - the string or object value to be stored. + - `ttl` - a time-to-live **override** value in milliseconds after which the item is + automatically removed from the cache (or is marked invalid). This should be set to `0` in + order to use the caching rules configured when creating the `Policy` object. + - any errors are thrown. - `await drop(id)` - remove the item from cache where: - - `id` - the unique item identifier (within the policy segment). - - any errors are thrown. + - `id` - the unique item identifier (within the policy segment). + - any errors are thrown. - `ttl(created)` - given a `created` timestamp in milliseconds, returns the time-to-live left based on the configured rules. - `rules(options)` - changes the policy rules after construction (note that items already stored will not be affected) where: - - `options` - the same `options` as the `Policy` constructor. + - `options` - the same `options` as the `Policy` constructor. - `isReady()` - returns `true` if cache engine determines itself as ready, `false` if it is not ready or if there is no cache engine set. - `stats` - an object with cache statistics where: - - `sets` - number of cache writes. - - `gets` - number of cache `get()` requests. - - `hits` - number of cache `get()` requests in which the requested id was found in the cache - (can be stale). - - `stales` - number of cache reads with stale requests (only counts the first request in a - queued `get()` operation). - - `generates` - number of calls to the generate function. - - `errors` - cache operations errors. + - `sets` - number of cache writes. + - `gets` - number of cache `get()` requests. + - `hits` - number of cache `get()` requests in which the requested id was found in the cache + (can be stale). + - `stales` - number of cache reads with stale requests (only counts the first request in a + queued `get()` operation). + - `generates` - number of calls to the generate function. + - `errors` - cache operations errors. - `events` - a [**podium**](https://github.com/hapijs/podium) event emitter, emitting `'error'` events under the following channels: - - `'persist'` - emits any cache errors thrown during the generation of new values as a result - of a `get()` request. - - `'generate'` - emits any new value generation errors thrown as a result of a `get()` request. + - `'persist'` - emits any cache errors thrown during the generation of new values as a result + of a `get()` request. + - `'generate'` - emits any new value generation errors thrown as a result of a `get()` request. - `client` - a reference to the cache client if set. Note that errors generated by `set()` and `drop()` are reported directly by the functions calls and diff --git a/generated/markdown/code/9/api.md b/generated/markdown/code/9/api.md index 9fbd90f0..fc8fb073 100644 --- a/generated/markdown/code/9/api.md +++ b/generated/markdown/code/9/api.md @@ -111,7 +111,7 @@ Asserts that the reference value is an `arguments` object. const Code = require('code'); const expect = Code.expect; const func = function () { - return arguments; + return arguments; }; expect(func()).to.be.arguments(); ``` @@ -600,7 +600,7 @@ const Code = require('code'); const expect = Code.expect; expect('x').to.satisfy(function (value) { - return value === 'x'; + return value === 'x'; }); ``` @@ -622,13 +622,13 @@ const Code = require('code'); const expect = Code.expect; const CustomError = function (message) { - Error.call(this, message); + Error.call(this, message); }; NodeUtil.inherit(CustomError, Error); const throws = function () { - throw new CustomError('Oh no!'); + throw new CustomError('Oh no!'); }; expect(throws).to.throw(CustomError, 'Oh no!'); @@ -654,16 +654,16 @@ const Code = require('code'); const expect = Code.expect; const CustomError = function (message, code) { - this.message = message; - this.code = code; + this.message = message; + this.code = code; }; NodeUtil.inherits(CustomError, Error); const rejects = function () { - return new Promise((resolve, reject) => - reject(new CustomError('Oh no!', 123)), - ); + return new Promise((resolve, reject) => + reject(new CustomError('Oh no!', 123)), + ); }; const err = await expect(rejects()).to.reject(CustomError, 'Oh no!'); diff --git a/generated/markdown/content/6/api.md b/generated/markdown/content/6/api.md index 4cece2d9..9995ee8f 100644 --- a/generated/markdown/content/6/api.md +++ b/generated/markdown/content/6/api.md @@ -28,7 +28,7 @@ Content.disposition('form-data; name="file"; filename=file.jpg'); // { name: 'file', filename: 'file.jpg' } Content.disposition( - 'form-data; name="file"; filename*=utf-8\'en\'with%20space', + 'form-data; name="file"; filename*=utf-8\'en\'with%20space', ); // { name: 'file', filename: 'with space' } ``` diff --git a/generated/markdown/content/changelog.md b/generated/markdown/content/changelog.md index a7cbf301..ec5c6c2d 100644 --- a/generated/markdown/content/changelog.md +++ b/generated/markdown/content/changelog.md @@ -1,5 +1,13 @@ ## Version 6 {#v6} +### [6.0.2](https://github.com/hapijs/content/milestone/18) {#6.0.2} + +- [#39](https://github.com/hapijs/content/pull/39) fix: error on duplicate parameters + +### [6.0.1](https://github.com/hapijs/content/milestone/17) {#6.0.1} + +- [#38](https://github.com/hapijs/content/pull/38) fix: protect regex from redos + ### [6.0.0](https://github.com/hapijs/content/milestone/16) {#6.0.0} - [#35](https://github.com/hapijs/content/pull/35) Support node v18 and drop node v12 diff --git a/generated/markdown/cookie/12/api.md b/generated/markdown/cookie/12/api.md index 99a76f61..2fe5606a 100644 --- a/generated/markdown/cookie/12/api.md +++ b/generated/markdown/cookie/12/api.md @@ -14,18 +14,18 @@ It is important to remember a couple of things: The `'cookie`' scheme takes the following options: - `cookie` - an object with the following: - - `name` - the cookie name. Defaults to `'sid'`. - - `password` - used for Iron cookie encoding. Should be at least 32 characters long. - - `ttl` - sets the cookie expires time in milliseconds. Defaults to single browser session (ends - when browser closes). Required when `keepAlive` is `true`. - - `domain` - sets the cookie Domain value. Defaults to none. - - `path` - sets the cookie path value. Defaults to none. - - `clearInvalid` - if `true`, any authentication cookie that fails validation will be marked as - expired in the response and cleared. Defaults to `false`. - - `isSameSite` - if `false` omitted. Other options `Strict` or `Lax`. Defaults to `Strict`. - - `isSecure` - if `false`, the cookie is allowed to be transmitted over insecure connections which - exposes it to attacks. Defaults to `true`. - - `isHttpOnly` - if `false`, the cookie will not include the 'HttpOnly' flag. Defaults to `true`. + - `name` - the cookie name. Defaults to `'sid'`. + - `password` - used for Iron cookie encoding. Should be at least 32 characters long. + - `ttl` - sets the cookie expires time in milliseconds. Defaults to single browser session (ends + when browser closes). Required when `keepAlive` is `true`. + - `domain` - sets the cookie Domain value. Defaults to none. + - `path` - sets the cookie path value. Defaults to none. + - `clearInvalid` - if `true`, any authentication cookie that fails validation will be marked as + expired in the response and cleared. Defaults to `false`. + - `isSameSite` - if `false` omitted. Other options `Strict` or `Lax`. Defaults to `Strict`. + - `isSecure` - if `false`, the cookie is allowed to be transmitted over insecure connections which + exposes it to attacks. Defaults to `true`. + - `isHttpOnly` - if `false`, the cookie will not include the 'HttpOnly' flag. Defaults to `true`. - `keepAlive` - if `true`, automatically sets the session cookie after validation to extend the current session for a new `ttl` duration. Defaults to `false`. - `redirectTo` - optional login URI or function `function(request)` that returns a URI to redirect unauthenticated requests to. Note that it will only @@ -33,25 +33,25 @@ The `'cookie`' scheme takes the following options: set the route `plugins` config (`{ options: { plugins: { cookie: { redirectTo: false } } } }`). Defaults to no redirection. - `appendNext` - if `redirectTo` is `true`, can be a boolean, string, or object. Defaults to `false`. - - if set to `true`, a string, or an object, appends the current request path to the query component - of the `redirectTo` URI - - set to a string value or set the `name` property in an object to define the parameter name. - defaults to `'next'` - - set the `raw` property of the object to `true` to determine the current request path based on - the raw node.js request object received from the HTTP server callback instead of the processed - hapi request object + - if set to `true`, a string, or an object, appends the current request path to the query component + of the `redirectTo` URI + - set to a string value or set the `name` property in an object to define the parameter name. + defaults to `'next'` + - set the `raw` property of the object to `true` to determine the current request path based on + the raw node.js request object received from the HTTP server callback instead of the processed + hapi request object - `async validate` - an optional session validation function used to validate the content of the session cookie on each request. Used to verify that the internal session state is still valid (e.g. user account still exists). The function has the signature `function(request, session)` where: - - `request` - is the Hapi request object of the request which is being authenticated. - - `session` - is the session object set via `request.cookieAuth.set()`. + - `request` - is the Hapi request object of the request which is being authenticated. + - `session` - is the session object set via `request.cookieAuth.set()`. - Must return an object that contains: - - `isValid` - `true` if the content of the session is valid, otherwise `false`. - - `credentials` - a credentials object passed back to the application in - `request.auth.credentials`. If value is `null` or `undefined`, defaults to `session`. If - set, will override the current cookie as if `request.cookieAuth.set()` was called. + Must return an object that contains: + - `isValid` - `true` if the content of the session is valid, otherwise `false`. + - `credentials` - a credentials object passed back to the application in + `request.auth.credentials`. If value is `null` or `undefined`, defaults to `session`. If + set, will override the current cookie as if `request.cookieAuth.set()` was called. - `requestDecoratorName` - _USE WITH CAUTION_ an optional name to use with decorating the `request` object. Defaults to `'cookieAuth'`. Using multiple decorator names for separate authentication strategies could allow a developer to call the methods for the wrong strategy. Potentially resulting in unintended authorized access. @@ -61,16 +61,16 @@ the following methods: - `set(session)` - sets the current session. Must be called after a successful login to begin the session. `session` must be a non-null object, which is set on successful subsequent authentications in `request.auth.credentials` where: - - `session` - the session object. + - `session` - the session object. - `set(key, value)` - sets a specific object key on the current session (which must already exist) where: - - `key` - session key string. - - `value` - value to assign key. + - `key` - session key string. + - `value` - value to assign key. - `clear([key])` - clears the current session or session key where: - - `key` - optional key string to remove a specific property of the session. If none provided, - defaults to removing the entire session which is used to log the user out. + - `key` - optional key string to remove a specific property of the session. If none provided, + defaults to removing the entire session which is used to log the user out. - `ttl(msecs)` - sets the ttl of the current active session where: - - `msecs` - the new ttl in milliseconds. + - `msecs` - the new ttl in milliseconds. Because this scheme decorates the `request` object with session-specific methods, it cannot be registered more than once. @@ -85,16 +85,16 @@ const internals = {}; // Simulate database for demo internals.users = [ - { - id: 1, - name: 'john', - password: 'password', - }, + { + id: 1, + name: 'john', + password: 'password', + }, ]; internals.renderHtml = { - login: (message) => { - return ` + login: (message) => { + return ` Login page ${message ? '

    ' + message + '


    ' : ''}
    @@ -103,9 +103,9 @@ internals.renderHtml = {
    `; - }, - home: (name) => { - return ` + }, + home: (name) => { + return ` Login page

    Welcome ${name}! You are logged in!

    @@ -113,123 +113,133 @@ internals.renderHtml = {
    `; - }, + }, }; internals.server = async function () { - const server = Hapi.server({ port: 8000 }); - - await server.register(require('@hapi/cookie')); - - server.auth.strategy('session', 'cookie', { - cookie: { - name: 'sid-example', + const server = Hapi.server({ port: 8000 }); - // Don't forget to change it to your own secret password! - password: 'password-should-be-32-characters', + await server.register(require('@hapi/cookie')); - // For working via HTTP in localhost - isSecure: false, - }, + server.auth.strategy('session', 'cookie', { + cookie: { + name: 'sid-example', - redirectTo: '/login', + // Don't forget to change it to your own secret password! + password: 'password-should-be-32-characters', - validate: async (request, session) => { - const account = internals.users.find((user) => user.id === session.id); + // For working via HTTP in localhost + isSecure: false, + }, - if (!account) { - // Must return { isValid: false } for invalid cookies - return { isValid: false }; - } + redirectTo: '/login', - return { isValid: true, credentials: account }; - }, - }); + validate: async (request, session) => { + const account = internals.users.find( + (user) => user.id === session.id, + ); - server.auth.default('session'); + if (!account) { + // Must return { isValid: false } for invalid cookies + return { isValid: false }; + } - server.route([ - { - method: 'GET', - path: '/', - options: { - handler: (request, h) => { - return internals.renderHtml.home(request.auth.credentials.name); - }, - }, - }, - { - method: 'GET', - path: '/login', - options: { - auth: { - mode: 'try', - }, - plugins: { - cookie: { - redirectTo: false, - }, + return { isValid: true, credentials: account }; }, - handler: async (request, h) => { - if (request.auth.isAuthenticated) { - return h.redirect('/'); - } - - return internals.renderHtml.login(); + }); + + server.auth.default('session'); + + server.route([ + { + method: 'GET', + path: '/', + options: { + handler: (request, h) => { + return internals.renderHtml.home( + request.auth.credentials.name, + ); + }, + }, }, - }, - }, - { - method: 'POST', - path: '/login', - options: { - auth: { - mode: 'try', + { + method: 'GET', + path: '/login', + options: { + auth: { + mode: 'try', + }, + plugins: { + cookie: { + redirectTo: false, + }, + }, + handler: async (request, h) => { + if (request.auth.isAuthenticated) { + return h.redirect('/'); + } + + return internals.renderHtml.login(); + }, + }, }, - handler: async (request, h) => { - const { username, password } = request.payload; - if (!username || !password) { - return internals.renderHtml.login('Missing username or password'); - } - - // Try to find user with given credentials - - const account = internals.users.find( - (user) => user.name === username && user.password === password, - ); - - if (!account) { - return internals.renderHtml.login('Invalid username or password'); - } - - request.cookieAuth.set({ id: account.id }); - return h.redirect('/'); + { + method: 'POST', + path: '/login', + options: { + auth: { + mode: 'try', + }, + handler: async (request, h) => { + const { username, password } = request.payload; + if (!username || !password) { + return internals.renderHtml.login( + 'Missing username or password', + ); + } + + // Try to find user with given credentials + + const account = internals.users.find( + (user) => + user.name === username && + user.password === password, + ); + + if (!account) { + return internals.renderHtml.login( + 'Invalid username or password', + ); + } + + request.cookieAuth.set({ id: account.id }); + return h.redirect('/'); + }, + }, }, - }, - }, - { - method: 'GET', - path: '/logout', - options: { - handler: (request, h) => { - request.cookieAuth.clear(); - return h.redirect('/'); + { + method: 'GET', + path: '/logout', + options: { + handler: (request, h) => { + request.cookieAuth.clear(); + return h.redirect('/'); + }, + }, }, - }, - }, - ]); + ]); - await server.start(); - console.log(`Server started at: ${server.info.uri}`); + await server.start(); + console.log(`Server started at: ${server.info.uri}`); }; internals.start = async function () { - try { - await internals.server(); - } catch (err) { - console.error(err.stack); - process.exit(1); - } + try { + await internals.server(); + } catch (err) { + console.error(err.stack); + process.exit(1); + } }; internals.start(); diff --git a/generated/markdown/crumb/9/api.md b/generated/markdown/crumb/9/api.md index 3ecb71d2..b9bab845 100644 --- a/generated/markdown/crumb/9/api.md +++ b/generated/markdown/crumb/9/api.md @@ -19,27 +19,27 @@ const Crumb = require('@hapi/crumb'); const server = new Hapi.Server({ port: 8000 }); (async () => { - await server.register({ - plugin: Crumb, - - // plugin options - options: {}, - }); - - server.route({ - path: '/login', - method: 'GET', - options: { - plugins: { - // route specific options - crumb: {}, - }, - handler(request, h) { - // this requires to have a view engine configured - return h.view('some-view'); - }, - }, - }); + await server.register({ + plugin: Crumb, + + // plugin options + options: {}, + }); + + server.route({ + path: '/login', + method: 'GET', + options: { + plugins: { + // route specific options + crumb: {}, + }, + handler(request, h) { + // this requires to have a view engine configured + return h.view('some-view'); + }, + }, + }); })(); ``` diff --git a/generated/markdown/eslint-plugin/6/api.md b/generated/markdown/eslint-plugin/6/api.md index 738df485..f3a146f5 100644 --- a/generated/markdown/eslint-plugin/6/api.md +++ b/generated/markdown/eslint-plugin/6/api.md @@ -12,7 +12,7 @@ An ESLint configuration containing hapi style guide rules and config. To use in ```json { - "extends": "plugin:@hapi/recommended" + "extends": "plugin:@hapi/recommended" } ``` @@ -30,7 +30,7 @@ Then in your ESLint configuration add: ```json { - "extends": "plugin:@hapi/module" + "extends": "plugin:@hapi/module" } ``` diff --git a/generated/markdown/eslint-plugin/7/api.md b/generated/markdown/eslint-plugin/7/api.md index 738df485..f3a146f5 100644 --- a/generated/markdown/eslint-plugin/7/api.md +++ b/generated/markdown/eslint-plugin/7/api.md @@ -12,7 +12,7 @@ An ESLint configuration containing hapi style guide rules and config. To use in ```json { - "extends": "plugin:@hapi/recommended" + "extends": "plugin:@hapi/recommended" } ``` @@ -30,7 +30,7 @@ Then in your ESLint configuration add: ```json { - "extends": "plugin:@hapi/module" + "extends": "plugin:@hapi/module" } ``` diff --git a/generated/markdown/glue/9/api.md b/generated/markdown/glue/9/api.md index 98d5dcb0..e4a9b79b 100644 --- a/generated/markdown/glue/9/api.md +++ b/generated/markdown/glue/9/api.md @@ -29,67 +29,74 @@ To start the server use the returned object to call `await server.start()`. Composes a hapi server object where: - `manifest` - an object having: - - `server` - an object containing the options passed to [hapi's](https://hapijs.com/api) `new Hapi.Server([options])` - - If `server.cache` is specified, glue will parse the entry and replace any prototype function field (eg. `provider`) specified as string by calling `require()` with that string. - - `register` - an object containing two properties: the `plugins` to be registered and `options` to pass to `server.register` - - `plugins` - an array of entries to register with [hapi's](https://hapijs.com/api) `await server.register(plugins, [options])` - - each entry may be one of three alternatives: - 1. A string to be `require()`d during composition. - - ```js - { - register: { - plugins: ['myplugin']; - } - } - ``` - - 2. An object containing the `plugin` property which is a string to be `require`d during composition - - ```js - { - register: { - plugins: [{ plugin: 'myplugin' }]; - } - } - ``` - - 3. An object containing the `plugin` property which is the plugin object to be passed directly to `await server.register`\*[]: - - ```js - { - register: { - plugins: [{ plugin: require('myplugin') }]; - } - } - ``` - - - object entries may also contain the `options` property, which contains the plugin-level options passed to the plugin at registration time. - - ```js - { - register: { - plugins: [{ plugin: 'myplugin', options: { host: 'my-host.com' } }]; - } - } - ``` - - - object entries may also contain override registration-options such as `routes`. - - ```js - { - register: { - plugins: [{ plugin: 'myplugin', routes: { prefix: '/test/' } }]; - } - } - ``` - - - `options` - optional registration-options object passed to `server.register()`. + - `server` - an object containing the options passed to [hapi's](https://hapijs.com/api) `new Hapi.Server([options])` + - If `server.cache` is specified, glue will parse the entry and replace any prototype function field (eg. `provider`) specified as string by calling `require()` with that string. + - `register` - an object containing two properties: the `plugins` to be registered and `options` to pass to `server.register` + - `plugins` - an array of entries to register with [hapi's](https://hapijs.com/api) `await server.register(plugins, [options])` + - each entry may be one of three alternatives: + 1. A string to be `require()`d during composition. + + ```js + { + register: { + plugins: ['myplugin']; + } + } + ``` + + 2. An object containing the `plugin` property which is a string to be `require`d during composition + + ```js + { + register: { + plugins: [{ plugin: 'myplugin' }]; + } + } + ``` + + 3. An object containing the `plugin` property which is the plugin object to be passed directly to `await server.register`\*[]: + + ```js + { + register: { + plugins: [{ plugin: require('myplugin') }]; + } + } + ``` + + - object entries may also contain the `options` property, which contains the plugin-level options passed to the plugin at registration time. + + ```js + { + register: { + plugins: [ + { + plugin: 'myplugin', + options: { host: 'my-host.com' }, + }, + ]; + } + } + ``` + + - object entries may also contain override registration-options such as `routes`. + + ```js + { + register: { + plugins: [ + { plugin: 'myplugin', routes: { prefix: '/test/' } }, + ]; + } + } + ``` + + - `options` - optional registration-options object passed to `server.register()`. - `options` - an object containing the following `compose` options: - - `relativeTo` - a file-system path string that is used to resolve loading modules with `require`. Used in `server.cache` and `register.plugins[]` - - `preRegister` - an async function that is called prior to registering plugins with the server. The function signature is `async function (server)` where: - - `server` - is the hapi server object. + - `relativeTo` - a file-system path string that is used to resolve loading modules with `require`. Used in `server.cache` and `register.plugins[]` + - `preRegister` - an async function that is called prior to registering plugins with the server. The function signature is `async function (server)` where: + - `server` - is the hapi server object. `compose` returns the hapi server object. Call `await server.start()` to actually start the server. @@ -105,51 +112,51 @@ If you are developing a plugin, ensure your plugin dependencies are properly man const Glue = require('@hapi/glue'); const manifest = { - server: { - cache: 'redis', - port: 8000, - }, - register: { - plugins: [ - './awesome-plugin.js', - { - plugin: require('myplugin'), - options: { - uglify: true, - }, - }, - { - plugin: './ui-user', - }, - { - plugin: './ui-admin', + server: { + cache: 'redis', + port: 8000, + }, + register: { + plugins: [ + './awesome-plugin.js', + { + plugin: require('myplugin'), + options: { + uglify: true, + }, + }, + { + plugin: './ui-user', + }, + { + plugin: './ui-admin', + options: { + sessiontime: 500, + }, + routes: { + prefix: '/admin', + }, + }, + ], options: { - sessiontime: 500, + once: false, }, - routes: { - prefix: '/admin', - }, - }, - ], - options: { - once: false, }, - }, }; const options = { - relativeTo: __dirname, + relativeTo: __dirname, }; const startServer = async function () { - try { - const server = await Glue.compose(manifest, options); - await server.start(); - console.log('hapi days!'); - } catch (err) { - console.error(err); - process.exit(1); - } + try { + const server = await Glue.compose(manifest, options); + await server.start(); + console.log('hapi days!'); + } catch (err) { + console.error(err); + process.exit(1); + } }; startServer(); diff --git a/generated/markdown/h2o2/10/api.md b/generated/markdown/h2o2/10/api.md index 966a82d5..7da0d5c3 100644 --- a/generated/markdown/h2o2/10/api.md +++ b/generated/markdown/h2o2/10/api.md @@ -9,12 +9,12 @@ const Hapi = require('@hapi/hapi'); const H2o2 = require('@hapi/h2o2'); const start = async function () { - const server = Hapi.server(); + const server = Hapi.server(); - await server.register(H2o2); - await server.start(); + await server.register(H2o2); + await server.start(); - console.log(`Server started at: ${server.info.uri}`); + console.log(`Server started at: ${server.info.uri}`); }; start(); @@ -29,8 +29,8 @@ The proxy handler object has the following properties: - `host` - upstream service host to proxy requests to. It will have the same path as the client request. - `port` - upstream service port. - `protocol` - protocol to use when making the request to the proxied host: - - 'http' - - 'https' + - 'http' + - 'https' - `uri` - absolute URI used instead of host, port, protocol, path, and query. Cannot be used with `host`, `port`, `protocol`, or `mapUri`. - `httpClient` - an http client that abides by the Wreck interface. Defaults to [`wreck`](https://github.com/hapijs/wreck). - `passThrough` - if set to `true`, it forwards the headers from the client to the upstream service, headers sent from the upstream service will also be forwarded to the client. Defaults to `false`. @@ -41,18 +41,18 @@ The proxy handler object has the following properties: - `redirects` - the maximum number of HTTP redirections allowed to be followed automatically by the handler. Set to `false` or `0` to disable all redirections (the response will contain the redirection received from the upstream service). If redirections are enabled, no redirections (301, 302, 307, 308) will be passed along to the client, and reaching the maximum allowed redirections will return an error response. Defaults to `false`. - `timeout` - number of milliseconds before aborting the upstream request. Defaults to `180000` (3 minutes). - `mapUri` - a function used to map the request URI to the proxied URI. Cannot be used together with `host`, `port`, `protocol`, or `uri`. The function signature is `function (request)` where: - - `request` - is the incoming [request object](http://hapijs.com/api#request-object). The response from this function should be an object with the following properties: - - `uri` - the absolute proxy URI. - - `headers` - optional object where each key is an HTTP request header and the value is the header content. + - `request` - is the incoming [request object](http://hapijs.com/api#request-object). The response from this function should be an object with the following properties: + - `uri` - the absolute proxy URI. + - `headers` - optional object where each key is an HTTP request header and the value is the header content. - `onRequest` - a custom function which is passed the upstream request. Function signature is `function (req)` where: - - `req` - the [wreck] (https://github.com/hapijs/wreck) request to the upstream server. + - `req` - the [wreck] (https://github.com/hapijs/wreck) request to the upstream server. - `onResponse` - a custom function for processing the response from the upstream service before sending to the client. Useful for custom error handling of responses from the proxied endpoint or other payload manipulation. Function signature is `function (err, res, request, h, settings, ttl)` where: - - `err` - internal or upstream error returned from attempting to contact the upstream proxy. - - `res` - the node response object received from the upstream service. `res` is a readable stream (use the [wreck](https://github.com/hapijs/wreck) module `read` method to easily convert it to a Buffer or string). Note that it is your responsibility to close the `res` stream. - - `request` - is the incoming [request object](http://hapijs.com/api#request-object). - - `h` - the [response toolkit](https://hapijs.com/api#response-toolkit). - - `settings` - the proxy handler configuration. - - `ttl` - the upstream TTL in milliseconds if `proxy.ttl` it set to `'upstream'` and the upstream response included a valid 'Cache-Control' header with 'max-age'. + - `err` - internal or upstream error returned from attempting to contact the upstream proxy. + - `res` - the node response object received from the upstream service. `res` is a readable stream (use the [wreck](https://github.com/hapijs/wreck) module `read` method to easily convert it to a Buffer or string). Note that it is your responsibility to close the `res` stream. + - `request` - is the incoming [request object](http://hapijs.com/api#request-object). + - `h` - the [response toolkit](https://hapijs.com/api#response-toolkit). + - `settings` - the proxy handler configuration. + - `ttl` - the upstream TTL in milliseconds if `proxy.ttl` it set to `'upstream'` and the upstream response included a valid 'Cache-Control' header with 'max-age'. - `ttl` - if set to `'upstream'`, applies the upstream response caching policy to the response using the `response.ttl()` method (or passed as an argument to the `onResponse` method if provided). - `agent` - a node [http(s) agent](http://nodejs.org/api/http.html#http_class_http_agent) to be used for connections to upstream server. - `maxSockets` - sets the maximum number of sockets available per outgoing proxy host connection. `false` means use the **wreck** module default value (`Infinity`). Does not affect non-proxy outgoing client connections. Defaults to `Infinity`. @@ -79,7 +79,7 @@ The [response flow control rules](http://hapijs.com/api#flow-control) **do not** ```js const handler = function (request, h) { - return h.proxy({ host: 'example.com', port: 80, protocol: 'http' }); + return h.proxy({ host: 'example.com', port: 80, protocol: 'http' }); }; ``` @@ -89,15 +89,15 @@ Setting these options will send the request to certain route to a specific upstr ```javascript server.route({ - method: 'GET', - path: '/', - handler: { - proxy: { - host: '10.33.33.1', - port: '443', - protocol: 'https', + method: 'GET', + path: '/', + handler: { + proxy: { + host: '10.33.33.1', + port: '443', + protocol: 'https', + }, }, - }, }); ``` @@ -107,13 +107,13 @@ Setting this option will send the request to an absolute URI instead of the inco ```javascript server.route({ - method: 'GET', - path: '/', - handler: { - proxy: { - uri: 'https://some.upstream.service.com/that/has?what=you&want=todo', + method: 'GET', + path: '/', + handler: { + proxy: { + uri: 'https://some.upstream.service.com/that/has?what=you&want=todo', + }, }, - }, }); ``` @@ -129,13 +129,13 @@ When using the `uri` option, there are optional **default** template values that ```javascript server.route({ - method: 'GET', - path: '/foo', - handler: { - proxy: { - uri: '{protocol}://{host}:{port}/go/to/{path}', + method: 'GET', + path: '/foo', + handler: { + proxy: { + uri: '{protocol}://{host}:{port}/go/to/{path}', + }, }, - }, }); ``` @@ -145,13 +145,13 @@ Additionally, you can capture request.params and query values and inject them in ```javascript server.route({ - method: 'GET', - path: '/foo/{bar}', - handler: { - proxy: { - uri: 'https://some.upstream.service.com/some/path/to/{bar}{query}', + method: 'GET', + path: '/foo/{bar}', + handler: { + proxy: { + uri: 'https://some.upstream.service.com/some/path/to/{bar}{query}', + }, }, - }, }); ``` @@ -163,27 +163,27 @@ Setting both options with custom functions will allow you to map the original re ```javascript server.route({ - method: 'GET', - path: '/', - handler: { - proxy: { - mapUri: function (request) { - console.log('doing some additional stuff before redirecting'); - return { - uri: 'https://some.upstream.service.com/', - }; - }, - onResponse: async function (err, res, request, h, settings, ttl) { - console.log('receiving the response from the upstream.'); - const payload = await Wreck.read(res, { json: true }); - - console.log('some payload manipulation if you want to.'); - const response = h.response(payload); - response.headers = res.headers; - return response; - }, + method: 'GET', + path: '/', + handler: { + proxy: { + mapUri: function (request) { + console.log('doing some additional stuff before redirecting'); + return { + uri: 'https://some.upstream.service.com/', + }; + }, + onResponse: async function (err, res, request, h, settings, ttl) { + console.log('receiving the response from the upstream.'); + const payload = await Wreck.read(res, { json: true }); + + console.log('some payload manipulation if you want to.'); + const response = h.response(payload); + response.headers = res.headers; + return response; + }, + }, }, - }, }); ``` @@ -193,19 +193,19 @@ By default, `h2o2` uses Wreck to perform requests. A custom http client can be p ```javascript server.route({ - method: 'GET', - path: '/', - handler: { - proxy: { - httpClient: { - request(method, uri, options) { - return axios({ - method, - url: 'https://some.upstream.service.com/', - }); + method: 'GET', + path: '/', + handler: { + proxy: { + httpClient: { + request(method, uri, options) { + return axios({ + method, + url: 'https://some.upstream.service.com/', + }); + }, + }, }, - }, }, - }, }); ``` diff --git a/generated/markdown/h2o2/changelog.md b/generated/markdown/h2o2/changelog.md index 1a2a81ee..e21fb99c 100644 --- a/generated/markdown/h2o2/changelog.md +++ b/generated/markdown/h2o2/changelog.md @@ -1,5 +1,9 @@ ## Version 10 {#v10} +### [10.0.4](https://github.com/hapijs/h2o2/milestone/24) {#10.0.4} + +- [#138](https://github.com/hapijs/h2o2/pull/138) fix: forward 405 Allow header + ### [10.0.3](https://github.com/hapijs/h2o2/milestone/23) {#10.0.3} - [#137](https://github.com/hapijs/h2o2/pull/137) Fix mapUri type definition diff --git a/generated/markdown/hapi/20/api.md b/generated/markdown/hapi/20/api.md index 211792d0..2b7094eb 100644 --- a/generated/markdown/hapi/20/api.md +++ b/generated/markdown/hapi/20/api.md @@ -74,24 +74,27 @@ assigned one or more (array): will be created internally using this constructor. - a configuration object with the following: - - `engine` - a **catbox** engine object instance. - - `name` - an identifier used later when provisioning or configuring caching for - [server methods](#server.methods) or [plugins](#plugins). Each cache name must be unique. - A single item may omit the `name` option which defines the default cache. If every cache - includes a `name`, a default memory cache is provisioned as well. + - `engine` - a **catbox** engine object instance. - - `provider` - a class, a constructor function, or an object with the following: - - `constructor` - a class or a prototype function. + - `name` - an identifier used later when provisioning or configuring caching for + [server methods](#server.methods) or [plugins](#plugins). Each cache name must be unique. + A single item may omit the `name` option which defines the default cache. If every cache + includes a `name`, a default memory cache is provisioned as well. - - `options` - (optional) a settings object passed as-is to the `constructor` with the following: - - `partition` - (optional) string used to isolate cached data. Defaults to `'hapi-cache'`. - - other constructor-specific options passed to the `constructor` on instantiation. + - `provider` - a class, a constructor function, or an object with the following: - - `shared` - if `true`, allows multiple cache users to share the same segment (e.g. - multiple methods using the same cache storage container). Default to `false`. + - `constructor` - a class or a prototype function. - - One (and only one) of `engine` or `provider` is required per configuration object. + - `options` - (optional) a settings object passed as-is to the `constructor` with the following: + + - `partition` - (optional) string used to isolate cached data. Defaults to `'hapi-cache'`. + - other constructor-specific options passed to the `constructor` on instantiation. + + - `shared` - if `true`, allows multiple cache users to share the same segment (e.g. + multiple methods using the same cache storage container). Default to `false`. + + - One (and only one) of `engine` or `provider` is required per configuration object. #### `server.options.compression` @@ -178,42 +181,44 @@ Default value: none. Options passed to the [**mimos**](https://hapi.dev/family/mimos/api) module when generating the mime database used by the server (and accessed via [`server.mime`](#server.mime)): - `override` - an object hash that is merged into the built in mime information specified [here](https://github.com/jshttp/mime-db). Each key value pair represents a single mime object. Each override value must contain: - - `key` - the lower-cased mime-type string (e.g. `'application/javascript'`). - - `value` - an object following the specifications outlined [here](https://github.com/jshttp/mime-db#data-structure). Additional values include: - - `type` - specify the `type` value of result objects, defaults to `key`. + - `key` - the lower-cased mime-type string (e.g. `'application/javascript'`). + + - `value` - an object following the specifications outlined [here](https://github.com/jshttp/mime-db#data-structure). Additional values include: + + - `type` - specify the `type` value of result objects, defaults to `key`. - - `predicate` - method with signature `function(mime)` when this mime type is found in the database, this function will execute to allows customizations. + - `predicate` - method with signature `function(mime)` when this mime type is found in the database, this function will execute to allows customizations. ```js const options = { - mime: { - override: { - 'node/module': { - source: 'iana', - compressible: true, - extensions: ['node', 'module', 'npm'], - type: 'node/module', - }, - 'application/javascript': { - source: 'iana', - charset: 'UTF-8', - compressible: true, - extensions: ['js', 'javascript'], - type: 'text/javascript', - }, - 'text/html': { - predicate: function (mime) { - if (someCondition) { - mime.foo = 'test'; - } else { - mime.foo = 'bar'; - } - return mime; + mime: { + override: { + 'node/module': { + source: 'iana', + compressible: true, + extensions: ['node', 'module', 'npm'], + type: 'node/module', + }, + 'application/javascript': { + source: 'iana', + charset: 'UTF-8', + compressible: true, + extensions: ['js', 'javascript'], + type: 'text/javascript', + }, + 'text/html': { + predicate: function (mime) { + if (someCondition) { + mime.foo = 'test'; + } else { + mime.foo = 'bar'; + } + return mime; + }, + }, }, - }, }, - }, }; ``` @@ -271,9 +276,9 @@ Sets a query parameters parser method using the signature `function(query)` wher const Qs = require('qs'); const options = { - query: { - parser: (query) => Qs.parse(query), - }, + query: { + parser: (query) => Qs.parse(query), + }, }; ``` @@ -346,7 +351,7 @@ const server = Hapi.server(); server.app.key = 'value'; const handler = function (request, h) { - return request.server.app.key; // 'value' + return request.server.app.key; // 'value' }; ``` @@ -362,21 +367,21 @@ object returned from its implementation function. const server = Hapi.server({ port: 80 }); const scheme = function (server, options) { - return { - api: { - settings: { - x: 5, - }, - }, - authenticate: function (request, h) { - const authorization = request.headers.authorization; - if (!authorization) { - throw Boom.unauthorized(null, 'Custom'); - } + return { + api: { + settings: { + x: 5, + }, + }, + authenticate: function (request, h) { + const authorization = request.headers.authorization; + if (!authorization) { + throw Boom.unauthorized(null, 'Custom'); + } - return h.authenticated({ credentials: { user: 'john' } }); - }, - }; + return h.authenticated({ credentials: { user: 'john' } }); + }, + }; }; server.auth.scheme('custom', scheme); @@ -410,7 +415,7 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const success = function () { - return this.response({ status: 'ok' }); + return this.response({ status: 'ok' }); }; server.decorate('toolkit', 'success', success); @@ -442,25 +447,25 @@ application events logged with [`server.log()`](#server.log()). The `'log'` event handler uses the function signature `function(event, tags)` where: - `event` - an object with the following properties: - - `timestamp` - the event timestamp. - - `tags` - an array of tags identifying the event (e.g. `['error', 'http']`). - - `channel` - set to `'internal'` for internally generated events, otherwise `'app'` for events - generated by [`server.log()`](#server.log()). - - `data` - event-specific information. Available when event data was provided and is not an - error. Errors are passed via `error`. - - `error` - the error object related to the event if applicable. Cannot appear together with - `data`. + - `timestamp` - the event timestamp. + - `tags` - an array of tags identifying the event (e.g. `['error', 'http']`). + - `channel` - set to `'internal'` for internally generated events, otherwise `'app'` for events + generated by [`server.log()`](#server.log()). + - `data` - event-specific information. Available when event data was provided and is not an + error. Errors are passed via `error`. + - `error` - the error object related to the event if applicable. Cannot appear together with + `data`. - `tags` - an object where each `event.tag` is a key and the value is `true`. Useful for quick identification of events. ```js server.events.on('log', (event, tags) => { - if (tags.error) { - console.log( - `Server error: ${event.error ? event.error.message : 'unknown'}`, - ); - } + if (tags.error) { + console.log( + `Server error: ${event.error ? event.error.message : 'unknown'}`, + ); + } }); ``` @@ -484,9 +489,9 @@ The `'cachePolicy'` event handler uses the function signature `function(cachePol ```js server.events.on('cachePolicy', (cachePolicy, cache, segment) => { - console.log( - `New cache policy created using cache: ${cache === undefined ? 'default' : cache} and segment: ${segment}`, - ); + console.log( + `New cache policy created using cache: ${cache === undefined ? 'default' : cache} and segment: ${segment}`, + ); }); ``` @@ -500,28 +505,28 @@ The `'request'` event handler uses the function signature `function(request, eve - `request` - the [request object](#request). - `event` - an object with the following properties: - - `timestamp` - the event timestamp. - - `tags` - an array of tags identifying the event (e.g. `['error', 'http']`). - - `channel` - one of - - `'app'` - events generated by [`request.log()`](#request.log()). - - `'error'` - emitted once per request if the response had a `500` status code. - - `'internal'` - internally generated events. - - `request` - the request [identifier](#request.info.id). - - `data` - event-specific information. Available when event data was provided and is not an - error. Errors are passed via `error`. - - `error` - the error object related to the event if applicable. Cannot appear together with - `data`. + - `timestamp` - the event timestamp. + - `tags` - an array of tags identifying the event (e.g. `['error', 'http']`). + - `channel` - one of + - `'app'` - events generated by [`request.log()`](#request.log()). + - `'error'` - emitted once per request if the response had a `500` status code. + - `'internal'` - internally generated events. + - `request` - the request [identifier](#request.info.id). + - `data` - event-specific information. Available when event data was provided and is not an + error. Errors are passed via `error`. + - `error` - the error object related to the event if applicable. Cannot appear together with + `data`. - `tags` - an object where each `event.tag` is a key and the value is `true`. Useful for quick identification of events. ```js server.events.on('request', (request, event, tags) => { - if (tags.error) { - console.log( - `Request ${event.request} error: ${event.error ? event.error.message : 'unknown'}`, - ); - } + if (tags.error) { + console.log( + `Request ${event.request} error: ${event.error ? event.error.message : 'unknown'}`, + ); + } }); ``` @@ -529,10 +534,10 @@ To listen to only one of the channels, use the event criteria object: ```js server.events.on( - { name: 'request', channels: 'error' }, - (request, event, tags) => { - console.log(`Request ${event.request} failed`); - }, + { name: 'request', channels: 'error' }, + (request, event, tags) => { + console.log(`Request ${event.request} failed`); + }, ); ``` @@ -577,7 +582,7 @@ signature `function(request)` where: ```js server.events.on('response', (request) => { - console.log(`Response sent for request: ${request.info.id}`); + console.log(`Response sent for request: ${request.info.id}`); }); ``` @@ -590,7 +595,7 @@ The `'route'` event handler uses the function signature `function(route)` where: ```js server.events.on('route', (route) => { - console.log(`New route added: ${route.path}`); + console.log(`New route added: ${route.path}`); }); ``` @@ -601,7 +606,7 @@ The `'start'` event handler uses the function signature `function()`. ```js server.events.on('start', () => { - console.log('Server started'); + console.log('Server started'); }); ``` @@ -612,7 +617,7 @@ The `'closing'` event handler uses the function signature `function()`. ```js server.events.on('closing', () => { - console.log('Server is closing'); + console.log('Server is closing'); }); ``` @@ -623,7 +628,7 @@ The `'stop'` event handler uses the function signature `function()`. ```js server.events.on('stop', () => { - console.log('Server stopped'); + console.log('Server stopped'); }); ``` @@ -640,9 +645,10 @@ An object containing information about the server where: - `started` - server start timestamp (`0` when stopped). - `port` - the connection port based on the following rules: - - before the server has been started: the configured [`port`](#server.options.port) value. - - after the server has been started: the actual port assigned when no port is configured or was - set to `0`. + + - before the server has been started: the configured [`port`](#server.options.port) value. + - after the server has been started: the actual port assigned when no port is configured or was + set to `0`. - `host` - The [`host`](#server.options.host) configuration value. @@ -650,9 +656,10 @@ An object containing information about the server where: until the server has been started or when using a non TCP port (e.g. UNIX domain socket). - `protocol` - the protocol used: - - `'http'` - HTTP. - - `'https'` - HTTPS. - - `'socket'` - UNIX domain socket or Windows named pipe. + + - `'http'` - HTTP. + - `'https'` - HTTPS. + - `'socket'` - UNIX domain socket or Windows named pipe. - `uri` - a string representing the connection (e.g. 'http://example.com:8080' or 'socket:/unix/domain/socket/path'). Contains the [`uri`](#server.options.uri) value if set, @@ -681,7 +688,7 @@ const server = Hapi.server({ port: 80 }); const io = SocketIO.listen(server.listener); io.sockets.on('connection', (socket) => { - socket.emit({ msg: 'welcome' }); + socket.emit({ msg: 'welcome' }); }); ``` @@ -734,16 +741,16 @@ must not be modified directly but only through the [`mime`](#server.options.mime const Hapi = require('@hapi/hapi'); const options = { - mime: { - override: { - 'node/module': { - source: 'steve', - compressible: false, - extensions: ['node', 'module', 'npm'], - type: 'node/module', - }, + mime: { + override: { + 'node/module': { + source: 'steve', + compressible: false, + extensions: ['node', 'module', 'npm'], + type: 'node/module', + }, + }, }, - }, }; const server = Hapi.server(options); @@ -762,14 +769,14 @@ and the values are the exposed properties by each plugin using ```js exports.plugin = { - name: 'example', - register: function (server, options) { - server.expose('key', 'value'); - server.plugins.example.other = 'other'; - - console.log(server.plugins.example.key); // 'value' - console.log(server.plugins.example.other); // 'other' - }, + name: 'example', + register: function (server, options) { + server.expose('key', 'value'); + server.plugins.example.other = 'other'; + + console.log(server.plugins.example.key); // 'value' + console.log(server.plugins.example.other); // 'other' + }, }; ``` @@ -792,12 +799,14 @@ The `server.realm` object contains: - `modifiers` - when the server object is provided as an argument to the plugin `register()` method, `modifiers` provides the registration preferences passed the [`server.register()`](#server.register()) method and includes: - - `route` - routes preferences: - - `prefix` - the route path prefix used by any calls to [`server.route()`](#server.route()) - from the server. Note that if a prefix is used and the route path is set to `'/'`, the - resulting path will not include the trailing slash. - - `vhost` - the route virtual host settings used by any calls to - [`server.route()`](#server.route()) from the server. + + - `route` - routes preferences: + + - `prefix` - the route path prefix used by any calls to [`server.route()`](#server.route()) + from the server. Note that if a prefix is used and the route path is set to `'/'`, the + resulting path will not include the trailing slash. + - `vhost` - the route virtual host settings used by any calls to + [`server.route()`](#server.route()) from the server. - `parent` - the realm of the parent server object, or `null` for the root server. @@ -809,8 +818,9 @@ The `server.realm` object contains: state. `plugins` is an object where each key is a plugin name and the value is the plugin state. - `settings` - settings overrides: - - `files.relativeTo` - - `bind` + + - `files.relativeTo` + - `bind` The `server.realm` object should be considered read-only and must not be changed directly except for the `plugins` property which can be directly manipulated by each plugin, setting its properties @@ -818,7 +828,7 @@ inside `plugins[name]`. ```js exports.register = function (server, options) { - console.log(server.realm.modifiers.route.prefix); + console.log(server.realm.modifiers.route.prefix); }; ``` @@ -842,9 +852,9 @@ The server configuration object after defaults applied. ```js const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - app: { - key: 'value', - }, + app: { + key: 'value', + }, }); console.log(server.settings.app); // { key: 'value' } @@ -903,9 +913,10 @@ console.log(server.version); // '17.0.0' Sets a default strategy which is applied to every route where: - `options` - one of: - - a string with the default strategy name - - an authentication configuration object using the same format as the - [route `auth` handler options](#route.options.auth). + + - a string with the default strategy name + - an authentication configuration object using the same format as the + [route `auth` handler options](#route.options.auth). Return value: none. @@ -932,11 +943,11 @@ server.auth.strategy('default', 'custom'); server.auth.default('default'); server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return request.auth.credentials.user; - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return request.auth.credentials.user; + }, }); ``` @@ -946,9 +957,9 @@ Registers an authentication scheme where: - `name` - the scheme name. - `scheme` - the method implementing the scheme with signature `function(server, options)` where: - - `server` - a reference to the server object the scheme is added to. Each auth strategy is given its own [`server.realm`](#server.realm) whose parent is the realm of the `server` in the call to [`server.auth.strategy()`](#server.auth.strategy()). - - `options` - (optional) the scheme `options` argument passed to - [`server.auth.strategy()`](#server.auth.strategy()) when instantiation a strategy. + - `server` - a reference to the server object the scheme is added to. Each auth strategy is given its own [`server.realm`](#server.realm) whose parent is the realm of the `server` in the call to [`server.auth.strategy()`](#server.auth.strategy()). + - `options` - (optional) the scheme `options` argument passed to + [`server.auth.strategy()`](#server.auth.strategy()) when instantiation a strategy. Return value: none. @@ -965,8 +976,8 @@ An authentication scheme is an object with the following properties: called for each incoming request configured with the authentication scheme. The method is provided with two special toolkit methods for returning an authenticated or an unauthenticate result: - - [`h.authenticated()`](#h.authenticated()) - indicate request authenticated successfully. - - [`h.unauthenticated()`](#h.unauthenticated()) - indicate request failed to authenticate. + - [`h.authenticated()`](#h.authenticated()) - indicate request authenticated successfully. + - [`h.unauthenticated()`](#h.unauthenticated()) - indicate request failed to authenticate. - `async payload(request, h)` - (optional) a [lifecycle method](#lifecycle-methods) to authenticate the request payload. @@ -976,15 +987,15 @@ An authentication scheme is an object with the following properties: - `async verify(auth)` - (optional) a method used to verify the authentication credentials provided are still valid (e.g. not expired or revoked after the initial authentication) where: - - `auth` - the [`request.auth`](#request.auth) object containing the `credentials` and - `artifacts` objects returned by the scheme's `authenticate()` method. - - the method throws an `Error` when the credentials passed are no longer valid (e.g. expired or - revoked). Note that the method does not have access to the original request, only to the - credentials and artifacts produced by the `authenticate()` method. + - `auth` - the [`request.auth`](#request.auth) object containing the `credentials` and + `artifacts` objects returned by the scheme's `authenticate()` method. + - the method throws an `Error` when the credentials passed are no longer valid (e.g. expired or + revoked). Note that the method does not have access to the original request, only to the + credentials and artifacts produced by the `authenticate()` method. - `options` - (optional) an object with the following keys: - - `payload` - if `true`, requires payload validation as part of the scheme and forbids routes - from disabling payload auth validation. Defaults to `false`. + - `payload` - if `true`, requires payload validation as part of the scheme and forbids routes + from disabling payload auth validation. Defaults to `false`. When the scheme `authenticate()` method implementation throws an error or calls [`h.unauthenticated()`](#h.unauthenticated()), the specifics of the error affect whether additional @@ -1004,17 +1015,17 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const scheme = function (server, options) { - return { - authenticate: function (request, h) { - const req = request.raw.req; - const authorization = req.headers.authorization; - if (!authorization) { - throw Boom.unauthorized(null, 'Custom'); - } - - return h.authenticated({ credentials: { user: 'john' } }); - }, - }; + return { + authenticate: function (request, h) { + const req = request.raw.req; + const authorization = req.headers.authorization; + if (!authorization) { + throw Boom.unauthorized(null, 'Custom'); + } + + return h.authenticated({ credentials: { user: 'john' } }); + }, + }; }; server.auth.scheme('custom', scheme); @@ -1039,14 +1050,14 @@ server.auth.scheme('custom', scheme); server.auth.strategy('default', 'custom'); server.route({ - method: 'GET', - path: '/', - options: { - auth: 'default', - handler: function (request, h) { - return request.auth.credentials.user; + method: 'GET', + path: '/', + options: { + auth: 'default', + handler: function (request, h) { + return request.auth.credentials.user; + }, }, - }, }); ``` @@ -1072,19 +1083,19 @@ server.auth.scheme('custom', scheme); server.auth.strategy('default', 'custom'); server.route({ - method: 'GET', - path: '/', - handler: async function (request, h) { - try { - const { credentials, artifacts } = await request.server.auth.test( - 'default', - request, - ); - return { status: true, user: credentials.name }; - } catch (err) { - return { status: false }; - } - }, + method: 'GET', + path: '/', + handler: async function (request, h) { + try { + const { credentials, artifacts } = await request.server.auth.test( + 'default', + request, + ); + return { status: true, user: credentials.name }; + } catch (err) { + return { status: false }; + } + }, }); ``` @@ -1110,16 +1121,16 @@ server.auth.scheme('custom', scheme); server.auth.strategy('default', 'custom'); server.route({ - method: 'GET', - path: '/', - handler: async function (request, h) { - try { - const credentials = await request.server.auth.verify(request); - return { status: true, user: credentials.name }; - } catch (err) { - return { status: false }; - } - }, + method: 'GET', + path: '/', + handler: async function (request, h) { + try { + const credentials = await request.server.auth.verify(request); + return { status: true, user: credentials.name }; + } catch (err) { + return { status: false }; + } + }, }); ``` @@ -1139,19 +1150,19 @@ Ignored if the method being bound is an arrow function. ```js const handler = function (request, h) { - return this.message; // Or h.context.message + return this.message; // Or h.context.message }; exports.plugin = { - name: 'example', - register: function (server, options) { - const bind = { - message: 'hello', - }; + name: 'example', + register: function (server, options) { + const bind = { + message: 'hello', + }; - server.bind(bind); - server.route({ method: 'GET', path: '/', handler }); - }, + server.bind(bind); + server.route({ method: 'GET', path: '/', handler }); + }, }; ``` @@ -1160,55 +1171,56 @@ exports.plugin = { Provisions a cache segment within the server cache facility where: - `options` - [**catbox** policy](https://hapi.dev/family/catbox/api#policy) configuration where: - - `expiresIn` - relative expiration expressed in the number of milliseconds since the item was - saved in the cache. Cannot be used together with `expiresAt`. - - `expiresAt` - time of day expressed in 24h notation using the 'HH:MM' format, at which point - all cache records expire. Uses local time. Cannot be used together with `expiresIn`. + - `expiresIn` - relative expiration expressed in the number of milliseconds since the item was + saved in the cache. Cannot be used together with `expiresAt`. + + - `expiresAt` - time of day expressed in 24h notation using the 'HH:MM' format, at which point + all cache records expire. Uses local time. Cannot be used together with `expiresIn`. - - `generateFunc` - a function used to generate a new cache item if one is not found in the - cache when calling `get()`. The method's signature is `async function(id, flags)` where: + - `generateFunc` - a function used to generate a new cache item if one is not found in the + cache when calling `get()`. The method's signature is `async function(id, flags)` where: - - `id` - the `id` string or object provided to the `get()` method. - - `flags` - an object used to pass back additional flags to the cache where: - - `ttl` - the cache ttl value in milliseconds. Set to `0` to skip storing in the - cache. Defaults to the cache global policy. + - `id` - the `id` string or object provided to the `get()` method. + - `flags` - an object used to pass back additional flags to the cache where: + - `ttl` - the cache ttl value in milliseconds. Set to `0` to skip storing in the + cache. Defaults to the cache global policy. - - `staleIn` - number of milliseconds to mark an item stored in cache as stale and attempt to - regenerate it when `generateFunc` is provided. Must be less than `expiresIn`. + - `staleIn` - number of milliseconds to mark an item stored in cache as stale and attempt to + regenerate it when `generateFunc` is provided. Must be less than `expiresIn`. - - `staleTimeout` - number of milliseconds to wait before checking if an item is stale. + - `staleTimeout` - number of milliseconds to wait before checking if an item is stale. - - `generateTimeout` - number of milliseconds to wait before returning a timeout error when the - `generateFunc` function takes too long to return a value. When the value is eventually - returned, it is stored in the cache for future requests. Required if `generateFunc` is - present. Set to `false` to disable timeouts which may cause all `get()` requests to get stuck - forever. + - `generateTimeout` - number of milliseconds to wait before returning a timeout error when the + `generateFunc` function takes too long to return a value. When the value is eventually + returned, it is stored in the cache for future requests. Required if `generateFunc` is + present. Set to `false` to disable timeouts which may cause all `get()` requests to get stuck + forever. - - `generateOnReadError` - if `false`, an upstream cache read error will stop the `cache.get()` - method from calling the generate function and will instead pass back the cache error. Defaults - to `true`. + - `generateOnReadError` - if `false`, an upstream cache read error will stop the `cache.get()` + method from calling the generate function and will instead pass back the cache error. Defaults + to `true`. - - `generateIgnoreWriteError` - if `false`, an upstream cache write error when calling - `cache.get()` will be passed back with the generated value when calling. Defaults to `true`. + - `generateIgnoreWriteError` - if `false`, an upstream cache write error when calling + `cache.get()` will be passed back with the generated value when calling. Defaults to `true`. - - `dropOnError` - if `true`, an error or timeout in the `generateFunc` causes the stale value - to be evicted from the cache. Defaults to `true`. + - `dropOnError` - if `true`, an error or timeout in the `generateFunc` causes the stale value + to be evicted from the cache. Defaults to `true`. - - `pendingGenerateTimeout` - number of milliseconds while `generateFunc` call is in progress - for a given id, before a subsequent `generateFunc` call is allowed. Defaults to `0` (no - blocking of concurrent `generateFunc` calls beyond `staleTimeout`). + - `pendingGenerateTimeout` - number of milliseconds while `generateFunc` call is in progress + for a given id, before a subsequent `generateFunc` call is allowed. Defaults to `0` (no + blocking of concurrent `generateFunc` calls beyond `staleTimeout`). - - `cache` - the cache name configured in [`server.cache`](#server.options.cache). Defaults to - the default cache. + - `cache` - the cache name configured in [`server.cache`](#server.options.cache). Defaults to + the default cache. - - `segment` - string segment name, used to isolate cached items within the cache partition. - When called within a plugin, defaults to '!name' where 'name' is the plugin name. When called - within a server method, defaults to '#name' where 'name' is the server method name. Required - when called outside of a plugin. + - `segment` - string segment name, used to isolate cached items within the cache partition. + When called within a plugin, defaults to '!name' where 'name' is the plugin name. When called + within a server method, defaults to '#name' where 'name' is the server method name. Required + when called outside of a plugin. - - `shared` - if `true`, allows multiple cache provisions to share the same segment. Default to - `false`. + - `shared` - if `true`, allows multiple cache provisions to share the same segment. Default to + `false`. Return value: a [**catbox** policy](https://hapi.dev/family/catbox/api#policy) object. @@ -1216,13 +1228,13 @@ Return value: a [**catbox** policy](https://hapi.dev/family/catbox/api#policy) o const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - const cache = server.cache({ - segment: 'countries', - expiresIn: 60 * 60 * 1000, - }); - await cache.set('norway', { capital: 'oslo' }); - const value = await cache.get('norway'); + const server = Hapi.server({ port: 80 }); + const cache = server.cache({ + segment: 'countries', + expiresIn: 60 * 60 * 1000, + }); + await cache.set('norway', { capital: 'oslo' }); + const value = await cache.get('norway'); } ``` @@ -1241,16 +1253,19 @@ to match the state of any other provisioned server cache. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - await server.initialize(); - await server.cache.provision({ - provider: require('@hapi/catbox-memory'), - name: 'countries', - }); - - const cache = server.cache({ cache: 'countries', expiresIn: 60 * 60 * 1000 }); - await cache.set('norway', { capital: 'oslo' }); - const value = await cache.get('norway'); + const server = Hapi.server({ port: 80 }); + await server.initialize(); + await server.cache.provision({ + provider: require('@hapi/catbox-memory'), + name: 'countries', + }); + + const cache = server.cache({ + cache: 'countries', + expiresIn: 60 * 60 * 1000, + }); + await cache.set('norway', { capital: 'oslo' }); + const value = await cache.get('norway'); } ``` @@ -1280,8 +1295,8 @@ Return value: none. const Zlib = require('zlib'); const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 80, - routes: { payload: { compression: { special: { chunkSize: 16 * 1024 } } } }, + port: 80, + routes: { payload: { compression: { special: { chunkSize: 16 * 1024 } } } }, }); server.decoder('special', (options) => Zlib.createGunzip(options)); @@ -1292,25 +1307,26 @@ server.decoder('special', (options) => Zlib.createGunzip(options)); Extends various framework interfaces with custom methods where: - `type` - the interface being decorated. Supported types: - - `'handler'` - adds a new handler type to be used in [routes handlers](#route.options.handler). - - `'request'` - adds methods to the [Request object](#request). - - `'response'` - adds methods to the [Response object](#response-object). - - `'server'` - adds methods to the [Server](#server) object. - - `'toolkit'` - adds methods to the [response toolkit](#response-toolkit). + + - `'handler'` - adds a new handler type to be used in [routes handlers](#route.options.handler). + - `'request'` - adds methods to the [Request object](#request). + - `'response'` - adds methods to the [Response object](#response-object). + - `'server'` - adds methods to the [Server](#server) object. + - `'toolkit'` - adds methods to the [response toolkit](#response-toolkit). - `property` - the object decoration key name or symbol. - `method` - the extension function or other value. - `options` - (optional) supports the following optional settings: - - `apply` - when the `type` is `'request'`, if `true`, the `method` function is invoked using - the signature `function(request)` where `request` is the current request object and the - returned value is assigned as the decoration. - - `extend` - if `true`, overrides an existing decoration. The `method` must be a function with - the signature `function(existing)` where: - - `existing` - is the previously set decoration method value. - - must return the new decoration function or value. - - cannot be used to extend handler decorations. + - `apply` - when the `type` is `'request'`, if `true`, the `method` function is invoked using + the signature `function(request)` where `request` is the current request object and the + returned value is assigned as the decoration. + - `extend` - if `true`, overrides an existing decoration. The `method` must be a function with + the signature `function(existing)` where: + - `existing` - is the previously set decoration method value. + - must return the new decoration function or value. + - cannot be used to extend handler decorations. Return value: none. @@ -1319,17 +1335,17 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const success = function () { - return this.response({ status: 'ok' }); + return this.response({ status: 'ok' }); }; server.decorate('toolkit', 'success', success); server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return h.success(); - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return h.success(); + }, }); ``` @@ -1343,25 +1359,25 @@ When registering a handler decoration, the `method` must be a function using the const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ host: 'localhost', port: 8000 }); + const server = Hapi.server({ host: 'localhost', port: 8000 }); - // Defines new handler for routes on this server + // Defines new handler for routes on this server - const handler = function (route, options) { - return function (request, h) { - return 'new handler: ' + options.msg; + const handler = function (route, options) { + return function (request, h) { + return 'new handler: ' + options.msg; + }; }; - }; - server.decorate('handler', 'test', handler); + server.decorate('handler', 'test', handler); - server.route({ - method: 'GET', - path: '/', - handler: { test: { msg: 'test' } }, - }); + server.route({ + method: 'GET', + path: '/', + handler: { test: { msg: 'test' } }, + }); - await server.start(); + await server.start(); } ``` @@ -1375,18 +1391,18 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ host: 'localhost', port: 8000 }); const handler = function (route, options) { - return function (request, h) { - return 'new handler: ' + options.msg; - }; + return function (request, h) { + return 'new handler: ' + options.msg; + }; }; // Change the default payload processing for this handler handler.defaults = { - payload: { - output: 'stream', - parse: false, - }, + payload: { + output: 'stream', + parse: false, + }, }; server.decorate('handler', 'test', handler); @@ -1399,17 +1415,17 @@ the current plugin to operate (plugins listed must be registered before the serv or started) where: - `dependencies` - one of: - - a single plugin name string. - - an array of plugin name strings. - - an object where each key is a plugin name and each matching value is a - [version range string](https://www.npmjs.com/package/semver) which must match the registered - plugin version. + - a single plugin name string. + - an array of plugin name strings. + - an object where each key is a plugin name and each matching value is a + [version range string](https://www.npmjs.com/package/semver) which must match the registered + plugin version. - `after` - (optional) a function that is called after all the specified dependencies have been registered and before the server starts. The function is only called if the server is initialized or started. The function signature is `async function(server)` where: - - `server` - the server the `dependency()` method was called on. + - `server` - the server the `dependency()` method was called on. Return value: none. @@ -1420,14 +1436,14 @@ function to be called after the other). ```js const after = function (server) { - // Additional plugin registration logic + // Additional plugin registration logic }; exports.plugin = { - name: 'example', - register: function (server, options) { - server.dependency('yar', after); - }, + name: 'example', + register: function (server, options) { + server.dependency('yar', after); + }, }; ``` @@ -1436,12 +1452,12 @@ Dependencies can also be set via the plugin `dependencies` property (does not su ```js exports.plugin = { - name: 'test', - version: '1.0.0', - dependencies: { - yar: '1.x.x', - }, - register: function (server, options) {}, + name: 'test', + version: '1.0.0', + dependencies: { + yar: '1.x.x', + }, + register: function (server, options) {}, }; ``` @@ -1471,8 +1487,8 @@ Return value: none. const Zlib = require('zlib'); const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 80, - routes: { compression: { special: { chunkSize: 16 * 1024 } } }, + port: 80, + routes: { compression: { special: { chunkSize: 16 * 1024 } } }, }); server.encoder('special', (options) => Zlib.createGzip(options)); @@ -1483,24 +1499,26 @@ server.encoder('special', (options) => Zlib.createGzip(options)); Register custom application events where: - `events` - must be one of: - - an event name string. - - an event options object with the following optional keys (unless noted otherwise): - - `name` - the event name string (required). + - an event name string. - - `channels` - a string or array of strings specifying the event channels available. Defaults to no channel restrictions (event updates can specify a channel or not). + - an event options object with the following optional keys (unless noted otherwise): - - `clone` - if `true`, the `data` object passed to [`server.events.emit()`](#server.events.emit()) is cloned before it is passed to the listeners (unless an override specified by each listener). Defaults to `false` (`data` is passed as-is). + - `name` - the event name string (required). - - `spread` - if `true`, the `data` object passed to [`server.event.emit()`](#server.event.emit()) must be an array and the `listener` method is called with each array element passed as a separate argument (unless an override specified by each listener). This should only be used when the emitted data structure is known and predictable. Defaults to `false` (`data` is emitted as a single argument regardless of its type). + - `channels` - a string or array of strings specifying the event channels available. Defaults to no channel restrictions (event updates can specify a channel or not). - - `tags` - if `true` and the `criteria` object passed to [`server.event.emit()`](#server.event.emit()) includes `tags`, the tags are mapped to an object (where each tag string is the key and the value is `true`) which is appended to the arguments list at the end. A configuration override can be set by each listener. Defaults to `false`. + - `clone` - if `true`, the `data` object passed to [`server.events.emit()`](#server.events.emit()) is cloned before it is passed to the listeners (unless an override specified by each listener). Defaults to `false` (`data` is passed as-is). - - `shared` - if `true`, the same event `name` can be registered multiple times where the second registration is ignored. Note that if the registration config is changed between registrations, only the first configuration is used. Defaults to `false` (a duplicate registration will throw an error). + - `spread` - if `true`, the `data` object passed to [`server.event.emit()`](#server.event.emit()) must be an array and the `listener` method is called with each array element passed as a separate argument (unless an override specified by each listener). This should only be used when the emitted data structure is known and predictable. Defaults to `false` (`data` is emitted as a single argument regardless of its type). - - a [**podium**](https://hapi.dev/family/podium/api) emitter object. + - `tags` - if `true` and the `criteria` object passed to [`server.event.emit()`](#server.event.emit()) includes `tags`, the tags are mapped to an object (where each tag string is the key and the value is `true`) which is appended to the arguments list at the end. A configuration override can be set by each listener. Defaults to `false`. - - an array containing any of the above. + - `shared` - if `true`, the same event `name` can be registered multiple times where the second registration is ignored. Note that if the registration config is changed between registrations, only the first configuration is used. Defaults to `false` (a duplicate registration will throw an error). + + - a [**podium**](https://hapi.dev/family/podium/api) emitter object. + + - an array containing any of the above. Return value: none. @@ -1508,10 +1526,10 @@ Return value: none. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - server.event('test'); - server.events.on('test', (update) => console.log(update)); - await server.events.emit('test', 'hello'); + const server = Hapi.server({ port: 80 }); + server.event('test'); + server.events.on('test', (update) => console.log(update)); + await server.events.emit('test', 'hello'); } ``` @@ -1520,11 +1538,12 @@ async function example() { Emits a custom application event to all the subscribed listeners where: - `criteria` - the event update criteria which must be one of: - - the event name string. - - an object with the following optional keys (unless noted otherwise): - - `name` - the event name string (required). - - `channel` - the channel name string. - - `tags` - a tag string or array of tag strings. + + - the event name string. + - an object with the following optional keys (unless noted otherwise): + - `name` - the event name string (required). + - `channel` - the channel name string. + - `tags` - a tag string or array of tag strings. - `data` - the value emitted to the subscribers. If `data` is a function, the function signature is `function()` and it called once to generate (return value) the actual data emitted to the listeners. If no listeners match the event, the `data` function is not invoked. @@ -1536,10 +1555,10 @@ Note that events must be registered before they can be emitted or subscribed to const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - server.event('test'); - server.events.on('test', (update) => console.log(update)); - await server.events.emit('test', 'hello'); // await is optional + const server = Hapi.server({ port: 80 }); + server.event('test'); + server.events.on('test', (update) => console.log(update)); + await server.events.emit('test', 'hello'); // await is optional } ``` @@ -1548,43 +1567,47 @@ async function example() { Subscribe to an event where: - `criteria` - the subscription criteria which must be one of: - - event name string which can be any of the [built-in server events](#server.events) or a - custom application event registered with [`server.event()`](#server.event()). - - - a criteria object with the following optional keys (unless noted otherwise): - - `name` - (required) the event name string. - - - `channels` - a string or array of strings specifying the event channels to subscribe to. - If the event registration specified a list of allowed channels, the `channels` array must - match the allowed channels. If `channels` are specified, event updates without any - channel designation will not be included in the subscription. Defaults to no channels - filter. - - - `clone` - if `true`, the `data` object passed to [`server.event.emit()`](#server.event.emit()) - is cloned before it is passed to the `listener` method. Defaults to the event - registration option (which defaults to `false`). - - - `count` - a positive integer indicating the number of times the `listener` can be called - after which the subscription is automatically removed. A count of `1` is the same as - calling `server.events.once()`. Defaults to no limit. - - - `filter` - the event tags (if present) to subscribe to which can be one of: - - a tag string. - - an array of tag strings. - - an object with the following: - - `tags` - a tag string or array of tag strings. - - `all` - if `true`, all `tags` must be present for the event update to match the - subscription. Defaults to `false` (at least one matching tag). - - `spread` - if `true`, and the `data` object passed to [`server.event.emit()`](#server.event.emit()) - is an array, the `listener` method is called with each array element passed as a separate - argument. This should only be used when the emitted data structure is known and - predictable. Defaults to the event registration option (which defaults to `false`). + - event name string which can be any of the [built-in server events](#server.events) or a + custom application event registered with [`server.event()`](#server.event()). + + - a criteria object with the following optional keys (unless noted otherwise): + + - `name` - (required) the event name string. + + - `channels` - a string or array of strings specifying the event channels to subscribe to. + If the event registration specified a list of allowed channels, the `channels` array must + match the allowed channels. If `channels` are specified, event updates without any + channel designation will not be included in the subscription. Defaults to no channels + filter. + + - `clone` - if `true`, the `data` object passed to [`server.event.emit()`](#server.event.emit()) + is cloned before it is passed to the `listener` method. Defaults to the event + registration option (which defaults to `false`). + + - `count` - a positive integer indicating the number of times the `listener` can be called + after which the subscription is automatically removed. A count of `1` is the same as + calling `server.events.once()`. Defaults to no limit. + + - `filter` - the event tags (if present) to subscribe to which can be one of: + + - a tag string. + - an array of tag strings. + - an object with the following: - - `tags` - if `true` and the `criteria` object passed to [`server.event.emit()`](#server.event.emit()) - includes `tags`, the tags are mapped to an object (where each tag string is the key and - the value is `true`) which is appended to the arguments list at the end. Defaults to the - event registration option (which defaults to `false`). + - `tags` - a tag string or array of tag strings. + - `all` - if `true`, all `tags` must be present for the event update to match the + subscription. Defaults to `false` (at least one matching tag). + + - `spread` - if `true`, and the `data` object passed to [`server.event.emit()`](#server.event.emit()) + is an array, the `listener` method is called with each array element passed as a separate + argument. This should only be used when the emitted data structure is known and + predictable. Defaults to the event registration option (which defaults to `false`). + + - `tags` - if `true` and the `criteria` object passed to [`server.event.emit()`](#server.event.emit()) + includes `tags`, the tags are mapped to an object (where each tag string is the key and + the value is `true`) which is appended to the arguments list at the end. Defaults to the + event registration option (which defaults to `false`). - `listener` - the handler method set to receive event updates. The function signature depends on the event argument, and the `spread` and `tags` options. @@ -1595,10 +1618,10 @@ Return value: none. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - server.event('test'); - server.events.on('test', (update) => console.log(update)); - await server.events.emit('test', 'hello'); + const server = Hapi.server({ port: 80 }); + server.event('test'); + server.events.on('test', (update) => console.log(update)); + await server.events.emit('test', 'hello'); } ``` @@ -1612,11 +1635,11 @@ Return value: none. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - server.event('test'); - server.events.once('test', (update) => console.log(update)); - await server.events.emit('test', 'hello'); - await server.events.emit('test', 'hello'); // Ignored + const server = Hapi.server({ port: 80 }); + server.event('test'); + server.events.once('test', (update) => console.log(update)); + await server.events.emit('test', 'hello'); + await server.events.emit('test', 'hello'); // Ignored } ``` @@ -1630,11 +1653,11 @@ Return value: a promise that resolves when the event is emitted. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - server.event('test'); - const pending = server.events.once('test'); - await server.events.emit('test', 'hello'); - const update = await pending; + const server = Hapi.server({ port: 80 }); + server.event('test'); + const pending = server.events.once('test'); + await server.events.emit('test', 'hello'); + const update = await pending; } ``` @@ -1645,10 +1668,10 @@ Used within a plugin to expose a property via [`server.plugins[name]`](#server.p - `key` - the key assigned ([`server.plugins[name][key]`](#server.plugins)). - `value` - the value assigned. - `options` - optional settings: - - `scope` - controls how to handle the presence of a plugin scope in the name (e.g. `@hapi/test`): - - `false` - the scope is removed (e.g. `@hapi/test` is changed to `test` under `server.plugins`). This is the default. - - `true` - the scope is retained as-is (e.g. `@hapi/test` is used as `server.plugins['@hapi/test']`). - - `'underscore'` - the scope is rewritten (e.g. `@hapi/test` is used as `server.plugins.hapi__test`). + - `scope` - controls how to handle the presence of a plugin scope in the name (e.g. `@hapi/test`): + - `false` - the scope is removed (e.g. `@hapi/test` is changed to `test` under `server.plugins`). This is the default. + - `true` - the scope is retained as-is (e.g. `@hapi/test` is used as `server.plugins['@hapi/test']`). + - `'underscore'` - the scope is rewritten (e.g. `@hapi/test` is used as `server.plugins.hapi__test`). Return value: none. @@ -1672,10 +1695,10 @@ Return value: none. ```js exports.plugin = { - name: 'example', - register: function (server, options) { - server.expose({ util: () => console.log('something') }); - }, + name: 'example', + register: function (server, options) { + server.expose({ util: () => console.log('something') }); + }, }; ``` @@ -1690,40 +1713,45 @@ Registers an extension function in one of the [request lifecycle](#request-lifec points where: - `events` - an object or array of objects with the following: - - `type` - (required) the extension point event name. The available extension points include - the [request extension points](#request-lifecycle) as well as the following server extension - points: - - `'onPreStart'` - called before the connection listeners are started. - - `'onPostStart'` - called after the connection listeners are started. - - `'onPreStop'` - called before the connection listeners are stopped. - - `'onPostStop'` - called after the connection listeners are stopped. - - `method` - (required) a function or an array of functions to be executed at a specified point - during request processing. The required extension function signature is: - - server extension points: `async function(server)` where: - - `server` - the server object. - - `this` - the object provided via `options.bind` or the current active context set - with [`server.bind()`](#server.bind()). + - `type` - (required) the extension point event name. The available extension points include + the [request extension points](#request-lifecycle) as well as the following server extension + points: + + - `'onPreStart'` - called before the connection listeners are started. + - `'onPostStart'` - called after the connection listeners are started. + - `'onPreStop'` - called before the connection listeners are stopped. + - `'onPostStop'` - called after the connection listeners are stopped. + + - `method` - (required) a function or an array of functions to be executed at a specified point + during request processing. The required extension function signature is: + + - server extension points: `async function(server)` where: - - request extension points: a [lifecycle method](#lifecycle-methods). + - `server` - the server object. + - `this` - the object provided via `options.bind` or the current active context set + with [`server.bind()`](#server.bind()). - - `options` - (optional) an object with the following: - - `before` - a string or array of strings of plugin names this method must execute before - (on the same event). Otherwise, extension methods are executed in the order added. + - request extension points: a [lifecycle method](#lifecycle-methods). - - `after` - a string or array of strings of plugin names this method must execute after (on - the same event). Otherwise, extension methods are executed in the order added. + - `options` - (optional) an object with the following: - - `bind` - a context object passed back to the provided method (via `this`) when called. - Ignored if the method is an arrow function. + - `before` - a string or array of strings of plugin names this method must execute before + (on the same event). Otherwise, extension methods are executed in the order added. - - `sandbox` - if set to `'plugin'` when adding a [request extension points](#request-lifecycle) - the extension is only added to routes defined by the current plugin. Not allowed when - configuring route-level extensions, or when adding server extensions. Defaults to - `'server'` which applies to any route added to the server the extension is added to. + - `after` - a string or array of strings of plugin names this method must execute after (on + the same event). Otherwise, extension methods are executed in the order added. - - `timeout` - number of milliseconds to wait for the `method` to complete before returning - a timeout error. Defaults to no timeout. + - `bind` - a context object passed back to the provided method (via `this`) when called. + Ignored if the method is an arrow function. + + - `sandbox` - if set to `'plugin'` when adding a [request extension points](#request-lifecycle) + the extension is only added to routes defined by the current plugin. Not allowed when + configuring route-level extensions, or when adding server extensions. Defaults to + `'server'` which applies to any route added to the server the extension is added to. + + - `timeout` - number of milliseconds to wait for the `method` to complete before returning + a timeout error. Defaults to no timeout. Return value: none. @@ -1731,22 +1759,22 @@ Return value: none. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); + const server = Hapi.server({ port: 80 }); - server.ext({ - type: 'onRequest', - method: function (request, h) { - // Change all requests to '/test' + server.ext({ + type: 'onRequest', + method: function (request, h) { + // Change all requests to '/test' - request.setUrl('/test'); - return h.continue; - }, - }); + request.setUrl('/test'); + return h.continue; + }, + }); - server.route({ method: 'GET', path: '/test', handler: () => 'ok' }); - await server.start(); + server.route({ method: 'GET', path: '/test', handler: () => 'ok' }); + await server.start(); - // All requests will get routed to '/test' + // All requests will get routed to '/test' } ``` @@ -1762,19 +1790,19 @@ Return value: a promise if `method` is omitted, otherwise `undefined`. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); + const server = Hapi.server({ port: 80 }); - server.ext('onRequest', function (request, h) { - // Change all requests to '/test' + server.ext('onRequest', function (request, h) { + // Change all requests to '/test' - request.setUrl('/test'); - return h.continue; - }); + request.setUrl('/test'); + return h.continue; + }); - server.route({ method: 'GET', path: '/test', handler: () => 'ok' }); - await server.start(); + server.route({ method: 'GET', path: '/test', handler: () => 'ok' }); + await server.start(); - // All requests will get routed to '/test' + // All requests will get routed to '/test' } ``` @@ -1797,8 +1825,8 @@ const Hapi = require('@hapi/hapi'); const Hoek = require('@hapi/hoek'); async function example() { - const server = Hapi.server({ port: 80 }); - await server.initialize(); + const server = Hapi.server({ port: 80 }); + await server.initialize(); } ``` @@ -1812,66 +1840,69 @@ The method utilizes the [**shot**](https://hapi.dev/family/shot/api) module for injections, with some additional options and response properties: - `options` - can be assigned a string with the requested URI, or an object with: - - `method` - (optional) the request HTTP method (e.g. `'POST'`). Defaults to `'GET'`. - - `url` - (required) the request URL. If the URI includes an authority - (e.g. `'example.com:8080'`), it is used to automatically set an HTTP 'Host' header, unless - one was specified in `headers`. + - `method` - (optional) the request HTTP method (e.g. `'POST'`). Defaults to `'GET'`. - - `authority` - (optional) a string specifying the HTTP 'Host' header value. Only used if 'Host' - is not specified in `headers` and the `url` does not include an authority component. - Default is inferred from runtime server information. + - `url` - (required) the request URL. If the URI includes an authority + (e.g. `'example.com:8080'`), it is used to automatically set an HTTP 'Host' header, unless + one was specified in `headers`. - - `headers` - (optional) an object with optional request headers where each key is the header - name and the value is the header content. Defaults to no additions to the default **shot** - headers. + - `authority` - (optional) a string specifying the HTTP 'Host' header value. Only used if 'Host' + is not specified in `headers` and the `url` does not include an authority component. + Default is inferred from runtime server information. - - `payload` - (optional) an string, buffer or object containing the request payload. In case of - an object it will be converted to a string for you. Defaults to no payload. Note that payload - processing defaults to `'application/json'` if no 'Content-Type' header provided. + - `headers` - (optional) an object with optional request headers where each key is the header + name and the value is the header content. Defaults to no additions to the default **shot** + headers. - - `auth` - (optional) an object containing parsed authentication credentials where: - - `strategy` - (required) the authentication strategy name matching the provided - credentials. + - `payload` - (optional) an string, buffer or object containing the request payload. In case of + an object it will be converted to a string for you. Defaults to no payload. Note that payload + processing defaults to `'application/json'` if no 'Content-Type' header provided. - - `credentials` - (required) a credentials object containing authentication information. - The `credentials` are used to bypass the default authentication strategies, and are - validated directly as if they were received via an authentication scheme. + - `auth` - (optional) an object containing parsed authentication credentials where: - - `artifacts` - (optional) an artifacts object containing authentication artifact - information. The `artifacts` are used to bypass the default authentication strategies, - and are validated directly as if they were received via an authentication scheme. - Defaults to no artifacts. + - `strategy` - (required) the authentication strategy name matching the provided + credentials. - - `payload` - (optional) disables payload authentication when set to false. - Only required when an authentication strategy requires payload authentication. - Defaults to `true`. + - `credentials` - (required) a credentials object containing authentication information. + The `credentials` are used to bypass the default authentication strategies, and are + validated directly as if they were received via an authentication scheme. - - `app` - (optional) sets the initial value of `request.app`, defaults to `{}`. + - `artifacts` - (optional) an artifacts object containing authentication artifact + information. The `artifacts` are used to bypass the default authentication strategies, + and are validated directly as if they were received via an authentication scheme. + Defaults to no artifacts. - - `plugins` - (optional) sets the initial value of `request.plugins`, defaults to `{}`. + - `payload` - (optional) disables payload authentication when set to false. + Only required when an authentication strategy requires payload authentication. + Defaults to `true`. - - `allowInternals` - (optional) allows access to routes with `config.isInternal` set to `true`. - Defaults to `false`. + - `app` - (optional) sets the initial value of `request.app`, defaults to `{}`. - - `remoteAddress` - (optional) sets the remote address for the incoming connection. + - `plugins` - (optional) sets the initial value of `request.plugins`, defaults to `{}`. - - `simulate` - (optional) an object with options used to simulate client request stream - conditions for testing: - - `error` - if `true`, emits an `'error'` event after payload transmission (if any). + - `allowInternals` - (optional) allows access to routes with `config.isInternal` set to `true`. Defaults to `false`. - - `close` - if `true`, emits a `'close'` event after payload transmission (if any). - Defaults to `false`. + - `remoteAddress` - (optional) sets the remote address for the incoming connection. + + - `simulate` - (optional) an object with options used to simulate client request stream + conditions for testing: - - `end` - if `false`, does not end the stream. Defaults to `true`. + - `error` - if `true`, emits an `'error'` event after payload transmission (if any). + Defaults to `false`. - - `split` - indicates whether the request payload will be split into chunks. Defaults to - `undefined`, meaning payload will not be chunked. + - `close` - if `true`, emits a `'close'` event after payload transmission (if any). + Defaults to `false`. - - `validate` - (optional) if `false`, the `options` inputs are not validated. This is - recommended for run-time usage of `inject()` to make it perform faster where input validation - can be tested separately. + - `end` - if `false`, does not end the stream. Defaults to `true`. + + - `split` - indicates whether the request payload will be split into chunks. Defaults to + `undefined`, meaning payload will not be chunked. + + - `validate` - (optional) if `false`, the `options` inputs are not validated. This is + recommended for run-time usage of `inject()` to make it perform faster where input validation + can be tested separately. Return value: a response object with the following properties: @@ -1884,8 +1915,9 @@ Return value: a response object with the following properties: - `rawPayload` - the raw response payload buffer. - `raw` - an object with the injection request and response objects: - - `req` - the simulated node request object. - - `res` - the simulated node response object. + + - `req` - the simulated node request object. + - `res` - the simulated node response object. - `result` - the raw handler response (e.g. when not a stream or a view) before it is serialized for transmission. If not available, the value is set to `payload`. Useful for @@ -1901,11 +1933,11 @@ the `data` property. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - server.route({ method: 'GET', path: '/', handler: () => 'Success!' }); + const server = Hapi.server({ port: 80 }); + server.route({ method: 'GET', path: '/', handler: () => 'Success!' }); - const res = await server.inject('/'); - console.log(res.result); // 'Success!' + const res = await server.inject('/'); + console.log(res.result); // 'Success!' } ``` @@ -1934,9 +1966,9 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); server.events.on('log', (event, tags) => { - if (tags.error) { - console.log(event); - } + if (tags.error) { + console.log(event); + } }); server.log(['test', 'error'], 'Test event'); @@ -1954,12 +1986,12 @@ Return value: the [route information](#request.route) if found, otherwise `null` const Hapi = require('@hapi/hapi'); const server = Hapi.server(); server.route({ - method: 'GET', - path: '/', - options: { - id: 'root', - handler: () => 'ok', - }, + method: 'GET', + path: '/', + options: { + id: 'root', + handler: () => 'ok', + }, }); const route = server.lookup('root'); @@ -1979,12 +2011,12 @@ Return value: the [route information](#request.route) if found, otherwise `null` const Hapi = require('@hapi/hapi'); const server = Hapi.server(); server.route({ - method: 'GET', - path: '/', - options: { - id: 'root', - handler: () => 'ok', - }, + method: 'GET', + path: '/', + options: { + id: 'root', + handler: () => 'ok', + }, }); const route = server.match('get', '/'); @@ -1997,26 +2029,27 @@ Registers a [server method](#server.methods) where: - `name` - a unique method name used to invoke the method via [`server.methods[name]`](#server.method). - `method` - the method function with a signature `async function(...args, [flags])` where: - - `...args` - the method function arguments (can be any number of arguments or none). - - `flags` - when caching is enabled, an object used to set optional method result flags. This - parameter is provided automatically and can only be accessed/modified within the method - function. It cannot be passed as an argument. - - `ttl` - `0` if result is valid but cannot be cached. Defaults to cache policy. + - `...args` - the method function arguments (can be any number of arguments or none). + - `flags` - when caching is enabled, an object used to set optional method result flags. This + parameter is provided automatically and can only be accessed/modified within the method + function. It cannot be passed as an argument. + - `ttl` - `0` if result is valid but cannot be cached. Defaults to cache policy. - `options` - (optional) configuration object: - - `bind` - a context object passed back to the method function (via `this`) when called. - Defaults to active context (set via [`server.bind()`](#server.bind()) when the method is - registered. Ignored if the method is an arrow function. - - `cache` - the same cache configuration used in [`server.cache()`](#server.cache()). The - `generateTimeout` option is required, and the `generateFunc` options is not allowed. + - `bind` - a context object passed back to the method function (via `this`) when called. + Defaults to active context (set via [`server.bind()`](#server.bind()) when the method is + registered. Ignored if the method is an arrow function. + + - `cache` - the same cache configuration used in [`server.cache()`](#server.cache()). The + `generateTimeout` option is required, and the `generateFunc` options is not allowed. - - `generateKey` - a function used to generate a unique key (for caching) from the arguments - passed to the method function (the `flags` argument is not passed as input). The server - will automatically generate a unique key if the function's arguments are all of types - `'string'`, `'number'`, or `'boolean'`. However if the method uses other types of arguments, - a key generation function must be provided which takes the same arguments as the function and - returns a unique string (or `null` if no key can be generated). + - `generateKey` - a function used to generate a unique key (for caching) from the arguments + passed to the method function (the `flags` argument is not passed as input). The server + will automatically generate a unique key if the function's arguments are all of types + `'string'`, `'number'`, or `'boolean'`. However if the method uses other types of arguments, + a key generation function must be provided which takes the same arguments as the function and + returns a unique string (or `null` if no key can be generated). Return value: none. @@ -2032,14 +2065,14 @@ Simple arguments example: const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); + const server = Hapi.server({ port: 80 }); - const add = (a, b) => a + b; - server.method('sum', add, { - cache: { expiresIn: 2000, generateTimeout: 100 }, - }); + const add = (a, b) => a + b; + server.method('sum', add, { + cache: { expiresIn: 2000, generateTimeout: 100 }, + }); - console.log(await server.methods.sum(4, 5)); // 9 + console.log(await server.methods.sum(4, 5)); // 9 } ``` @@ -2049,25 +2082,25 @@ Object argument example: const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); + const server = Hapi.server({ port: 80 }); - const addArray = function (array) { - let sum = 0; - array.forEach((item) => { - sum += item; - }); + const addArray = function (array) { + let sum = 0; + array.forEach((item) => { + sum += item; + }); - return sum; - }; + return sum; + }; - const options = { - cache: { expiresIn: 2000, generateTimeout: 100 }, - generateKey: (array) => array.join(','), - }; + const options = { + cache: { expiresIn: 2000, generateTimeout: 100 }, + generateKey: (array) => array.join(','), + }; - server.method('sumObj', addArray, options); + server.method('sumObj', addArray, options); - console.log(await server.methods.sumObj([5, 6])); // 11 + console.log(await server.methods.sumObj([5, 6])); // 11 } ``` @@ -2077,26 +2110,27 @@ Registers a server method function as described in [`server.method()`](#server.m configuration object where: - `methods` - an object or an array of objects where each one contains: - - `name` - the method name. - - `method` - the method function. - - `options` - (optional) settings. + + - `name` - the method name. + - `method` - the method function. + - `options` - (optional) settings. Return value: none. ```js const add = function (a, b) { - return a + b; + return a + b; }; server.method({ - name: 'sum', - method: add, - options: { - cache: { - expiresIn: 2000, - generateTimeout: 100, + name: 'sum', + method: add, + options: { + cache: { + expiresIn: 2000, + generateTimeout: 100, + }, }, - }, }); ``` @@ -2116,17 +2150,17 @@ after it has been set. ```js exports.plugin = { - name: 'example', - register: function (server, options) { - // Assuming the Inert plugin was registered previously - - server.path(__dirname + '../static'); - server.route({ - path: '/file', - method: 'GET', - handler: { file: './test.html' }, - }); - }, + name: 'example', + register: function (server, options) { + // Assuming the Inert plugin was registered previously + + server.path(__dirname + '../static'); + server.route({ + path: '/file', + method: 'GET', + handler: { file: './test.html' }, + }); + }, }; ``` @@ -2135,34 +2169,37 @@ exports.plugin = { Registers a plugin where: - `plugins` - one or an array of: - - a [plugin object](#plugins). - - an object with the following: - - `plugin` - a [plugin object](#plugins). - - `options` - (optional) options passed to the plugin during registration. - - `once`, `routes` - (optional) plugin-specific registration options as defined below. + - a [plugin object](#plugins). + + - an object with the following: + - `plugin` - a [plugin object](#plugins). + - `options` - (optional) options passed to the plugin during registration. + - `once`, `routes` - (optional) plugin-specific registration options as defined below. - `options` - (optional) registration options (different from the options passed to the registration function): - - `once` - if `true`, subsequent registrations of the same plugin are skipped without error. - Cannot be used with plugin options. Defaults to `false`. - If not set to `true`, an error will be thrown the second time a plugin is registered on the server. - - `routes` - modifiers applied to each route added by the plugin: - - `prefix` - string added as prefix to any route path (must begin with `'/'`). If a plugin - registers a child plugin the `prefix` is passed on to the child or is added in front of - the child-specific prefix. - - `vhost` - virtual host string (or array of strings) applied to every route. The - outer-most `vhost` overrides the any nested configuration. + - `once` - if `true`, subsequent registrations of the same plugin are skipped without error. + Cannot be used with plugin options. Defaults to `false`. + If not set to `true`, an error will be thrown the second time a plugin is registered on the server. + + - `routes` - modifiers applied to each route added by the plugin: + + - `prefix` - string added as prefix to any route path (must begin with `'/'`). If a plugin + registers a child plugin the `prefix` is passed on to the child or is added in front of + the child-specific prefix. + - `vhost` - virtual host string (or array of strings) applied to every route. The + outer-most `vhost` overrides the any nested configuration. Return value: none. ```js async function example() { - await server.register({ - plugin: require('plugin_name'), - options: { message: 'hello' }, - }); + await server.register({ + plugin: require('plugin_name'), + options: { message: 'hello' }, + }); } ``` @@ -2172,35 +2209,36 @@ Adds a route where: - `route` - a route configuration object or an array of configuration objects where each object contains: - - `path` - (required) the absolute path used to match incoming requests (must begin with '/'). - Incoming requests are compared to the configured paths based on the server's - [`router`](#server.options.router) configuration. The path can include named parameters - enclosed in `{}` which will be matched against literal values in the request as described in - [Path parameters](#path-parameters). - - - `method` - (required) the HTTP method. Typically one of 'GET', 'POST', 'PUT', 'PATCH', - 'DELETE', or 'OPTIONS'. Any HTTP method is allowed, except for 'HEAD'. Use `'*'` to match - against any HTTP method (only when an exact match was not found, and any match with a - specific method will be given a higher priority over a wildcard match). Can be assigned an - array of methods which has the same result as adding the same route with different methods - manually. - - - `vhost` - (optional) a domain string or an array of domain strings for limiting the route to - only requests with a matching host header field. Matching is done against the hostname part - of the header only (excluding the port). Defaults to all hosts. - - - `handler` - (required when [`handler`](#route.options.handler) is not set) the route - handler function called to generate the response after successful authentication and - validation. - - - `options` - additional [route options](#route-options). The `options` value can be an object - or a function that returns an object using the signature `function(server)` where `server` is - the server the route is being added to and `this` is bound to the current - [realm](#server.realm)'s `bind` option. - - - `rules` - route custom rules object. The object is passed to each rules processor registered - with [`server.rules()`](#server.rules()). Cannot be used if - [`route.options.rules`](#route.options.rules) is defined. + + - `path` - (required) the absolute path used to match incoming requests (must begin with '/'). + Incoming requests are compared to the configured paths based on the server's + [`router`](#server.options.router) configuration. The path can include named parameters + enclosed in `{}` which will be matched against literal values in the request as described in + [Path parameters](#path-parameters). + + - `method` - (required) the HTTP method. Typically one of 'GET', 'POST', 'PUT', 'PATCH', + 'DELETE', or 'OPTIONS'. Any HTTP method is allowed, except for 'HEAD'. Use `'*'` to match + against any HTTP method (only when an exact match was not found, and any match with a + specific method will be given a higher priority over a wildcard match). Can be assigned an + array of methods which has the same result as adding the same route with different methods + manually. + + - `vhost` - (optional) a domain string or an array of domain strings for limiting the route to + only requests with a matching host header field. Matching is done against the hostname part + of the header only (excluding the port). Defaults to all hosts. + + - `handler` - (required when [`handler`](#route.options.handler) is not set) the route + handler function called to generate the response after successful authentication and + validation. + + - `options` - additional [route options](#route-options). The `options` value can be an object + or a function that returns an object using the signature `function(server)` where `server` is + the server the route is being added to and `this` is bound to the current + [realm](#server.realm)'s `bind` option. + + - `rules` - route custom rules object. The object is passed to each rules processor registered + with [`server.rules()`](#server.rules()). Cannot be used if + [`route.options.rules`](#route.options.rules) is defined. Return value: none. @@ -2218,10 +2256,10 @@ server.route({ method: 'GET', path: '/status', handler: () => 'ok' }); // Handler in config const user = { - cache: { expiresIn: 5000 }, - handler: function (request, h) { - return { name: 'John' }; - }, + cache: { expiresIn: 5000 }, + handler: function (request, h) { + return { name: 'John' }; + }, }; server.route({ method: 'GET', path: '/user', options: user }); @@ -2229,20 +2267,20 @@ server.route({ method: 'GET', path: '/user', options: user }); // An array of routes server.route([ - { - method: 'GET', - path: '/1', - handler: function (request, h) { - return 'ok'; + { + method: 'GET', + path: '/1', + handler: function (request, h) { + return 'ok'; + }, }, - }, - { - method: 'GET', - path: '/2', - handler: function (request, h) { - return 'ok'; + { + method: 'GET', + path: '/2', + handler: function (request, h) { + return 'ok'; + }, }, - }, ]); ``` @@ -2266,17 +2304,17 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const getAlbum = function (request, h) { - return ( - 'You asked for ' + - (request.params.song ? request.params.song + ' from ' : '') + - request.params.album - ); + return ( + 'You asked for ' + + (request.params.song ? request.params.song + ' from ' : '') + + request.params.album + ); }; server.route({ - path: '/{album}/{song?}', - method: 'GET', - handler: getAlbum, + path: '/{album}/{song?}', + method: 'GET', + handler: getAlbum, }); ``` @@ -2290,14 +2328,14 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const getPerson = function (request, h) { - const nameParts = request.params.name.split('/'); - return { first: nameParts[0], last: nameParts[1] }; + const nameParts = request.params.name.split('/'); + return { first: nameParts[0], last: nameParts[1] }; }; server.route({ - path: '/person/{name*2}', // Matches '/person/john/doe' - method: 'GET', - handler: getPerson, + path: '/person/{name*2}', // Matches '/person/john/doe' + method: 'GET', + handler: getPerson, }); ``` @@ -2330,7 +2368,7 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const handler = function (request, h) { - return h.response('The page was not found').code(404); + return h.response('The page was not found').code(404); }; server.route({ method: '*', path: '/{p*}', handler }); @@ -2341,17 +2379,17 @@ server.route({ method: '*', path: '/{p*}', handler }); Defines a route rules processor for converting route rules object into route configuration where: - `processor` - a function using the signature `function(rules, info)` where: - - `rules` - the [custom object](#route.options.rules) defined in your routes configuration for you to use its values. - - `info` - an object with the following properties: - - `method` - the route method. - - `path` - the route path. - - `vhost` - the route virtual host (if any defined). - - returns a route config object. + - `rules` - the [custom object](#route.options.rules) defined in your routes configuration for you to use its values. + - `info` - an object with the following properties: + - `method` - the route method. + - `path` - the route path. + - `vhost` - the route virtual host (if any defined). + - returns a route config object. - `options` - optional settings: - - `validate` - rules object validation: - - `schema` - **joi** schema. - - `options` - optional **joi** validation options. Defaults to `{ allowUnknown: true }`. + - `validate` - rules object validation: + - `schema` - **joi** schema. + - `options` - optional **joi** validation options. Defaults to `{ allowUnknown: true }`. Note that the root server and each plugin server instance can only register one rules processor. If a route is added after the rules are configured, it will not include the rules config. Routes @@ -2361,62 +2399,62 @@ processor if they overlap. Similarly, the route's own config overrides the confi ```js const validateSchema = { - auth: Joi.string(), - myCustomPre: Joi.array().min(2).items(Joi.string()), - payload: Joi.object(), + auth: Joi.string(), + myCustomPre: Joi.array().min(2).items(Joi.string()), + payload: Joi.object(), }; const myPreHelper = (name) => { - return { - method: (request, h) => { - return `hello ${name || 'world'}!`; - }, - assign: 'myPreHelper', - }; + return { + method: (request, h) => { + return `hello ${name || 'world'}!`; + }, + assign: 'myPreHelper', + }; }; const processor = (rules, info) => { - if (!rules) { - return null; - } + if (!rules) { + return null; + } - const options = {}; + const options = {}; - if (rules.auth) { - options.auth = { - strategy: rules.auth, - validate: { - entity: 'user', - }, - }; - } + if (rules.auth) { + options.auth = { + strategy: rules.auth, + validate: { + entity: 'user', + }, + }; + } - if (rules.myCustomPre) { - options.pre = [myPreHelper(...rules.myCustomPre)]; - } + if (rules.myCustomPre) { + options.pre = [myPreHelper(...rules.myCustomPre)]; + } - if (rules.payload) { - options.validate = { payload: Joi.object(rules.payload) }; - } + if (rules.payload) { + options.validate = { payload: Joi.object(rules.payload) }; + } - return options; + return options; }; server.rules(processor, { - validate: { schema: validateSchema }, + validate: { schema: validateSchema }, }); server.route({ - method: 'GET', - path: '/', - rules: { - auth: 'jwt', - myCustomPre: ['arg1', 'arg2'], - payload: { a: Joi.boolean(), b: Joi.string() }, - }, - options: { - id: 'my-route', - }, + method: 'GET', + path: '/', + rules: { + auth: 'jwt', + myCustomPre: ['arg1', 'arg2'], + payload: { a: Joi.boolean(), b: Joi.string() }, + }, + options: { + id: 'my-route', + }, }); ``` @@ -2441,9 +2479,9 @@ will be emitted and no extension points invoked. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - await server.start(); - console.log('Server started at: ' + server.info.uri); + const server = Hapi.server({ port: 80 }); + await server.start(); + console.log('Server started at: ' + server.info.uri); } ``` @@ -2455,51 +2493,57 @@ across multiple requests. Registers a cookie definitions where: - `name` - the cookie name string. - `options` - are the optional cookie settings: - - `ttl` - time-to-live in milliseconds. Defaults to `null` (session time-life - cookies are deleted when the browser is closed). - - `isSecure` - sets the 'Secure' flag. Defaults to `true`. + - `ttl` - time-to-live in milliseconds. Defaults to `null` (session time-life - cookies are deleted when the browser is closed). - - `isHttpOnly` - sets the 'HttpOnly' flag. Defaults to `true`. + - `isSecure` - sets the 'Secure' flag. Defaults to `true`. - - `isSameSite` - sets the ['SameSite' flag](https://www.owasp.org/index.php/SameSite). The value must be one of: - - `false` - no flag. - - `'Strict'` - sets the value to `'Strict'` (this is the default value). - - `'Lax'` - sets the value to `'Lax'`. - - `'None'` - sets the value to `'None'`. + - `isHttpOnly` - sets the 'HttpOnly' flag. Defaults to `true`. - - `path` - the path scope. Defaults to `null` (no path). + - `isSameSite` - sets the ['SameSite' flag](https://www.owasp.org/index.php/SameSite). The value must be one of: - - `domain` - the domain scope. Defaults to `null` (no domain). + - `false` - no flag. + - `'Strict'` - sets the value to `'Strict'` (this is the default value). + - `'Lax'` - sets the value to `'Lax'`. + - `'None'` - sets the value to `'None'`. - - `autoValue` - if present and the cookie was not received from the client or explicitly set by the route handler, the cookie is automatically added to the response with the provided value. The value can be a function with signature `async function(request)` where: - - `request` - the [request object](#request). + - `path` - the path scope. Defaults to `null` (no path). + + - `domain` - the domain scope. Defaults to `null` (no domain). - - `encoding` - encoding performs on the provided value before serialization. Options are: - - `'none'` - no encoding. When used, the cookie value must be a string. This is the default value. - - `'base64'` - string value is encoded using Base64. - - `'base64json'` - object value is JSON-stringified then encoded using Base64. - - `'form'` - object value is encoded using the _x-www-form-urlencoded_ method. - - `'iron'` - Encrypts and sign the value using [**iron**](https://hapi.dev/family/iron/api). + - `autoValue` - if present and the cookie was not received from the client or explicitly set by the route handler, the cookie is automatically added to the response with the provided value. The value can be a function with signature `async function(request)` where: - - `sign` - an object used to calculate an HMAC for cookie integrity validation. This does not provide privacy, only a mean to verify that the cookie value was generated by the server. Redundant when `'iron'` encoding is used. Options are: - - `integrity` - algorithm options. Defaults to [`require('iron').defaults.integrity`](https://hapi.dev/family/iron/api/#options). - - `password` - password used for HMAC key generation (must be at least 32 characters long). + - `request` - the [request object](#request). - - `password` - password used for `'iron'` encoding (must be at least 32 characters long). + - `encoding` - encoding performs on the provided value before serialization. Options are: - - `iron` - options for `'iron'` encoding. Defaults to [`require('iron').defaults`](https://hapi.dev/family/iron/api/#options). + - `'none'` - no encoding. When used, the cookie value must be a string. This is the default value. + - `'base64'` - string value is encoded using Base64. + - `'base64json'` - object value is JSON-stringified then encoded using Base64. + - `'form'` - object value is encoded using the _x-www-form-urlencoded_ method. + - `'iron'` - Encrypts and sign the value using [**iron**](https://hapi.dev/family/iron/api). - - `ignoreErrors` - if `true`, errors are ignored and treated as missing cookies. + - `sign` - an object used to calculate an HMAC for cookie integrity validation. This does not provide privacy, only a mean to verify that the cookie value was generated by the server. Redundant when `'iron'` encoding is used. Options are: - - `clearInvalid` - if `true`, automatically instruct the client to remove invalid cookies. Defaults to `false`. + - `integrity` - algorithm options. Defaults to [`require('iron').defaults.integrity`](https://hapi.dev/family/iron/api/#options). + - `password` - password used for HMAC key generation (must be at least 32 characters long). - - `strictHeader` - if `false`, allows any cookie value including values in violation of [RFC 6265](https://tools.ietf.org/html/rfc6265). Defaults to `true`. + - `password` - password used for `'iron'` encoding (must be at least 32 characters long). - - `passThrough` - used by proxy plugins (e.g. [**h2o2**](https://hapi.dev/family/h2o2/api)). + - `iron` - options for `'iron'` encoding. Defaults to [`require('iron').defaults`](https://hapi.dev/family/iron/api/#options). - - `contextualize` - a function using the signature `async function(definition, request)` used to override a request-specific cookie settings where: - - `definition` - a copy of the `options` to be used for formatting the cookie that can be manipulated by the function to customize the request cookie header. Note that changing the `definition.contextualize` property will be ignored. - - `request` - the current request object. + - `ignoreErrors` - if `true`, errors are ignored and treated as missing cookies. + + - `clearInvalid` - if `true`, automatically instruct the client to remove invalid cookies. Defaults to `false`. + + - `strictHeader` - if `false`, allows any cookie value including values in violation of [RFC 6265](https://tools.ietf.org/html/rfc6265). Defaults to `true`. + + - `passThrough` - used by proxy plugins (e.g. [**h2o2**](https://hapi.dev/family/h2o2/api)). + + - `contextualize` - a function using the signature `async function(definition, request)` used to override a request-specific cookie settings where: + + - `definition` - a copy of the `options` to be used for formatting the cookie that can be manipulated by the function to customize the request cookie header. Note that changing the `definition.contextualize` property will be ignored. + - `request` - the current request object. Return value: none. @@ -2513,23 +2557,23 @@ const server = Hapi.server({ port: 80 }); // Set cookie definition server.state('session', { - ttl: 24 * 60 * 60 * 1000, // One day - isSecure: true, - path: '/', - encoding: 'base64json', + ttl: 24 * 60 * 60 * 1000, // One day + isSecure: true, + path: '/', + encoding: 'base64json', }); // Set state in route handler const handler = function (request, h) { - let session = request.state.session; - if (!session) { - session = { user: 'joe' }; - } + let session = request.state.session; + if (!session) { + session = { user: 'joe' }; + } - session.last = Date.now(); + session.last = Date.now(); - return h.response('Success').state('session', session); + return h.response('Success').state('session', session); }; ``` @@ -2546,12 +2590,12 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); server.events.on( - { name: 'request', channels: 'internal' }, - (request, event, tags) => { - if (tags.error && tags.state) { - console.error(event); - } - }, + { name: 'request', channels: 'internal' }, + (request, event, tags) => { + if (tags.error && tags.state) { + console.error(event); + } + }, ); ``` @@ -2567,9 +2611,9 @@ Formats an HTTP 'Set-Cookie' header based on the [`server.options.state`](#serve where: - `cookies` - a single object or an array of object where each contains: - - `name` - the cookie name. - - `value` - the cookie value. - - `options` - cookie configuration to override the server settings. + - `name` - the cookie name. + - `value` - the cookie value. + - `options` - cookie configuration to override the server settings. Return value: a header string. @@ -2593,14 +2637,15 @@ Stops the server's listener by refusing to accept any new connections or request connections will continue until closed or timeout), where: - `options` - (optional) object with: - - `timeout` - sets the timeout in millisecond before forcefully terminating any open - connections that arrived before the server stopped accepting new connections. The timeout - only applies to waiting for existing connections to close, and not to any - [`'onPreStop'` or `'onPostStop'` server extensions](#server.ext.args()) which can - delay or block the stop operation indefinitely. Ignored if - [`server.options.operations.cleanStop`](#server.options.operations) is `false`. Note that if - the server is set as a [group controller](#server.control()), the timeout is per controlled - server and the controlling server itself. Defaults to `5000` (5 seconds). + + - `timeout` - sets the timeout in millisecond before forcefully terminating any open + connections that arrived before the server stopped accepting new connections. The timeout + only applies to waiting for existing connections to close, and not to any + [`'onPreStop'` or `'onPostStop'` server extensions](#server.ext.args()) which can + delay or block the stop operation indefinitely. Ignored if + [`server.options.operations.cleanStop`](#server.options.operations) is `false`. Note that if + the server is set as a [group controller](#server.control()), the timeout is per controlled + server and the controlling server itself. Defaults to `5000` (5 seconds). Return value: none. @@ -2608,10 +2653,10 @@ Return value: none. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - await server.start(); - await server.stop({ timeout: 60 * 1000 }); - console.log('Server stopped'); + const server = Hapi.server({ port: 80 }); + await server.start(); + await server.stop({ timeout: 60 * 1000 }); + console.log('Server stopped'); } ``` @@ -2651,8 +2696,8 @@ const Hapi = require('@hapi/hapi'); const Joi = require('joi'); async function example() { - const server = Hapi.server({ port: 80 }); - server.validator(Joi); + const server = Hapi.server({ port: 80 }); + server.validator(Joi); } ``` @@ -2774,9 +2819,10 @@ response. Caching can be customized using an object with the following options: - `privacy` - determines the privacy flag included in client-side caching using the 'Cache-Control' header. Values are: - - `'default'` - no privacy flag. - - `'public'` - mark the response as suitable for public caching. - - `'private'` - mark the response as suitable only for private caching. + + - `'default'` - no privacy flag. + - `'public'` - mark the response as suitable for public caching. + - `'private'` - mark the response as suitable only for private caching. - `expiresIn` - relative expiration expressed in the number of milliseconds since the item was saved in the cache. Cannot be used together with `expiresAt`. @@ -2870,7 +2916,7 @@ The route handler function performs the main business logic of the route and set ```js const handler = function (request, h) { - return 'success'; + return 'success'; }; ``` @@ -3005,12 +3051,14 @@ Overrides payload processing for multipart requests. Value can be one of: - `true` - enable multipart processing using the [`output`](#route.options.payload.output) value. - an object with the following required options: - - `output` - same as the [`output`](#route.options.payload.output) option with an additional - value option: - - `annotated` - wraps each multipart part in an object with the following keys: - - `headers` - the part headers. - - `filename` - the part file name. - - `payload` - the processed part payload. + + - `output` - same as the [`output`](#route.options.payload.output) option with an additional + value option: + - `annotated` - wraps each multipart part in an object with the following keys: + + - `headers` - the part headers. + - `filename` - the part file name. + - `payload` - the processed part payload. #### `route.options.payload.output` @@ -3117,12 +3165,12 @@ to execute but will be ignored once completed. - an array containing the elements listed below, which are executed in parallel. - an object with: - - `method` - a [lifecycle method](#lifecycle-methods). - - `assign` - key name used to assign the response of the method to in [`request.pre`](#request.pre) - and [`request.preResponses`](#request.preResponses). - - `failAction` - A [`failAction` value](#lifecycle-failAction) which determine what to do when - a pre-handler method throws an error. If `assign` is specified and the `failAction` setting - is not `'error'`, the error will be assigned. + - `method` - a [lifecycle method](#lifecycle-methods). + - `assign` - key name used to assign the response of the method to in [`request.pre`](#request.pre) + and [`request.preResponses`](#request.preResponses). + - `failAction` - A [`failAction` value](#lifecycle-failAction) which determine what to do when + a pre-handler method throws an error. If `assign` is specified and the `failAction` setting + is not `'error'`, the error will be assigned. - a method function - same as including an object with a single `method` key. @@ -3138,33 +3186,33 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const pre1 = function (request, h) { - return 'Hello'; + return 'Hello'; }; const pre2 = function (request, h) { - return 'World'; + return 'World'; }; const pre3 = function (request, h) { - return request.pre.m1 + ' ' + request.pre.m2; + return request.pre.m1 + ' ' + request.pre.m2; }; server.route({ - method: 'GET', - path: '/', - options: { - pre: [ - [ - // m1 and m2 executed in parallel - { method: pre1, assign: 'm1' }, - { method: pre2, assign: 'm2' }, - ], - { method: pre3, assign: 'm3' }, - ], - handler: function (request, h) { - return request.pre.m3 + '!\n'; + method: 'GET', + path: '/', + options: { + pre: [ + [ + // m1 and m2 executed in parallel + { method: pre1, assign: 'm1' }, + { method: pre2, assign: 'm2' }, + ], + { method: pre3, assign: 'm3' }, + ], + handler: function (request, h) { + return request.pre.m3 + '!\n'; + }, }, - }, }); ``` @@ -3235,14 +3283,15 @@ The default response payload validation rules (for all non-error responses) expr the validation function. - a validation function using the signature `async function(value, options)` where: - - `value` - the pending response payload. - - `options` - The [`options`](#route.options.response.options) along with the request context - (`{ headers, params, query, payload, state, app, auth }`). - - if the function returns a value and [`modify`](#route.options.response.modify) is `true`, - the value is used as the new response. If the original response is an error, the return - value is used to override the original error `output.payload`. If an error is thrown, the - error is processed according to [`failAction`](#route.options.response.failAction). + - `value` - the pending response payload. + - `options` - The [`options`](#route.options.response.options) along with the request context + (`{ headers, params, query, payload, state, app, auth }`). + + - if the function returns a value and [`modify`](#route.options.response.modify) is `true`, + the value is used as the new response. If the original response is an error, the return + value is used to override the original error `output.payload`. If an error is thrown, the + error is processed according to [`failAction`](#route.options.response.failAction). #### `route.options.response.status` @@ -3268,38 +3317,40 @@ Sets common security headers. To enable, set `security` to `true` or to an objec following options: - `hsts` - controls the 'Strict-Transport-Security' header, where: - - `true` - the header will be set to `max-age=15768000`. This is the default value. - - a number - the maxAge parameter will be set to the provided value. - - an object with the following fields: - - `maxAge` - the max-age portion of the header, as a number. Default is `15768000`. - - `includeSubDomains` - a boolean specifying whether to add the `includeSubDomains` flag to - the header. - - `preload` - a boolean specifying whether to add the `'preload'` flag (used to submit - domains inclusion in Chrome's HTTP Strict Transport Security (HSTS) preload list) to the - header. + - `true` - the header will be set to `max-age=15768000`. This is the default value. + - a number - the maxAge parameter will be set to the provided value. + + - an object with the following fields: + - `maxAge` - the max-age portion of the header, as a number. Default is `15768000`. + - `includeSubDomains` - a boolean specifying whether to add the `includeSubDomains` flag to + the header. + - `preload` - a boolean specifying whether to add the `'preload'` flag (used to submit + domains inclusion in Chrome's HTTP Strict Transport Security (HSTS) preload list) to the + header. - `xframe` - controls the 'X-Frame-Options' header, where: - - `true` - the header will be set to `'DENY'`. This is the default value. - - `'deny'` - the headers will be set to `'DENY'`. - - `'sameorigin'` - the headers will be set to `'SAMEORIGIN'`. - - - an object for specifying the 'allow-from' rule, where: - - `rule` - one of: - - `'deny'` - - `'sameorigin'` - - `'allow-from'` - - `source` - when `rule` is `'allow-from'` this is used to form the rest of the header, - otherwise this field is ignored. If `rule` is `'allow-from'` but `source` is unset, the - rule will be automatically changed to `'sameorigin'`. + + - `true` - the header will be set to `'DENY'`. This is the default value. + - `'deny'` - the headers will be set to `'DENY'`. + - `'sameorigin'` - the headers will be set to `'SAMEORIGIN'`. + + - an object for specifying the 'allow-from' rule, where: + - `rule` - one of: + - `'deny'` + - `'sameorigin'` + - `'allow-from'` + - `source` - when `rule` is `'allow-from'` this is used to form the rest of the header, + otherwise this field is ignored. If `rule` is `'allow-from'` but `source` is unset, the + rule will be automatically changed to `'sameorigin'`. - `xss` - boolean that controls the 'X-XSS-PROTECTION' header for Internet Explorer. Defaults to `true` which sets the header to equal `'1; mode=block'`. - - Note: this setting can create a security vulnerability in versions of Internet Exploere below - 8, as well as unpatched versions of IE8. See [here](https://hackademix.net/2009/11/21/ies-xss-filter-creates-xss-vulnerabilities/) - and [here](https://technet.microsoft.com/library/security/ms10-002) for more information. If - you actively support old versions of IE, it may be wise to explicitly set this flag to - `false`. + - Note: this setting can create a security vulnerability in versions of Internet Exploere below + 8, as well as unpatched versions of IE8. See [here](https://hackademix.net/2009/11/21/ies-xss-filter-creates-xss-vulnerabilities/) + and [here](https://technet.microsoft.com/library/security/ms10-002) for more information. If + you actively support old versions of IE, it may be wise to explicitly set this flag to + `false`. - `noOpen` - boolean controlling the 'X-Download-Options' header for Internet Explorer, preventing downloads from executing in your context. Defaults to `true` setting the header to `'noopen'`. @@ -3308,16 +3359,16 @@ following options: the header to its only and default option, `'nosniff'`. - `referrer` - controls the ['Referrer-Policy'](https://www.w3.org/TR/referrer-policy/) header, which has the following possible values. - - `false` - the 'Referrer-Policy' header will not be sent to clients with responses. This is the default value. - - `''` - instructs clients that the Referrer-Policy will be [defined elsewhere](https://www.w3.org/TR/referrer-policy/#referrer-policy-empty-string), such as in a meta html tag. - - `'no-referrer'` - instructs clients to never include the referrer header when making requests. - - `'no-referrer-when-downgrade'` - instructs clients to never include the referrer when navigating from HTTPS to HTTP. - - `'same-origin'` - instructs clients to only include the referrer on the current site origin. - - `'origin'` - instructs clients to include the referrer but strip off path information so that the value is the current origin only. - - `'strict-origin'` - same as `'origin'` but instructs clients to omit the referrer header when going from HTTPS to HTTP. - - `'origin-when-cross-origin'` - instructs clients to include the full path in the referrer header for same-origin requests but only the origin components of the URL are included for cross origin requests. - - `'strict-origin-when-cross-origin'` - same as `'origin-when-cross-origin'` but the client is instructed to omit the referrer when going from HTTPS to HTTP. - - `'unsafe-url'` - instructs the client to always include the referrer with the full URL. + - `false` - the 'Referrer-Policy' header will not be sent to clients with responses. This is the default value. + - `''` - instructs clients that the Referrer-Policy will be [defined elsewhere](https://www.w3.org/TR/referrer-policy/#referrer-policy-empty-string), such as in a meta html tag. + - `'no-referrer'` - instructs clients to never include the referrer header when making requests. + - `'no-referrer-when-downgrade'` - instructs clients to never include the referrer when navigating from HTTPS to HTTP. + - `'same-origin'` - instructs clients to only include the referrer on the current site origin. + - `'origin'` - instructs clients to include the referrer but strip off path information so that the value is the current origin only. + - `'strict-origin'` - same as `'origin'` but instructs clients to omit the referrer header when going from HTTPS to HTTP. + - `'origin-when-cross-origin'` - instructs clients to include the full path in the referrer header for same-origin requests but only the origin components of the URL are included for cross origin requests. + - `'strict-origin-when-cross-origin'` - same as `'origin-when-cross-origin'` but the client is instructed to omit the referrer when going from HTTPS to HTTP. + - `'unsafe-url'` - instructs the client to always include the referrer with the full URL. ### `route.options.state` @@ -3393,12 +3444,13 @@ Validation rules for incoming request headers: - a [**joi**](https://joi.dev/api) validation object. - a validation function using the signature `async function(value, options)` where: - - `value` - the [`request.headers`](#request.headers) object containing the request headers. - - `options` - [`options`](#route.options.validate.options). - - if a value is returned, the value is used as the new [`request.headers`](#request.headers) - value and the original value is stored in [`request.orig.headers`](#request.orig). - Otherwise, the headers are left unchanged. If an error is thrown, the error is handled - according to [`failAction`](#route.options.validate.failAction). + + - `value` - the [`request.headers`](#request.headers) object containing the request headers. + - `options` - [`options`](#route.options.validate.options). + - if a value is returned, the value is used as the new [`request.headers`](#request.headers) + value and the original value is stored in [`request.orig.headers`](#request.orig). + Otherwise, the headers are left unchanged. If an error is thrown, the error is handled + according to [`failAction`](#route.options.validate.failAction). Note that all header field names must be in lowercase to match the headers normalized by node. @@ -3437,13 +3489,14 @@ extracting any parameters, and storing them in [`request.params`](#request.param - a [**joi**](https://joi.dev/api) validation object. - a validation function using the signature `async function(value, options)` where: - - `value` - the [`request.params`](#request.params) object containing the request path - parameters. - - `options` - [`options`](#route.options.validate.options). - - if a value is returned, the value is used as the new [`request.params`](#request.params) - value and the original value is stored in [`request.orig.params`](#request.orig). Otherwise, - the path parameters are left unchanged. If an error is thrown, the error is handled according - to [`failAction`](#route.options.validate.failAction). + + - `value` - the [`request.params`](#request.params) object containing the request path + parameters. + - `options` - [`options`](#route.options.validate.options). + - if a value is returned, the value is used as the new [`request.params`](#request.params) + value and the original value is stored in [`request.orig.params`](#request.orig). Otherwise, + the path parameters are left unchanged. If an error is thrown, the error is handled according + to [`failAction`](#route.options.validate.failAction). Note that failing to match the validation rules to the route path parameters definition will cause all requests to fail. @@ -3459,18 +3512,19 @@ Validation rules for incoming request payload (request body), where: - `false` - no payload allowed. - a [**joi**](https://joi.dev/api) validation object. - - Note that empty payloads are represented by a `null` value. If a validation schema is - provided and empty payload are allowed, the schema must be explicitly defined by setting the - rule to a **joi** schema with `null` allowed (e.g. - `Joi.object({ /* keys here */ }).allow(null)`). + - Note that empty payloads are represented by a `null` value. If a validation schema is + provided and empty payload are allowed, the schema must be explicitly defined by setting the + rule to a **joi** schema with `null` allowed (e.g. + `Joi.object({ /* keys here */ }).allow(null)`). - a validation function using the signature `async function(value, options)` where: - - `value` - the [`request.payload`](#request.payload) object containing the request payload. - - `options` - [`options`](#route.options.validate.options). - - if a value is returned, the value is used as the new [`request.payload`](#request.payload) - value and the original value is stored in [`request.orig.payload`](#request.orig). Otherwise, - the payload is left unchanged. If an error is thrown, the error is handled according to - [`failAction`](#route.options.validate.failAction). + + - `value` - the [`request.payload`](#request.payload) object containing the request payload. + - `options` - [`options`](#route.options.validate.options). + - if a value is returned, the value is used as the new [`request.payload`](#request.payload) + value and the original value is stored in [`request.orig.payload`](#request.orig). Otherwise, + the payload is left unchanged. If an error is thrown, the error is handled according to + [`failAction`](#route.options.validate.failAction). Note that validating large payloads and modifying them will cause memory duplication of the payload (since the original is kept), as well as the significant performance cost of validating large @@ -3491,13 +3545,14 @@ Validation rules for incoming request URI query component (the key-value part of - a [**joi**](https://joi.dev/api) validation object. - a validation function using the signature `async function(value, options)` where: - - `value` - the [`request.query`](#request.query) object containing the request query - parameters. - - `options` - [`options`](#route.options.validate.options). - - if a value is returned, the value is used as the new [`request.query`](#request.query) value - and the original value is stored in [`request.orig.query`](#request.orig). Otherwise, the - query parameters are left unchanged. If an error is thrown, the error is handled according to - [`failAction`](#route.options.validate.failAction). + + - `value` - the [`request.query`](#request.query) object containing the request query + parameters. + - `options` - [`options`](#route.options.validate.options). + - if a value is returned, the value is used as the new [`request.query`](#request.query) value + and the original value is stored in [`request.orig.query`](#request.orig). Otherwise, the + query parameters are left unchanged. If an error is thrown, the error is handled according to + [`failAction`](#route.options.validate.failAction). Note that changes to the query parameters will not be reflected in [`request.url`](#request.url). @@ -3515,12 +3570,13 @@ Validation rules for incoming cookies. The `cookie` header is parsed and decoded - a [**joi**](https://joi.dev/api) validation object. - a validation function using the signature `async function(value, options)` where: - - `value` - the [`request.state`](#request.state) object containing all parsed cookie values. - - `options` - [`options`](#route.options.validate.options). - - if a value is returned, the value is used as the new [`request.state`](#request.state) value - and the original value is stored in [`request.orig.state`](#request.orig). Otherwise, the - cookie values are left unchanged. If an error is thrown, the error is handled according to - [`failAction`](#route.options.validate.failAction). + + - `value` - the [`request.state`](#request.state) object containing all parsed cookie values. + - `options` - [`options`](#route.options.validate.options). + - if a value is returned, the value is used as the new [`request.state`](#request.state) value + and the original value is stored in [`request.orig.state`](#request.orig). Otherwise, the + cookie values are left unchanged. If an error is thrown, the error is handled according to + [`failAction`](#route.options.validate.failAction). #### `route.options.validate.validator` @@ -3537,110 +3593,110 @@ server and route configurations, but the order in which the applicable steps are the same. The following is the complete list of steps a request can go through: - _**onRequest**_ - - always called when `onRequest` extensions exist. - - the request path and method can be modified via the [`request.setUrl()`](#request.setUrl()) and [`request.setMethod()`](#request.setMethod()) methods. Changes to the request path or method will impact how the request is routed and can be used for rewrite rules. - - [`request.payload`](#request.payload) is `undefined` and can be overridden with any non-`undefined` value to bypass payload processing. - - [`request.route`](#request.route) is unassigned. - - [`request.url`](#request.url) can be `null` if the incoming request path is invalid. - - [`request.path`](#request.path) can be an invalid path. - - JSONP configuration is ignored for any response returned from the extension point since no - route is matched yet and the JSONP configuration is unavailable. + - always called when `onRequest` extensions exist. + - the request path and method can be modified via the [`request.setUrl()`](#request.setUrl()) and [`request.setMethod()`](#request.setMethod()) methods. Changes to the request path or method will impact how the request is routed and can be used for rewrite rules. + - [`request.payload`](#request.payload) is `undefined` and can be overridden with any non-`undefined` value to bypass payload processing. + - [`request.route`](#request.route) is unassigned. + - [`request.url`](#request.url) can be `null` if the incoming request path is invalid. + - [`request.path`](#request.path) can be an invalid path. + - JSONP configuration is ignored for any response returned from the extension point since no + route is matched yet and the JSONP configuration is unavailable. - _**Route lookup**_ - - lookup based on `request.path` and `request.method`. - - skips to _**onPreResponse**_ if no route is found or if the path violates the HTTP - specification. + - lookup based on `request.path` and `request.method`. + - skips to _**onPreResponse**_ if no route is found or if the path violates the HTTP + specification. - _**JSONP processing**_ - - based on the route [`jsonp`](#route.options.jsonp) option. - - parses JSONP parameter from [`request.query`](#request.query). - - skips to _**Response validation**_ on error. + - based on the route [`jsonp`](#route.options.jsonp) option. + - parses JSONP parameter from [`request.query`](#request.query). + - skips to _**Response validation**_ on error. - _**Cookies processing**_ - - based on the route [`state`](#route.options.state) option. - - error handling based on [`failAction`](#route.options.state.failAction). + - based on the route [`state`](#route.options.state) option. + - error handling based on [`failAction`](#route.options.state.failAction). - _**onPreAuth**_ - - called regardless if authentication is performed. + - called regardless if authentication is performed. - _**Authentication**_ - - based on the route [`auth`](#route.options.auth) option. + - based on the route [`auth`](#route.options.auth) option. - _**Payload processing**_ - - based on the route [`payload`](#route.options.payload) option and if [`request.payload`](#request.payload) has not been overridden in _**onRequest**_. - - error handling based on [`failAction`](#route.options.payload.failAction). + - based on the route [`payload`](#route.options.payload) option and if [`request.payload`](#request.payload) has not been overridden in _**onRequest**_. + - error handling based on [`failAction`](#route.options.payload.failAction). - _**Payload authentication**_ - - based on the route [`auth`](#route.options.auth) option. + - based on the route [`auth`](#route.options.auth) option. - _**onCredentials**_ - - called only if authentication is performed. + - called only if authentication is performed. - _**Authorization**_ - - based on the route authentication [`access`](#route.options.auth.access) option. + - based on the route authentication [`access`](#route.options.auth.access) option. - _**onPostAuth**_ - - called regardless if authentication is performed. + - called regardless if authentication is performed. - _**Headers validation**_ - - based on the route [`validate.headers`](#route.options.validate.headers) option. - - error handling based on [`failAction`](#route.options.validate.failAction). + - based on the route [`validate.headers`](#route.options.validate.headers) option. + - error handling based on [`failAction`](#route.options.validate.failAction). - _**Path parameters validation**_ - - based on the route [`validate.params`](#route.options.validate.params) option. - - error handling based on [`failAction`](#route.options.validate.failAction). + - based on the route [`validate.params`](#route.options.validate.params) option. + - error handling based on [`failAction`](#route.options.validate.failAction). - _**JSONP cleanup**_ - - based on the route [`jsonp`](#route.options.jsonp) option. - - remove the JSONP parameter from [`request.query`](#request.query). + - based on the route [`jsonp`](#route.options.jsonp) option. + - remove the JSONP parameter from [`request.query`](#request.query). - _**Query validation**_ - - based on the route [`validate.query`](#route.options.validate.query) option. - - error handling based on [`failAction`](#route.options.validate.failAction). + - based on the route [`validate.query`](#route.options.validate.query) option. + - error handling based on [`failAction`](#route.options.validate.failAction). - _**Payload validation**_ - - based on the route [`validate.payload`](#route.options.validate.payload) option. - - error handling based on [`failAction`](#route.options.validate.failAction). + - based on the route [`validate.payload`](#route.options.validate.payload) option. + - error handling based on [`failAction`](#route.options.validate.failAction). - _**State validation**_ - - based on the route [`validate.state`](#route.options.validate.state) option. - - error handling based on [`failAction`](#route.options.validate.failAction). + - based on the route [`validate.state`](#route.options.validate.state) option. + - error handling based on [`failAction`](#route.options.validate.failAction). - _**onPreHandler**_ - _**Pre-handler methods**_ - - based on the route [`pre`](#route.options.pre) option. - - error handling based on each pre-handler method's `failAction` setting. + - based on the route [`pre`](#route.options.pre) option. + - error handling based on each pre-handler method's `failAction` setting. - _**Route handler**_ - - executes the route [`handler`](#route.options.handler). + - executes the route [`handler`](#route.options.handler). - _**onPostHandler**_ - - the response contained in [`request.response`](#request.response) may be modified (but not - assigned a new value). To return a different response type (for example, replace an error - with an HTML response), return a new response value. + - the response contained in [`request.response`](#request.response) may be modified (but not + assigned a new value). To return a different response type (for example, replace an error + with an HTML response), return a new response value. - _**Response validation**_ - - error handling based on [`failAction`](#route.options.response.failAction). + - error handling based on [`failAction`](#route.options.response.failAction). - _**onPreResponse**_ - - always called, unless the request is aborted. - - the response contained in [`request.response`](#request.response) may be modified (but not - assigned a new value). To return a different response type (for example, replace an error - with an HTML response), return a new response value. Note that any errors generated will not - be passed back to _**onPreResponse**_ to prevent an infinite loop. + - always called, unless the request is aborted. + - the response contained in [`request.response`](#request.response) may be modified (but not + assigned a new value). To return a different response type (for example, replace an error + with an HTML response), return a new response value. Note that any errors generated will not + be passed back to _**onPreResponse**_ to prevent an infinite loop. - _**Response transmission**_ - - may emit a [`'request'` event](#server.events.request) on the `'error'` channel. + - may emit a [`'request'` event](#server.events.request) on the `'error'` channel. - _**Finalize request**_ - - emits `'response'` event. + - emits `'response'` event. - _**onPostResponse**_ - - return value is ignored since the response is already set. - - emits a [`'request'` event](#server.events.request) on the `'error'` channel if an error is returned. - - all extension handlers are executed even if some error. - - note that since the handlers are executed in serial (each is `await`ed), care must be taken to avoid blocking execution if other extension handlers expect to be called immediately when the response is sent. If an _**onPostResponse**_ handler is performing IO, it should defer that activity to another tick and return immediately (either without a return value or without a promise that is solve to resolve). + - return value is ignored since the response is already set. + - emits a [`'request'` event](#server.events.request) on the `'error'` channel if an error is returned. + - all extension handlers are executed even if some error. + - note that since the handlers are executed in serial (each is `await`ed), care must be taken to avoid blocking execution if other extension handlers expect to be called immediately when the response is sent. If an _**onPostResponse**_ handler is performing IO, it should defer that activity to another tick and return immediately (either without a return value or without a promise that is solve to resolve). ### Lifecycle methods @@ -3665,39 +3721,39 @@ error response is sent. The return value must be one of: - Plain value: - - `null` - - string - - number - - boolean + - `null` + - string + - number + - boolean - `Buffer` object - `Error` object - - plain `Error`. - - a [`Boom`](https://hapi.dev/family/boom/api) object. + - plain `Error`. + - a [`Boom`](https://hapi.dev/family/boom/api) object. - `Stream` object - - must be compatible with the "streams2" API and not be in `objectMode`. - - if the stream object has a `statusCode` property, that status code will be used as - the default response code based on the [`passThrough`](#response.settings.passThrough) - option. - - if the stream object has a `headers` property, the headers will be included in the response - based on the [`passThrough`](#response.settings.passThrough) option. - - if the stream object has a function property `setCompressor(compressor)` and the response - passes through a compressor, a reference to the compressor stream will be passed to the - response stream via this method. + - must be compatible with the "streams2" API and not be in `objectMode`. + - if the stream object has a `statusCode` property, that status code will be used as + the default response code based on the [`passThrough`](#response.settings.passThrough) + option. + - if the stream object has a `headers` property, the headers will be included in the response + based on the [`passThrough`](#response.settings.passThrough) option. + - if the stream object has a function property `setCompressor(compressor)` and the response + passes through a compressor, a reference to the compressor stream will be passed to the + response stream via this method. - any object or array - - must not include circular references. + - must not include circular references. - a toolkit signal: - - [`h.abandon`](#h.abandon) - abort processing the request. - - [`h.close`](#h.close) - abort processing the request and call `end()` to ensure the response - is closed. - - [`h.continue`](#h.continue) - continue processing the request lifecycle without changing the - response. + - [`h.abandon`](#h.abandon) - abort processing the request. + - [`h.close`](#h.close) - abort processing the request and call `end()` to ensure the response + is closed. + - [`h.continue`](#h.continue) - continue processing the request lifecycle without changing the + response. - a toolkit method response: - - [`h.response()`](#h.response()) - wraps a plain response in a [response object](#response-object). - - [`h.redirect()`](#h.redirect()) - wraps a plain response with a redirection directive. - - [`h.authenticated()`](#h.authenticated()) - indicate request authenticated successfully - (auth scheme only). - - [`h.unauthenticated()`](#h.unauthenticated()) - indicate request failed to authenticate - (auth scheme only). + - [`h.response()`](#h.response()) - wraps a plain response in a [response object](#response-object). + - [`h.redirect()`](#h.redirect()) - wraps a plain response with a redirection directive. + - [`h.authenticated()`](#h.authenticated()) - indicate request authenticated successfully + (auth scheme only). + - [`h.unauthenticated()`](#h.unauthenticated()) - indicate request failed to authenticate + (auth scheme only). - a promise object that resolve to any of the above values Any error thrown by a lifecycle method will be used as the [response object](#response-object). While errors and valid @@ -3706,11 +3762,11 @@ a Bad Implementation (500) error response. ```js const handler = function (request, h) { - if (request.query.forbidden) { - throw Boom.badRequest(); - } + if (request.query.forbidden) { + throw Boom.badRequest(); + } - return 'success'; + return 'success'; }; ``` @@ -3724,28 +3780,28 @@ The flow between each lifecycle step depends on the value returned by each lifec follows: - an error: - - the lifecycle skips to the _**Response validation**_ step. - - if returned by the _**onRequest**_ step it skips to the _**onPreResponse**_ step. - - if returned by the _**Response validation**_ step it skips to the _**onPreResponse**_ step. - - if returned by the _**onPreResponse**_ step it skips to the _**Response transmission**_ step. + - the lifecycle skips to the _**Response validation**_ step. + - if returned by the _**onRequest**_ step it skips to the _**onPreResponse**_ step. + - if returned by the _**Response validation**_ step it skips to the _**onPreResponse**_ step. + - if returned by the _**onPreResponse**_ step it skips to the _**Response transmission**_ step. - an abort signal ([`h.abandon`](#h.abandon) or [`h.close`](#h.close)): - - skips to the _**Finalize request**_ step. + - skips to the _**Finalize request**_ step. - a [`h.continue`](#h.continue) signal: - - continues processing the request lifecycle without changing the request response. - - cannot be used by the [`authenticate()`](#authentication-scheme) scheme method. + - continues processing the request lifecycle without changing the request response. + - cannot be used by the [`authenticate()`](#authentication-scheme) scheme method. - a [takeover response](#takeover-response): - - overrides the request response with the provided value and skips to the - _**Response validation**_ step. - - if returned by the _**Response validation**_ step it skips to the _**onPreResponse**_ step. - - if returned by the _**onPreResponse**_ step it skips to the _**Response transmission**_ step. + - overrides the request response with the provided value and skips to the + _**Response validation**_ step. + - if returned by the _**Response validation**_ step it skips to the _**onPreResponse**_ step. + - if returned by the _**onPreResponse**_ step it skips to the _**Response transmission**_ step. - any other response: - - overrides the request response with the provided value and continues processing the request - lifecycle. - - cannot be returned from any step prior to the _**Pre-handler methods**_ step. + - overrides the request response with the provided value and continues processing the request + lifecycle. + - cannot be returned from any step prior to the _**Pre-handler methods**_ step. The [`authenticate()`](#authentication-scheme) method has access to two additional return values: - [`h.authenticated()`](#h.authenticated()) - indicate request authenticated successfully. - [`h.unauthenticated()`](#h.unauthenticated()) - indicate request failed to authenticate. @@ -3771,9 +3827,9 @@ values: - a [lifecycle method](#lifecycle-methods) with the signature `async function(request, h, err)` where: - - `request` - the [request object](#request). - - `h` - the [response toolkit](#response-toolkit). - - `err` - the error object. + - `request` - the [request object](#request). + - `h` - the [response toolkit](#response-toolkit). + - `err` - the error object. #### Errors @@ -3792,19 +3848,19 @@ const Boom = require('@hapi/boom'); const server = Hapi.server(); server.route({ - method: 'GET', - path: '/badRequest', - handler: function (request, h) { - throw Boom.badRequest('Unsupported parameter'); // 400 - }, + method: 'GET', + path: '/badRequest', + handler: function (request, h) { + throw Boom.badRequest('Unsupported parameter'); // 400 + }, }); server.route({ - method: 'GET', - path: '/internal', - handler: function (request, h) { - throw new Error('unexpect error'); // 500 - }, + method: 'GET', + path: '/internal', + handler: function (request, h) { + throw new Error('unexpect error'); // 500 + }, }); ``` @@ -3819,20 +3875,22 @@ following properties: - `output` - the formatted response. Can be directly manipulated after object construction to return a custom error response. Allowed root keys: - - `statusCode` - the HTTP status code (typically 4xx or 5xx). - - `headers` - an object containing any HTTP headers where each key is a header name and value - is the header content. + - `statusCode` - the HTTP status code (typically 4xx or 5xx). + + - `headers` - an object containing any HTTP headers where each key is a header name and value + is the header content. + + - `payload` - the formatted object used as the response payload. Can be directly + manipulated but any changes will be lost + if `reformat()` is called. Any content allowed and by default includes the following content: - - `payload` - the formatted object used as the response payload. Can be directly - manipulated but any changes will be lost - if `reformat()` is called. Any content allowed and by default includes the following content: - - `statusCode` - the HTTP status code, derived from `error.output.statusCode`. + - `statusCode` - the HTTP status code, derived from `error.output.statusCode`. - - `error` - the HTTP status message (e.g. 'Bad Request', 'Internal Server Error') derived - from `statusCode`. + - `error` - the HTTP status message (e.g. 'Bad Request', 'Internal Server Error') derived + from `statusCode`. - - `message` - the error message derived from `error.message`. + - `message` - the error message derived from `error.message`. - inherited `Error` properties. @@ -3864,30 +3922,30 @@ const Vision = require('@hapi/vision'); const server = Hapi.server({ port: 80 }); server.register(Vision, (err) => { - server.views({ - engines: { - html: require('handlebars'), - }, - }); + server.views({ + engines: { + html: require('handlebars'), + }, + }); }); const preResponse = function (request, h) { - const response = request.response; - if (!response.isBoom) { - return h.continue; - } + const response = request.response; + if (!response.isBoom) { + return h.continue; + } - // Replace error with friendly HTML + // Replace error with friendly HTML - const error = response; - const ctx = { - message: - error.output.statusCode === 404 - ? 'page not found' - : 'something went wrong', - }; + const error = response; + const ctx = { + message: + error.output.statusCode === 404 + ? 'page not found' + : 'something went wrong', + }; - return h.view('error', ctx).code(error.output.statusCode); + return h.view('error', ctx).code(error.output.statusCode); }; server.ext('onPreResponse', preResponse); @@ -3954,9 +4012,10 @@ The [request] object. This is a duplication of the `request` lifecycle method ar Used by the [authentication] method to pass back valid credentials where: - `data` - an object with: - - `credentials` - (required) object representing the authenticated entity. - - `artifacts` - (optional) authentication artifacts object specific to the authentication - scheme. + + - `credentials` - (required) object representing the authenticated entity. + - `artifacts` - (optional) authentication artifacts object specific to the authentication + scheme. Return value: an internal authentication object. @@ -3969,10 +4028,10 @@ return as its value which will set a 304 response. Otherwise, it sets the provid and returns `undefined`. The method arguments are: - `options` - a required configuration object with: - - `etag` - the ETag string. Required if `modified` is not present. Defaults to no header. - - `modified` - the Last-Modified header value. Required if `etag` is not present. Defaults to - no header. - - `vary` - same as the [`response.etag()`](#response.etag()) option. Defaults to `true`. + - `etag` - the ETag string. Required if `modified` is not present. Defaults to no header. + - `modified` - the Last-Modified header value. Required if `etag` is not present. Defaults to + no header. + - `vary` - same as the [`response.etag()`](#response.etag()) option. Defaults to `true`. Return value: - a [response object](#response-object) if the response is unmodified. - `undefined` if the response has changed. @@ -3985,20 +4044,20 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); server.route({ - method: 'GET', - path: '/', - options: { - cache: { expiresIn: 5000 }, - handler: function (request, h) { - const response = h.entity({ etag: 'abc' }); - if (response) { - response.header('X', 'y'); - return response; - } - - return 'ok'; + method: 'GET', + path: '/', + options: { + cache: { expiresIn: 5000 }, + handler: function (request, h) { + const response = h.entity({ etag: 'abc' }); + if (response) { + response.header('X', 'y'); + return response; + } + + return 'ok'; + }, }, - }, }); ``` @@ -4010,7 +4069,7 @@ Returns a [response object](#response-object). ```js const handler = function (request, h) { - return h.redirect('http://example.com'); + return h.redirect('http://example.com'); }; ``` @@ -4027,19 +4086,19 @@ Returns a [response object](#response-object). // Detailed notation const handler = function (request, h) { - const response = h.response('success'); - response.type('text/plain'); - response.header('X-Custom', 'some-value'); - return response; + const response = h.response('success'); + response.type('text/plain'); + response.header('X-Custom', 'some-value'); + return response; }; // Chained notation const handler = function (request, h) { - return h - .response('success') - .type('text/plain') - .header('X-Custom', 'some-value'); + return h + .response('success') + .type('text/plain') + .header('X-Custom', 'some-value'); }; ``` @@ -4051,8 +4110,8 @@ Return value: none. ```js const ext = function (request, h) { - h.state('cookie-name', 'value'); - return h.continue; + h.state('cookie-name', 'value'); + return h.continue; }; ``` @@ -4063,9 +4122,9 @@ received where: - `error` - (required) the authentication error. - `data` - (optional) an object with: - - `credentials` - (required) object representing the authenticated entity. - - `artifacts` - (optional) authentication artifacts object specific to the authentication - scheme. + - `credentials` - (required) object representing the authenticated entity. + - `artifacts` - (optional) authentication artifacts object specific to the authentication + scheme. The method is used to pass both the authentication error and the credentials. For example, if a request included expired credentials, it allows the method to pass back the user information @@ -4080,8 +4139,8 @@ Clears a response cookie using the same arguments as [`response.unstate()`](#res ```js const ext = function (request, h) { - h.unstate('cookie-name'); - return h.continue; + h.unstate('cookie-name'); + return h.continue; }; ``` @@ -4130,21 +4189,21 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const preResponse = function (request, h) { - const response = request.response; - if (response.isBoom) { - return null; - } + const response = request.response; + if (response.isBoom) { + return null; + } - const hash = Crypto.createHash('sha1'); - response.events.on('peek', (chunk) => { - hash.update(chunk); - }); + const hash = Crypto.createHash('sha1'); + response.events.on('peek', (chunk) => { + hash.update(chunk); + }); - response.events.once('finish', () => { - console.log(hash.digest('hex')); - }); + response.events.once('finish', () => { + console.log(hash.digest('hex')); + }); - return h.continue; + return h.continue; }; server.ext('onPreResponse', preResponse); @@ -4300,13 +4359,14 @@ Sets the representation [entity tag](https://tools.ietf.org/html/rfc7232#section - `tag` - the entity tag string without the double-quote. - `options` - (optional) settings where: - - `weak` - if `true`, the tag will be prefixed with the `'W/'` weak signifier. Weak tags will - fail to match identical tags for the purpose of determining 304 response status. Defaults to - `false`. - - `vary` - if `true` and content encoding is set or applied to the response (e.g 'gzip' or - 'deflate'), the encoding name will be automatically added to the tag at transmission time - (separated by a `'-'` character). Ignored when `weak` is `true`. Defaults to `true`. + - `weak` - if `true`, the tag will be prefixed with the `'W/'` weak signifier. Weak tags will + fail to match identical tags for the purpose of determining 304 response status. Defaults to + `false`. + + - `vary` - if `true` and content encoding is set or applied to the response (e.g 'gzip' or + 'deflate'), the encoding name will be automatically added to the tag at transmission time + (separated by a `'-'` character). Ignored when `weak` is `true`. Defaults to `true`. Return value: the current response object. @@ -4319,17 +4379,18 @@ Sets an HTTP header where: - `value` - the header value. - `options` - (optional) object where: - - `append` - if `true`, the value is appended to any existing header value using `separator`. - Defaults to `false`. - - `separator` - string used as separator when appending to an existing value. Defaults to `','`. + - `append` - if `true`, the value is appended to any existing header value using `separator`. + Defaults to `false`. + + - `separator` - string used as separator when appending to an existing value. Defaults to `','`. - - `override` - if `false`, the header value is not set if an existing value present. Defaults - to `true`. + - `override` - if `false`, the header value is not set if an existing value present. Defaults + to `true`. - - `duplicate` - if `false`, the header value is not modified if the provided value is already - included. Does not apply when `append` is `false` or if the `name` is `'set-cookie'`. - Defaults to `true`. + - `duplicate` - if `false`, the header value is not modified if the provided value is already + included. Does not apply when `append` is `false` or if the `name` is `'set-cookie'`. + Defaults to `true`. Return value: the current response object. @@ -4539,20 +4600,20 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const onRequest = function (request, h) { - const hash = Crypto.createHash('sha1'); - request.events.on('peek', (chunk) => { - hash.update(chunk); - }); + const hash = Crypto.createHash('sha1'); + request.events.on('peek', (chunk) => { + hash.update(chunk); + }); - request.events.once('finish', () => { - console.log(hash.digest('hex')); - }); + request.events.once('finish', () => { + console.log(hash.digest('hex')); + }); - request.events.once('disconnect', () => { - console.error('request aborted'); - }); + request.events.once('disconnect', () => { + console.error('request aborted'); + }); - return h.continue; + return h.continue; }; server.ext('onRequest', onRequest); @@ -4577,8 +4638,8 @@ Request information: - `cors` - request CORS information (available only after the `'onRequest'` extension point as CORS is configured per-route and no routing decisions are made at that point in the request lifecycle), where: - - `isOriginMatch` - `true` if the request 'Origin' header matches the configured CORS - restrictions. Set to `false` if no 'Origin' header is found or if it does not match. + - `isOriginMatch` - `true` if the request 'Origin' header matches the configured CORS + restrictions. Set to `false` if no 'Origin' header is found or if it does not match. - `host` - content of the HTTP 'Host' header (e.g. 'example.com:8080'). @@ -4730,18 +4791,18 @@ Returns a [`response`](#response-object) which you can pass to [h.response()](#h - `source` - the value to set as the source of [h.response()](#h.response()), optional. - `options` - optional object with the following optional properties: - - `variety` - a sting name of the response type (e.g. `'file'`). - - `prepare` - a function with the signature `async function(response)` used to prepare the response after it is returned by a [lifecycle method](#lifecycle-methods) such as setting a file descriptor, where: - - `response` - the response object being prepared. - - must return the prepared response object (`response`). - - may throw an error which is used as the prepared response. - - `marshal` - a function with the signature `async function(response)` used to prepare the response for transmission to the client before it is sent, where: - - `response` - the response object being marshaled. - - must return the prepared value (not as response object) which can be any value accepted by the [`h.response()`](#h.response()) `value` argument. - - may throw an error which is used as the marshaled value. - - `close` - a function with the signature `function(response)` used to close the resources opened by the response object (e.g. file handlers), where: - - `response` - the response object being marshaled. - - should not throw errors (which are logged but otherwise ignored). + - `variety` - a sting name of the response type (e.g. `'file'`). + - `prepare` - a function with the signature `async function(response)` used to prepare the response after it is returned by a [lifecycle method](#lifecycle-methods) such as setting a file descriptor, where: + - `response` - the response object being prepared. + - must return the prepared response object (`response`). + - may throw an error which is used as the prepared response. + - `marshal` - a function with the signature `async function(response)` used to prepare the response for transmission to the client before it is sent, where: + - `response` - the response object being marshaled. + - must return the prepared value (not as response object) which can be any value accepted by the [`h.response()`](#h.response()) `value` argument. + - may throw an error which is used as the marshaled value. + - `close` - a function with the signature `function(response)` used to close the resources opened by the response object (e.g. file handlers), where: + - `response` - the response object being marshaled. + - should not throw errors (which are logged but otherwise ignored). ### `request.active()` @@ -4752,20 +4813,20 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); server.route({ - method: 'POST', - path: '/worker', - handler: function (request, h) { - // Do some work... - - // Check if request is still active - if (!request.active()) { - return h.close; - } + method: 'POST', + path: '/worker', + handler: function (request, h) { + // Do some work... - // Do some more work... + // Check if request is still active + if (!request.active()) { + return h.close; + } - return null; - }, + // Do some more work... + + return null; + }, }); ``` @@ -4787,17 +4848,17 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80, routes: { log: { collect: true } } }); server.events.on( - { name: 'request', channels: 'app' }, - (request, event, tags) => { - if (tags.error) { - console.log(event); - } - }, + { name: 'request', channels: 'app' }, + (request, event, tags) => { + if (tags.error) { + console.log(event); + } + }, ); const handler = function (request, h) { - request.log(['test', 'error'], 'Test event'); - return null; + request.log(['test', 'error'], 'Test event'); + return null; }; ``` @@ -4806,10 +4867,10 @@ Note that any logs generated by the server internally will be emitted using the ```js server.events.on( - { name: 'request', channels: 'internal' }, - (request, event, tags) => { - console.log(event); - }, + { name: 'request', channels: 'internal' }, + (request, event, tags) => { + console.log(event); + }, ); ``` @@ -4843,9 +4904,9 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const onRequest = function (request, h) { - // Change all requests to 'GET' - request.setMethod('GET'); - return h.continue; + // Change all requests to 'GET' + request.setMethod('GET'); + return h.continue; }; server.ext('onRequest', onRequest); @@ -4867,9 +4928,9 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const onRequest = function (request, h) { - // Change all requests to '/test' - request.setUrl('/test'); - return h.continue; + // Change all requests to '/test' + request.setUrl('/test'); + return h.continue; }; server.ext('onRequest', onRequest); @@ -4888,8 +4949,9 @@ A plugin is an object with the following properties: - `register` - (required) the registration function with the signature `async function(server, options)` where: - - `server` - the server object with a plugin-specific [`server.realm`](#server.realm). - - `options` - any options passed to the plugin during registration via [`server.register()`](#server.register()). + + - `server` - the server object with a plugin-specific [`server.realm`](#server.realm). + - `options` - any options passed to the plugin during registration via [`server.register()`](#server.register()). - `name` - (required) the plugin name string. The name is used as a unique key. Published plugins (e.g. published in the npm registry) should use the same name as the name field in their @@ -4906,25 +4968,26 @@ A plugin is an object with the following properties: as setting dependencies via [`server.dependency()`](#server.dependency()). - `requirements` - (optional) object declaring the plugin supported [semver range](https://semver.org/) for: - - `node` runtime [semver range](https://nodejs.org/en/about/releases/) string. - - `hapi` framework [semver range](#server.version) string. + + - `node` runtime [semver range](https://nodejs.org/en/about/releases/) string. + - `hapi` framework [semver range](#server.version) string. - `once` - (optional) if `true`, will only register the plugin once per server. If set, overrides the `once` option passed to [`server.register()`](#server.register()). Defaults to no override. ```js const plugin = { - name: 'test', - version: '1.0.0', - register: function (server, options) { - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'ok'; - }, - }); - }, + name: 'test', + version: '1.0.0', + register: function (server, options) { + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'ok'; + }, + }); + }, }; ``` @@ -4933,15 +4996,15 @@ Alternatively, the `name` and `version` can be included via the `pkg` property c ```js const plugin = { - pkg: require('./package.json'), - register: function (server, options) { - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'ok'; - }, - }); - }, + pkg: require('./package.json'), + register: function (server, options) { + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'ok'; + }, + }); + }, }; ``` diff --git a/generated/markdown/hapi/21/api.md b/generated/markdown/hapi/21/api.md index 9cd5d3a5..d99ba8ac 100644 --- a/generated/markdown/hapi/21/api.md +++ b/generated/markdown/hapi/21/api.md @@ -74,24 +74,27 @@ assigned one or more (array): will be created internally using this constructor. - a configuration object with the following: - - `engine` - a **catbox** engine object instance. - - `name` - an identifier used later when provisioning or configuring caching for - [server methods](#server.methods) or [plugins](#plugins). Each cache name must be unique. - A single item may omit the `name` option which defines the default cache. If every cache - includes a `name`, a default memory cache is provisioned as well. + - `engine` - a **catbox** engine object instance. - - `provider` - a class, a constructor function, or an object with the following: - - `constructor` - a class or a prototype function. + - `name` - an identifier used later when provisioning or configuring caching for + [server methods](#server.methods) or [plugins](#plugins). Each cache name must be unique. + A single item may omit the `name` option which defines the default cache. If every cache + includes a `name`, a default memory cache is provisioned as well. - - `options` - (optional) a settings object passed as-is to the `constructor` with the following: - - `partition` - (optional) string used to isolate cached data. Defaults to `'hapi-cache'`. - - other constructor-specific options passed to the `constructor` on instantiation. + - `provider` - a class, a constructor function, or an object with the following: - - `shared` - if `true`, allows multiple cache users to share the same segment (e.g. - multiple methods using the same cache storage container). Default to `false`. + - `constructor` - a class or a prototype function. - - One (and only one) of `engine` or `provider` is required per configuration object. + - `options` - (optional) a settings object passed as-is to the `constructor` with the following: + + - `partition` - (optional) string used to isolate cached data. Defaults to `'hapi-cache'`. + - other constructor-specific options passed to the `constructor` on instantiation. + + - `shared` - if `true`, allows multiple cache users to share the same segment (e.g. + multiple methods using the same cache storage container). Default to `false`. + + - One (and only one) of `engine` or `provider` is required per configuration object. #### `server.options.compression` @@ -180,42 +183,44 @@ Default value: none. Options passed to the [**mimos**](https://hapi.dev/family/mimos/api) module when generating the mime database used by the server (and accessed via [`server.mime`](#server.mime)): - `override` - an object hash that is merged into the built in mime information specified [here](https://github.com/jshttp/mime-db). Each key value pair represents a single mime object. Each override value must contain: - - `key` - the lower-cased mime-type string (e.g. `'application/javascript'`). - - `value` - an object following the specifications outlined [here](https://github.com/jshttp/mime-db#data-structure). Additional values include: - - `type` - specify the `type` value of result objects, defaults to `key`. + - `key` - the lower-cased mime-type string (e.g. `'application/javascript'`). + + - `value` - an object following the specifications outlined [here](https://github.com/jshttp/mime-db#data-structure). Additional values include: + + - `type` - specify the `type` value of result objects, defaults to `key`. - - `predicate` - method with signature `function(mime)` when this mime type is found in the database, this function will execute to allows customizations. + - `predicate` - method with signature `function(mime)` when this mime type is found in the database, this function will execute to allows customizations. ```js const options = { - mime: { - override: { - 'node/module': { - source: 'iana', - compressible: true, - extensions: ['node', 'module', 'npm'], - type: 'node/module', - }, - 'application/javascript': { - source: 'iana', - charset: 'UTF-8', - compressible: true, - extensions: ['js', 'javascript'], - type: 'text/javascript', - }, - 'text/html': { - predicate: function (mime) { - if (someCondition) { - mime.foo = 'test'; - } else { - mime.foo = 'bar'; - } - return mime; + mime: { + override: { + 'node/module': { + source: 'iana', + compressible: true, + extensions: ['node', 'module', 'npm'], + type: 'node/module', + }, + 'application/javascript': { + source: 'iana', + charset: 'UTF-8', + compressible: true, + extensions: ['js', 'javascript'], + type: 'text/javascript', + }, + 'text/html': { + predicate: function (mime) { + if (someCondition) { + mime.foo = 'test'; + } else { + mime.foo = 'bar'; + } + return mime; + }, + }, }, - }, }, - }, }; ``` @@ -273,9 +278,9 @@ Sets a query parameters parser method using the signature `function(query)` wher const Qs = require('qs'); const options = { - query: { - parser: (query) => Qs.parse(query), - }, + query: { + parser: (query) => Qs.parse(query), + }, }; ``` @@ -349,7 +354,7 @@ const server = Hapi.server(); server.app.key = 'value'; const handler = function (request, h) { - return request.server.app.key; // 'value' + return request.server.app.key; // 'value' }; ``` @@ -365,21 +370,21 @@ object returned from its implementation function. const server = Hapi.server({ port: 80 }); const scheme = function (server, options) { - return { - api: { - settings: { - x: 5, - }, - }, - authenticate: function (request, h) { - const authorization = request.headers.authorization; - if (!authorization) { - throw Boom.unauthorized(null, 'Custom'); - } + return { + api: { + settings: { + x: 5, + }, + }, + authenticate: function (request, h) { + const authorization = request.headers.authorization; + if (!authorization) { + throw Boom.unauthorized(null, 'Custom'); + } - return h.authenticated({ credentials: { user: 'john' } }); - }, - }; + return h.authenticated({ credentials: { user: 'john' } }); + }, + }; }; server.auth.scheme('custom', scheme); @@ -413,7 +418,7 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const success = function () { - return this.response({ status: 'ok' }); + return this.response({ status: 'ok' }); }; server.decorate('toolkit', 'success', success); @@ -445,25 +450,25 @@ application events logged with [`server.log()`](#server.log()). The `'log'` event handler uses the function signature `function(event, tags)` where: - `event` - an object with the following properties: - - `timestamp` - the event timestamp. - - `tags` - an array of tags identifying the event (e.g. `['error', 'http']`). - - `channel` - set to `'internal'` for internally generated events, otherwise `'app'` for events - generated by [`server.log()`](#server.log()). - - `data` - event-specific information. Available when event data was provided and is not an - error. Errors are passed via `error`. - - `error` - the error object related to the event if applicable. Cannot appear together with - `data`. + - `timestamp` - the event timestamp. + - `tags` - an array of tags identifying the event (e.g. `['error', 'http']`). + - `channel` - set to `'internal'` for internally generated events, otherwise `'app'` for events + generated by [`server.log()`](#server.log()). + - `data` - event-specific information. Available when event data was provided and is not an + error. Errors are passed via `error`. + - `error` - the error object related to the event if applicable. Cannot appear together with + `data`. - `tags` - an object where each `event.tag` is a key and the value is `true`. Useful for quick identification of events. ```js server.events.on('log', (event, tags) => { - if (tags.error) { - console.log( - `Server error: ${event.error ? event.error.message : 'unknown'}`, - ); - } + if (tags.error) { + console.log( + `Server error: ${event.error ? event.error.message : 'unknown'}`, + ); + } }); ``` @@ -487,9 +492,9 @@ The `'cachePolicy'` event handler uses the function signature `function(cachePol ```js server.events.on('cachePolicy', (cachePolicy, cache, segment) => { - console.log( - `New cache policy created using cache: ${cache === undefined ? 'default' : cache} and segment: ${segment}`, - ); + console.log( + `New cache policy created using cache: ${cache === undefined ? 'default' : cache} and segment: ${segment}`, + ); }); ``` @@ -503,28 +508,28 @@ The `'request'` event handler uses the function signature `function(request, eve - `request` - the [request object](#request). - `event` - an object with the following properties: - - `timestamp` - the event timestamp. - - `tags` - an array of tags identifying the event (e.g. `['error', 'http']`). - - `channel` - one of - - `'app'` - events generated by [`request.log()`](#request.log()). - - `'error'` - emitted once per request if the response had a `500` status code. - - `'internal'` - internally generated events. - - `request` - the request [identifier](#request.info.id). - - `data` - event-specific information. Available when event data was provided and is not an - error. Errors are passed via `error`. - - `error` - the error object related to the event if applicable. Cannot appear together with - `data`. + - `timestamp` - the event timestamp. + - `tags` - an array of tags identifying the event (e.g. `['error', 'http']`). + - `channel` - one of + - `'app'` - events generated by [`request.log()`](#request.log()). + - `'error'` - emitted once per request if the response had a `500` status code. + - `'internal'` - internally generated events. + - `request` - the request [identifier](#request.info.id). + - `data` - event-specific information. Available when event data was provided and is not an + error. Errors are passed via `error`. + - `error` - the error object related to the event if applicable. Cannot appear together with + `data`. - `tags` - an object where each `event.tag` is a key and the value is `true`. Useful for quick identification of events. ```js server.events.on('request', (request, event, tags) => { - if (tags.error) { - console.log( - `Request ${event.request} error: ${event.error ? event.error.message : 'unknown'}`, - ); - } + if (tags.error) { + console.log( + `Request ${event.request} error: ${event.error ? event.error.message : 'unknown'}`, + ); + } }); ``` @@ -532,10 +537,10 @@ To listen to only one of the channels, use the event criteria object: ```js server.events.on( - { name: 'request', channels: 'error' }, - (request, event, tags) => { - console.log(`Request ${event.request} failed`); - }, + { name: 'request', channels: 'error' }, + (request, event, tags) => { + console.log(`Request ${event.request} failed`); + }, ); ``` @@ -580,7 +585,7 @@ signature `function(request)` where: ```js server.events.on('response', (request) => { - console.log(`Response sent for request: ${request.info.id}`); + console.log(`Response sent for request: ${request.info.id}`); }); ``` @@ -593,7 +598,7 @@ The `'route'` event handler uses the function signature `function(route)` where: ```js server.events.on('route', (route) => { - console.log(`New route added: ${route.path}`); + console.log(`New route added: ${route.path}`); }); ``` @@ -604,7 +609,7 @@ The `'start'` event handler uses the function signature `function()`. ```js server.events.on('start', () => { - console.log('Server started'); + console.log('Server started'); }); ``` @@ -615,7 +620,7 @@ The `'closing'` event handler uses the function signature `function()`. ```js server.events.on('closing', () => { - console.log('Server is closing'); + console.log('Server is closing'); }); ``` @@ -626,7 +631,7 @@ The `'stop'` event handler uses the function signature `function()`. ```js server.events.on('stop', () => { - console.log('Server stopped'); + console.log('Server stopped'); }); ``` @@ -643,9 +648,10 @@ An object containing information about the server where: - `started` - server start timestamp (`0` when stopped). - `port` - the connection port based on the following rules: - - before the server has been started: the configured [`port`](#server.options.port) value. - - after the server has been started: the actual port assigned when no port is configured or was - set to `0`. + + - before the server has been started: the configured [`port`](#server.options.port) value. + - after the server has been started: the actual port assigned when no port is configured or was + set to `0`. - `host` - The [`host`](#server.options.host) configuration value. @@ -653,9 +659,10 @@ An object containing information about the server where: until the server has been started or when using a non TCP port (e.g. UNIX domain socket). - `protocol` - the protocol used: - - `'http'` - HTTP. - - `'https'` - HTTPS. - - `'socket'` - UNIX domain socket or Windows named pipe. + + - `'http'` - HTTP. + - `'https'` - HTTPS. + - `'socket'` - UNIX domain socket or Windows named pipe. - `uri` - a string representing the connection (e.g. 'http://example.com:8080' or 'socket:/unix/domain/socket/path'). Contains the [`uri`](#server.options.uri) value if set, @@ -684,7 +691,7 @@ const server = Hapi.server({ port: 80 }); const io = SocketIO.listen(server.listener); io.sockets.on('connection', (socket) => { - socket.emit({ msg: 'welcome' }); + socket.emit({ msg: 'welcome' }); }); ``` @@ -738,16 +745,16 @@ must not be modified directly but only through the [`mime`](#server.options.mime const Hapi = require('@hapi/hapi'); const options = { - mime: { - override: { - 'node/module': { - source: 'steve', - compressible: false, - extensions: ['node', 'module', 'npm'], - type: 'node/module', - }, + mime: { + override: { + 'node/module': { + source: 'steve', + compressible: false, + extensions: ['node', 'module', 'npm'], + type: 'node/module', + }, + }, }, - }, }; const server = Hapi.server(options); @@ -766,14 +773,14 @@ and the values are the exposed properties by each plugin using ```js exports.plugin = { - name: 'example', - register: function (server, options) { - server.expose('key', 'value'); - server.plugins.example.other = 'other'; - - console.log(server.plugins.example.key); // 'value' - console.log(server.plugins.example.other); // 'other' - }, + name: 'example', + register: function (server, options) { + server.expose('key', 'value'); + server.plugins.example.other = 'other'; + + console.log(server.plugins.example.key); // 'value' + console.log(server.plugins.example.other); // 'other' + }, }; ``` @@ -796,12 +803,14 @@ The `server.realm` object contains: - `modifiers` - when the server object is provided as an argument to the plugin `register()` method, `modifiers` provides the registration preferences passed the [`server.register()`](#server.register()) method and includes: - - `route` - routes preferences: - - `prefix` - the route path prefix used by any calls to [`server.route()`](#server.route()) - from the server. Note that if a prefix is used and the route path is set to `'/'`, the - resulting path will not include the trailing slash. - - `vhost` - the route virtual host settings used by any calls to - [`server.route()`](#server.route()) from the server. + + - `route` - routes preferences: + + - `prefix` - the route path prefix used by any calls to [`server.route()`](#server.route()) + from the server. Note that if a prefix is used and the route path is set to `'/'`, the + resulting path will not include the trailing slash. + - `vhost` - the route virtual host settings used by any calls to + [`server.route()`](#server.route()) from the server. - `parent` - the realm of the parent server object, or `null` for the root server. @@ -813,8 +822,9 @@ The `server.realm` object contains: state. `plugins` is an object where each key is a plugin name and the value is the plugin state. - `settings` - settings overrides: - - `files.relativeTo` - - `bind` + + - `files.relativeTo` + - `bind` The `server.realm` object should be considered read-only and must not be changed directly except for the `plugins` property which can be directly manipulated by each plugin, setting its properties @@ -822,7 +832,7 @@ inside `plugins[name]`. ```js exports.register = function (server, options) { - console.log(server.realm.modifiers.route.prefix); + console.log(server.realm.modifiers.route.prefix); }; ``` @@ -846,9 +856,9 @@ The server configuration object after defaults applied. ```js const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - app: { - key: 'value', - }, + app: { + key: 'value', + }, }); console.log(server.settings.app); // { key: 'value' } @@ -907,9 +917,10 @@ console.log(server.version); // '17.0.0' Sets a default strategy which is applied to every route where: - `options` - one of: - - a string with the default strategy name - - an authentication configuration object using the same format as the - [route `auth` handler options](#route.options.auth). + + - a string with the default strategy name + - an authentication configuration object using the same format as the + [route `auth` handler options](#route.options.auth). Return value: none. @@ -936,11 +947,11 @@ server.auth.strategy('default', 'custom'); server.auth.default('default'); server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return request.auth.credentials.user; - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return request.auth.credentials.user; + }, }); ``` @@ -950,9 +961,9 @@ Registers an authentication scheme where: - `name` - the scheme name. - `scheme` - the method implementing the scheme with signature `function(server, options)` where: - - `server` - a reference to the server object the scheme is added to. Each auth strategy is given its own [`server.realm`](#server.realm) whose parent is the realm of the `server` in the call to [`server.auth.strategy()`](#server.auth.strategy()). - - `options` - (optional) the scheme `options` argument passed to - [`server.auth.strategy()`](#server.auth.strategy()) when instantiation a strategy. + - `server` - a reference to the server object the scheme is added to. Each auth strategy is given its own [`server.realm`](#server.realm) whose parent is the realm of the `server` in the call to [`server.auth.strategy()`](#server.auth.strategy()). + - `options` - (optional) the scheme `options` argument passed to + [`server.auth.strategy()`](#server.auth.strategy()) when instantiation a strategy. Return value: none. @@ -969,8 +980,8 @@ An authentication scheme is an object with the following properties: called for each incoming request configured with the authentication scheme. The method is provided with two special toolkit methods for returning an authenticated or an unauthenticate result: - - [`h.authenticated()`](#h.authenticated()) - indicate request authenticated successfully. - - [`h.unauthenticated()`](#h.unauthenticated()) - indicate request failed to authenticate. + - [`h.authenticated()`](#h.authenticated()) - indicate request authenticated successfully. + - [`h.unauthenticated()`](#h.unauthenticated()) - indicate request failed to authenticate. - `async payload(request, h)` - (optional) a [lifecycle method](#lifecycle-methods) to authenticate the request payload. @@ -980,15 +991,15 @@ An authentication scheme is an object with the following properties: - `async verify(auth)` - (optional) a method used to verify the authentication credentials provided are still valid (e.g. not expired or revoked after the initial authentication) where: - - `auth` - the [`request.auth`](#request.auth) object containing the `credentials` and - `artifacts` objects returned by the scheme's `authenticate()` method. - - the method throws an `Error` when the credentials passed are no longer valid (e.g. expired or - revoked). Note that the method does not have access to the original request, only to the - credentials and artifacts produced by the `authenticate()` method. + - `auth` - the [`request.auth`](#request.auth) object containing the `credentials` and + `artifacts` objects returned by the scheme's `authenticate()` method. + - the method throws an `Error` when the credentials passed are no longer valid (e.g. expired or + revoked). Note that the method does not have access to the original request, only to the + credentials and artifacts produced by the `authenticate()` method. - `options` - (optional) an object with the following keys: - - `payload` - if `true`, requires payload validation as part of the scheme and forbids routes - from disabling payload auth validation. Defaults to `false`. + - `payload` - if `true`, requires payload validation as part of the scheme and forbids routes + from disabling payload auth validation. Defaults to `false`. When the scheme `authenticate()` method implementation throws an error or calls [`h.unauthenticated()`](#h.unauthenticated()), the specifics of the error affect whether additional @@ -1008,17 +1019,17 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const scheme = function (server, options) { - return { - authenticate: function (request, h) { - const req = request.raw.req; - const authorization = req.headers.authorization; - if (!authorization) { - throw Boom.unauthorized(null, 'Custom'); - } - - return h.authenticated({ credentials: { user: 'john' } }); - }, - }; + return { + authenticate: function (request, h) { + const req = request.raw.req; + const authorization = req.headers.authorization; + if (!authorization) { + throw Boom.unauthorized(null, 'Custom'); + } + + return h.authenticated({ credentials: { user: 'john' } }); + }, + }; }; server.auth.scheme('custom', scheme); @@ -1043,14 +1054,14 @@ server.auth.scheme('custom', scheme); server.auth.strategy('default', 'custom'); server.route({ - method: 'GET', - path: '/', - options: { - auth: 'default', - handler: function (request, h) { - return request.auth.credentials.user; + method: 'GET', + path: '/', + options: { + auth: 'default', + handler: function (request, h) { + return request.auth.credentials.user; + }, }, - }, }); ``` @@ -1076,19 +1087,19 @@ server.auth.scheme('custom', scheme); server.auth.strategy('default', 'custom'); server.route({ - method: 'GET', - path: '/', - handler: async function (request, h) { - try { - const { credentials, artifacts } = await request.server.auth.test( - 'default', - request, - ); - return { status: true, user: credentials.name }; - } catch (err) { - return { status: false }; - } - }, + method: 'GET', + path: '/', + handler: async function (request, h) { + try { + const { credentials, artifacts } = await request.server.auth.test( + 'default', + request, + ); + return { status: true, user: credentials.name }; + } catch (err) { + return { status: false }; + } + }, }); ``` @@ -1114,16 +1125,16 @@ server.auth.scheme('custom', scheme); server.auth.strategy('default', 'custom'); server.route({ - method: 'GET', - path: '/', - handler: async function (request, h) { - try { - const credentials = await request.server.auth.verify(request); - return { status: true, user: credentials.name }; - } catch (err) { - return { status: false }; - } - }, + method: 'GET', + path: '/', + handler: async function (request, h) { + try { + const credentials = await request.server.auth.verify(request); + return { status: true, user: credentials.name }; + } catch (err) { + return { status: false }; + } + }, }); ``` @@ -1143,19 +1154,19 @@ Ignored if the method being bound is an arrow function. ```js const handler = function (request, h) { - return this.message; // Or h.context.message + return this.message; // Or h.context.message }; exports.plugin = { - name: 'example', - register: function (server, options) { - const bind = { - message: 'hello', - }; + name: 'example', + register: function (server, options) { + const bind = { + message: 'hello', + }; - server.bind(bind); - server.route({ method: 'GET', path: '/', handler }); - }, + server.bind(bind); + server.route({ method: 'GET', path: '/', handler }); + }, }; ``` @@ -1164,55 +1175,56 @@ exports.plugin = { Provisions a cache segment within the server cache facility where: - `options` - [**catbox** policy](https://hapi.dev/family/catbox/api#policy) configuration where: - - `expiresIn` - relative expiration expressed in the number of milliseconds since the item was - saved in the cache. Cannot be used together with `expiresAt`. - - `expiresAt` - time of day expressed in 24h notation using the 'HH:MM' format, at which point - all cache records expire. Uses local time. Cannot be used together with `expiresIn`. + - `expiresIn` - relative expiration expressed in the number of milliseconds since the item was + saved in the cache. Cannot be used together with `expiresAt`. + + - `expiresAt` - time of day expressed in 24h notation using the 'HH:MM' format, at which point + all cache records expire. Uses local time. Cannot be used together with `expiresIn`. - - `generateFunc` - a function used to generate a new cache item if one is not found in the - cache when calling `get()`. The method's signature is `async function(id, flags)` where: + - `generateFunc` - a function used to generate a new cache item if one is not found in the + cache when calling `get()`. The method's signature is `async function(id, flags)` where: - - `id` - the `id` string or object provided to the `get()` method. - - `flags` - an object used to pass back additional flags to the cache where: - - `ttl` - the cache ttl value in milliseconds. Set to `0` to skip storing in the - cache. Defaults to the cache global policy. + - `id` - the `id` string or object provided to the `get()` method. + - `flags` - an object used to pass back additional flags to the cache where: + - `ttl` - the cache ttl value in milliseconds. Set to `0` to skip storing in the + cache. Defaults to the cache global policy. - - `staleIn` - number of milliseconds to mark an item stored in cache as stale and attempt to - regenerate it when `generateFunc` is provided. Must be less than `expiresIn`. + - `staleIn` - number of milliseconds to mark an item stored in cache as stale and attempt to + regenerate it when `generateFunc` is provided. Must be less than `expiresIn`. - - `staleTimeout` - number of milliseconds to wait before checking if an item is stale. + - `staleTimeout` - number of milliseconds to wait before checking if an item is stale. - - `generateTimeout` - number of milliseconds to wait before returning a timeout error when the - `generateFunc` function takes too long to return a value. When the value is eventually - returned, it is stored in the cache for future requests. Required if `generateFunc` is - present. Set to `false` to disable timeouts which may cause all `get()` requests to get stuck - forever. + - `generateTimeout` - number of milliseconds to wait before returning a timeout error when the + `generateFunc` function takes too long to return a value. When the value is eventually + returned, it is stored in the cache for future requests. Required if `generateFunc` is + present. Set to `false` to disable timeouts which may cause all `get()` requests to get stuck + forever. - - `generateOnReadError` - if `false`, an upstream cache read error will stop the `cache.get()` - method from calling the generate function and will instead pass back the cache error. Defaults - to `true`. + - `generateOnReadError` - if `false`, an upstream cache read error will stop the `cache.get()` + method from calling the generate function and will instead pass back the cache error. Defaults + to `true`. - - `generateIgnoreWriteError` - if `false`, an upstream cache write error when calling - `cache.get()` will be passed back with the generated value when calling. Defaults to `true`. + - `generateIgnoreWriteError` - if `false`, an upstream cache write error when calling + `cache.get()` will be passed back with the generated value when calling. Defaults to `true`. - - `dropOnError` - if `true`, an error or timeout in the `generateFunc` causes the stale value - to be evicted from the cache. Defaults to `true`. + - `dropOnError` - if `true`, an error or timeout in the `generateFunc` causes the stale value + to be evicted from the cache. Defaults to `true`. - - `pendingGenerateTimeout` - number of milliseconds while `generateFunc` call is in progress - for a given id, before a subsequent `generateFunc` call is allowed. Defaults to `0` (no - blocking of concurrent `generateFunc` calls beyond `staleTimeout`). + - `pendingGenerateTimeout` - number of milliseconds while `generateFunc` call is in progress + for a given id, before a subsequent `generateFunc` call is allowed. Defaults to `0` (no + blocking of concurrent `generateFunc` calls beyond `staleTimeout`). - - `cache` - the cache name configured in [`server.cache`](#server.options.cache). Defaults to - the default cache. + - `cache` - the cache name configured in [`server.cache`](#server.options.cache). Defaults to + the default cache. - - `segment` - string segment name, used to isolate cached items within the cache partition. - When called within a plugin, defaults to '!name' where 'name' is the plugin name. When called - within a server method, defaults to '#name' where 'name' is the server method name. Required - when called outside of a plugin. + - `segment` - string segment name, used to isolate cached items within the cache partition. + When called within a plugin, defaults to '!name' where 'name' is the plugin name. When called + within a server method, defaults to '#name' where 'name' is the server method name. Required + when called outside of a plugin. - - `shared` - if `true`, allows multiple cache provisions to share the same segment. Default to - `false`. + - `shared` - if `true`, allows multiple cache provisions to share the same segment. Default to + `false`. Return value: a [**catbox** policy](https://hapi.dev/family/catbox/api#policy) object. @@ -1220,13 +1232,13 @@ Return value: a [**catbox** policy](https://hapi.dev/family/catbox/api#policy) o const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - const cache = server.cache({ - segment: 'countries', - expiresIn: 60 * 60 * 1000, - }); - await cache.set('norway', { capital: 'oslo' }); - const value = await cache.get('norway'); + const server = Hapi.server({ port: 80 }); + const cache = server.cache({ + segment: 'countries', + expiresIn: 60 * 60 * 1000, + }); + await cache.set('norway', { capital: 'oslo' }); + const value = await cache.get('norway'); } ``` @@ -1245,16 +1257,19 @@ to match the state of any other provisioned server cache. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - await server.initialize(); - await server.cache.provision({ - provider: require('@hapi/catbox-memory'), - name: 'countries', - }); - - const cache = server.cache({ cache: 'countries', expiresIn: 60 * 60 * 1000 }); - await cache.set('norway', { capital: 'oslo' }); - const value = await cache.get('norway'); + const server = Hapi.server({ port: 80 }); + await server.initialize(); + await server.cache.provision({ + provider: require('@hapi/catbox-memory'), + name: 'countries', + }); + + const cache = server.cache({ + cache: 'countries', + expiresIn: 60 * 60 * 1000, + }); + await cache.set('norway', { capital: 'oslo' }); + const value = await cache.get('norway'); } ``` @@ -1284,8 +1299,8 @@ Return value: none. const Zlib = require('zlib'); const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 80, - routes: { payload: { compression: { special: { chunkSize: 16 * 1024 } } } }, + port: 80, + routes: { payload: { compression: { special: { chunkSize: 16 * 1024 } } } }, }); server.decoder('special', (options) => Zlib.createGunzip(options)); @@ -1296,25 +1311,26 @@ server.decoder('special', (options) => Zlib.createGunzip(options)); Extends various framework interfaces with custom methods where: - `type` - the interface being decorated. Supported types: - - `'handler'` - adds a new handler type to be used in [routes handlers](#route.options.handler). - - `'request'` - adds methods to the [Request object](#request). - - `'response'` - adds methods to the [Response object](#response-object). - - `'server'` - adds methods to the [Server](#server) object. - - `'toolkit'` - adds methods to the [response toolkit](#response-toolkit). + + - `'handler'` - adds a new handler type to be used in [routes handlers](#route.options.handler). + - `'request'` - adds methods to the [Request object](#request). + - `'response'` - adds methods to the [Response object](#response-object). + - `'server'` - adds methods to the [Server](#server) object. + - `'toolkit'` - adds methods to the [response toolkit](#response-toolkit). - `property` - the object decoration key name or symbol. - `method` - the extension function or other value. - `options` - (optional) supports the following optional settings: - - `apply` - when the `type` is `'request'`, if `true`, the `method` function is invoked using - the signature `function(request)` where `request` is the current request object and the - returned value is assigned as the decoration. - - `extend` - if `true`, overrides an existing decoration. The `method` must be a function with - the signature `function(existing)` where: - - `existing` - is the previously set decoration method value. - - must return the new decoration function or value. - - cannot be used to extend handler decorations. + - `apply` - when the `type` is `'request'`, if `true`, the `method` function is invoked using + the signature `function(request)` where `request` is the current request object and the + returned value is assigned as the decoration. + - `extend` - if `true`, overrides an existing decoration. The `method` must be a function with + the signature `function(existing)` where: + - `existing` - is the previously set decoration method value. + - must return the new decoration function or value. + - cannot be used to extend handler decorations. Return value: none. @@ -1323,17 +1339,17 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const success = function () { - return this.response({ status: 'ok' }); + return this.response({ status: 'ok' }); }; server.decorate('toolkit', 'success', success); server.route({ - method: 'GET', - path: '/', - handler: function (request, h) { - return h.success(); - }, + method: 'GET', + path: '/', + handler: function (request, h) { + return h.success(); + }, }); ``` @@ -1347,25 +1363,25 @@ When registering a handler decoration, the `method` must be a function using the const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ host: 'localhost', port: 8000 }); + const server = Hapi.server({ host: 'localhost', port: 8000 }); - // Defines new handler for routes on this server + // Defines new handler for routes on this server - const handler = function (route, options) { - return function (request, h) { - return 'new handler: ' + options.msg; + const handler = function (route, options) { + return function (request, h) { + return 'new handler: ' + options.msg; + }; }; - }; - server.decorate('handler', 'test', handler); + server.decorate('handler', 'test', handler); - server.route({ - method: 'GET', - path: '/', - handler: { test: { msg: 'test' } }, - }); + server.route({ + method: 'GET', + path: '/', + handler: { test: { msg: 'test' } }, + }); - await server.start(); + await server.start(); } ``` @@ -1379,18 +1395,18 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ host: 'localhost', port: 8000 }); const handler = function (route, options) { - return function (request, h) { - return 'new handler: ' + options.msg; - }; + return function (request, h) { + return 'new handler: ' + options.msg; + }; }; // Change the default payload processing for this handler handler.defaults = { - payload: { - output: 'stream', - parse: false, - }, + payload: { + output: 'stream', + parse: false, + }, }; server.decorate('handler', 'test', handler); @@ -1403,17 +1419,17 @@ the current plugin to operate (plugins listed must be registered before the serv or started) where: - `dependencies` - one of: - - a single plugin name string. - - an array of plugin name strings. - - an object where each key is a plugin name and each matching value is a - [version range string](https://www.npmjs.com/package/semver) which must match the registered - plugin version. + - a single plugin name string. + - an array of plugin name strings. + - an object where each key is a plugin name and each matching value is a + [version range string](https://www.npmjs.com/package/semver) which must match the registered + plugin version. - `after` - (optional) a function that is called after all the specified dependencies have been registered and before the server starts. The function is only called if the server is initialized or started. The function signature is `async function(server)` where: - - `server` - the server the `dependency()` method was called on. + - `server` - the server the `dependency()` method was called on. Return value: none. @@ -1424,14 +1440,14 @@ function to be called after the other). ```js const after = function (server) { - // Additional plugin registration logic + // Additional plugin registration logic }; exports.plugin = { - name: 'example', - register: function (server, options) { - server.dependency('yar', after); - }, + name: 'example', + register: function (server, options) { + server.dependency('yar', after); + }, }; ``` @@ -1440,12 +1456,12 @@ Dependencies can also be set via the plugin `dependencies` property (does not su ```js exports.plugin = { - name: 'test', - version: '1.0.0', - dependencies: { - yar: '1.x.x', - }, - register: function (server, options) {}, + name: 'test', + version: '1.0.0', + dependencies: { + yar: '1.x.x', + }, + register: function (server, options) {}, }; ``` @@ -1475,8 +1491,8 @@ Return value: none. const Zlib = require('zlib'); const Hapi = require('@hapi/hapi'); const server = Hapi.server({ - port: 80, - routes: { compression: { special: { chunkSize: 16 * 1024 } } }, + port: 80, + routes: { compression: { special: { chunkSize: 16 * 1024 } } }, }); server.encoder('special', (options) => Zlib.createGzip(options)); @@ -1487,22 +1503,24 @@ server.encoder('special', (options) => Zlib.createGzip(options)); Register custom application events where: - `events` - must be one of: - - an event name string. - - an event options object with the following optional keys (unless noted otherwise): - - `name` - the event name string (required). + - an event name string. - - `channels` - a string or array of strings specifying the event channels available. Defaults to no channel restrictions (event updates can specify a channel or not). + - an event options object with the following optional keys (unless noted otherwise): - - `clone` - if `true`, the `data` object passed to [`server.events.emit()`](#server.events.emit()) is cloned before it is passed to the listeners (unless an override specified by each listener). Defaults to `false` (`data` is passed as-is). + - `name` - the event name string (required). - - `spread` - if `true`, the `data` object passed to [`server.event.emit()`](#server.event.emit()) must be an array and the `listener` method is called with each array element passed as a separate argument (unless an override specified by each listener). This should only be used when the emitted data structure is known and predictable. Defaults to `false` (`data` is emitted as a single argument regardless of its type). + - `channels` - a string or array of strings specifying the event channels available. Defaults to no channel restrictions (event updates can specify a channel or not). - - `tags` - if `true` and the `criteria` object passed to [`server.event.emit()`](#server.event.emit()) includes `tags`, the tags are mapped to an object (where each tag string is the key and the value is `true`) which is appended to the arguments list at the end. A configuration override can be set by each listener. Defaults to `false`. + - `clone` - if `true`, the `data` object passed to [`server.events.emit()`](#server.events.emit()) is cloned before it is passed to the listeners (unless an override specified by each listener). Defaults to `false` (`data` is passed as-is). - - `shared` - if `true`, the same event `name` can be registered multiple times where the second registration is ignored. Note that if the registration config is changed between registrations, only the first configuration is used. Defaults to `false` (a duplicate registration will throw an error). + - `spread` - if `true`, the `data` object passed to [`server.event.emit()`](#server.event.emit()) must be an array and the `listener` method is called with each array element passed as a separate argument (unless an override specified by each listener). This should only be used when the emitted data structure is known and predictable. Defaults to `false` (`data` is emitted as a single argument regardless of its type). - - an array containing any of the above. + - `tags` - if `true` and the `criteria` object passed to [`server.event.emit()`](#server.event.emit()) includes `tags`, the tags are mapped to an object (where each tag string is the key and the value is `true`) which is appended to the arguments list at the end. A configuration override can be set by each listener. Defaults to `false`. + + - `shared` - if `true`, the same event `name` can be registered multiple times where the second registration is ignored. Note that if the registration config is changed between registrations, only the first configuration is used. Defaults to `false` (a duplicate registration will throw an error). + + - an array containing any of the above. Return value: none. @@ -1510,10 +1528,10 @@ Return value: none. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - server.event('test'); - server.events.on('test', (update) => console.log(update)); - await server.events.gauge('test', 'hello'); + const server = Hapi.server({ port: 80 }); + server.event('test'); + server.events.on('test', (update) => console.log(update)); + await server.events.gauge('test', 'hello'); } ``` @@ -1522,11 +1540,12 @@ async function example() { Emits a custom application event to all the subscribed listeners where: - `criteria` - the event update criteria which must be one of: - - the event name string. - - an object with the following optional keys (unless noted otherwise): - - `name` - the event name string (required). - - `channel` - the channel name string. - - `tags` - a tag string or array of tag strings. + + - the event name string. + - an object with the following optional keys (unless noted otherwise): + - `name` - the event name string (required). + - `channel` - the channel name string. + - `tags` - a tag string or array of tag strings. - `data` - the value emitted to the subscribers. If `data` is a function, the function signature is `function()` and it called once to generate (return value) the actual data emitted to the listeners. If no listeners match the event, the `data` function is not invoked. @@ -1538,10 +1557,10 @@ Note that events must be registered before they can be emitted or subscribed to const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - server.event('test'); - server.events.on('test', (update) => console.log(update)); - server.events.emit('test', 'hello'); + const server = Hapi.server({ port: 80 }); + server.event('test'); + server.events.on('test', (update) => console.log(update)); + server.events.emit('test', 'hello'); } ``` @@ -1550,43 +1569,47 @@ async function example() { Subscribe to an event where: - `criteria` - the subscription criteria which must be one of: - - event name string which can be any of the [built-in server events](#server.events) or a - custom application event registered with [`server.event()`](#server.event()). - - - a criteria object with the following optional keys (unless noted otherwise): - - `name` - (required) the event name string. - - - `channels` - a string or array of strings specifying the event channels to subscribe to. - If the event registration specified a list of allowed channels, the `channels` array must - match the allowed channels. If `channels` are specified, event updates without any - channel designation will not be included in the subscription. Defaults to no channels - filter. - - - `clone` - if `true`, the `data` object passed to [`server.event.emit()`](#server.event.emit()) - is cloned before it is passed to the `listener` method. Defaults to the event - registration option (which defaults to `false`). - - - `count` - a positive integer indicating the number of times the `listener` can be called - after which the subscription is automatically removed. A count of `1` is the same as - calling `server.events.once()`. Defaults to no limit. - - - `filter` - the event tags (if present) to subscribe to which can be one of: - - a tag string. - - an array of tag strings. - - an object with the following: - - `tags` - a tag string or array of tag strings. - - `all` - if `true`, all `tags` must be present for the event update to match the - subscription. Defaults to `false` (at least one matching tag). - - `spread` - if `true`, and the `data` object passed to [`server.event.emit()`](#server.event.emit()) - is an array, the `listener` method is called with each array element passed as a separate - argument. This should only be used when the emitted data structure is known and - predictable. Defaults to the event registration option (which defaults to `false`). + - event name string which can be any of the [built-in server events](#server.events) or a + custom application event registered with [`server.event()`](#server.event()). + + - a criteria object with the following optional keys (unless noted otherwise): + + - `name` - (required) the event name string. + + - `channels` - a string or array of strings specifying the event channels to subscribe to. + If the event registration specified a list of allowed channels, the `channels` array must + match the allowed channels. If `channels` are specified, event updates without any + channel designation will not be included in the subscription. Defaults to no channels + filter. + + - `clone` - if `true`, the `data` object passed to [`server.event.emit()`](#server.event.emit()) + is cloned before it is passed to the `listener` method. Defaults to the event + registration option (which defaults to `false`). + + - `count` - a positive integer indicating the number of times the `listener` can be called + after which the subscription is automatically removed. A count of `1` is the same as + calling `server.events.once()`. Defaults to no limit. + + - `filter` - the event tags (if present) to subscribe to which can be one of: + + - a tag string. + - an array of tag strings. + - an object with the following: - - `tags` - if `true` and the `criteria` object passed to [`server.event.emit()`](#server.event.emit()) - includes `tags`, the tags are mapped to an object (where each tag string is the key and - the value is `true`) which is appended to the arguments list at the end. Defaults to the - event registration option (which defaults to `false`). + - `tags` - a tag string or array of tag strings. + - `all` - if `true`, all `tags` must be present for the event update to match the + subscription. Defaults to `false` (at least one matching tag). + + - `spread` - if `true`, and the `data` object passed to [`server.event.emit()`](#server.event.emit()) + is an array, the `listener` method is called with each array element passed as a separate + argument. This should only be used when the emitted data structure is known and + predictable. Defaults to the event registration option (which defaults to `false`). + + - `tags` - if `true` and the `criteria` object passed to [`server.event.emit()`](#server.event.emit()) + includes `tags`, the tags are mapped to an object (where each tag string is the key and + the value is `true`) which is appended to the arguments list at the end. Defaults to the + event registration option (which defaults to `false`). - `listener` - the handler method set to receive event updates. The function signature depends on the event argument, and the `spread` and `tags` options. @@ -1598,10 +1621,10 @@ Return value: none. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - server.event('test'); - server.events.on('test', (update) => console.log(update)); - server.events.emit('test', 'hello'); + const server = Hapi.server({ port: 80 }); + server.event('test'); + server.events.on('test', (update) => console.log(update)); + server.events.emit('test', 'hello'); } ``` @@ -1615,11 +1638,11 @@ Return value: none. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - server.event('test'); - server.events.once('test', (update) => console.log(update)); - server.events.emit('test', 'hello'); - server.events.emit('test', 'hello'); // Ignored + const server = Hapi.server({ port: 80 }); + server.event('test'); + server.events.once('test', (update) => console.log(update)); + server.events.emit('test', 'hello'); + server.events.emit('test', 'hello'); // Ignored } ``` @@ -1633,11 +1656,11 @@ Return value: a promise that resolves when the event is emitted. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - server.event('test'); - const pending = server.events.once('test'); - server.events.emit('test', 'hello'); - const update = await pending; + const server = Hapi.server({ port: 80 }); + server.event('test'); + const pending = server.events.once('test'); + server.events.emit('test', 'hello'); + const update = await pending; } ``` @@ -1654,10 +1677,10 @@ Used within a plugin to expose a property via [`server.plugins[name]`](#server.p - `key` - the key assigned ([`server.plugins[name][key]`](#server.plugins)). - `value` - the value assigned. - `options` - optional settings: - - `scope` - controls how to handle the presence of a plugin scope in the name (e.g. `@hapi/test`): - - `false` - the scope is removed (e.g. `@hapi/test` is changed to `test` under `server.plugins`). This is the default. - - `true` - the scope is retained as-is (e.g. `@hapi/test` is used as `server.plugins['@hapi/test']`). - - `'underscore'` - the scope is rewritten (e.g. `@hapi/test` is used as `server.plugins.hapi__test`). + - `scope` - controls how to handle the presence of a plugin scope in the name (e.g. `@hapi/test`): + - `false` - the scope is removed (e.g. `@hapi/test` is changed to `test` under `server.plugins`). This is the default. + - `true` - the scope is retained as-is (e.g. `@hapi/test` is used as `server.plugins['@hapi/test']`). + - `'underscore'` - the scope is rewritten (e.g. `@hapi/test` is used as `server.plugins.hapi__test`). Return value: none. @@ -1681,10 +1704,10 @@ Return value: none. ```js exports.plugin = { - name: 'example', - register: function (server, options) { - server.expose({ util: () => console.log('something') }); - }, + name: 'example', + register: function (server, options) { + server.expose({ util: () => console.log('something') }); + }, }; ``` @@ -1699,40 +1722,45 @@ Registers an extension function in one of the [request lifecycle](#request-lifec points where: - `events` - an object or array of objects with the following: - - `type` - (required) the extension point event name. The available extension points include - the [request extension points](#request-lifecycle) as well as the following server extension - points: - - `'onPreStart'` - called before the connection listeners are started. - - `'onPostStart'` - called after the connection listeners are started. - - `'onPreStop'` - called before the connection listeners are stopped. - - `'onPostStop'` - called after the connection listeners are stopped. - - `method` - (required) a function or an array of functions to be executed at a specified point - during request processing. The required extension function signature is: - - server extension points: `async function(server)` where: - - `server` - the server object. - - `this` - the object provided via `options.bind` or the current active context set - with [`server.bind()`](#server.bind()). + - `type` - (required) the extension point event name. The available extension points include + the [request extension points](#request-lifecycle) as well as the following server extension + points: + + - `'onPreStart'` - called before the connection listeners are started. + - `'onPostStart'` - called after the connection listeners are started. + - `'onPreStop'` - called before the connection listeners are stopped. + - `'onPostStop'` - called after the connection listeners are stopped. + + - `method` - (required) a function or an array of functions to be executed at a specified point + during request processing. The required extension function signature is: + + - server extension points: `async function(server)` where: - - request extension points: a [lifecycle method](#lifecycle-methods). + - `server` - the server object. + - `this` - the object provided via `options.bind` or the current active context set + with [`server.bind()`](#server.bind()). - - `options` - (optional) an object with the following: - - `before` - a string or array of strings of plugin names this method must execute before - (on the same event). Otherwise, extension methods are executed in the order added. + - request extension points: a [lifecycle method](#lifecycle-methods). - - `after` - a string or array of strings of plugin names this method must execute after (on - the same event). Otherwise, extension methods are executed in the order added. + - `options` - (optional) an object with the following: - - `bind` - a context object passed back to the provided method (via `this`) when called. - Ignored if the method is an arrow function. + - `before` - a string or array of strings of plugin names this method must execute before + (on the same event). Otherwise, extension methods are executed in the order added. - - `sandbox` - if set to `'plugin'` when adding a [request extension points](#request-lifecycle) - the extension is only added to routes defined by the current plugin. Not allowed when - configuring route-level extensions, or when adding server extensions. Defaults to - `'server'` which applies to any route added to the server the extension is added to. + - `after` - a string or array of strings of plugin names this method must execute after (on + the same event). Otherwise, extension methods are executed in the order added. - - `timeout` - number of milliseconds to wait for the `method` to complete before returning - a timeout error. Defaults to no timeout. + - `bind` - a context object passed back to the provided method (via `this`) when called. + Ignored if the method is an arrow function. + + - `sandbox` - if set to `'plugin'` when adding a [request extension points](#request-lifecycle) + the extension is only added to routes defined by the current plugin. Not allowed when + configuring route-level extensions, or when adding server extensions. Defaults to + `'server'` which applies to any route added to the server the extension is added to. + + - `timeout` - number of milliseconds to wait for the `method` to complete before returning + a timeout error. Defaults to no timeout. Return value: none. @@ -1740,22 +1768,22 @@ Return value: none. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); + const server = Hapi.server({ port: 80 }); - server.ext({ - type: 'onRequest', - method: function (request, h) { - // Change all requests to '/test' + server.ext({ + type: 'onRequest', + method: function (request, h) { + // Change all requests to '/test' - request.setUrl('/test'); - return h.continue; - }, - }); + request.setUrl('/test'); + return h.continue; + }, + }); - server.route({ method: 'GET', path: '/test', handler: () => 'ok' }); - await server.start(); + server.route({ method: 'GET', path: '/test', handler: () => 'ok' }); + await server.start(); - // All requests will get routed to '/test' + // All requests will get routed to '/test' } ``` @@ -1771,19 +1799,19 @@ Return value: a promise if `method` is omitted, otherwise `undefined`. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); + const server = Hapi.server({ port: 80 }); - server.ext('onRequest', function (request, h) { - // Change all requests to '/test' + server.ext('onRequest', function (request, h) { + // Change all requests to '/test' - request.setUrl('/test'); - return h.continue; - }); + request.setUrl('/test'); + return h.continue; + }); - server.route({ method: 'GET', path: '/test', handler: () => 'ok' }); - await server.start(); + server.route({ method: 'GET', path: '/test', handler: () => 'ok' }); + await server.start(); - // All requests will get routed to '/test' + // All requests will get routed to '/test' } ``` @@ -1806,8 +1834,8 @@ const Hapi = require('@hapi/hapi'); const Hoek = require('@hapi/hoek'); async function example() { - const server = Hapi.server({ port: 80 }); - await server.initialize(); + const server = Hapi.server({ port: 80 }); + await server.initialize(); } ``` @@ -1821,66 +1849,69 @@ The method utilizes the [**shot**](https://hapi.dev/family/shot/api) module for injections, with some additional options and response properties: - `options` - can be assigned a string with the requested URI, or an object with: - - `method` - (optional) the request HTTP method (e.g. `'POST'`). Defaults to `'GET'`. - - `url` - (required) the request URL. If the URI includes an authority - (e.g. `'example.com:8080'`), it is used to automatically set an HTTP 'Host' header, unless - one was specified in `headers`. + - `method` - (optional) the request HTTP method (e.g. `'POST'`). Defaults to `'GET'`. - - `authority` - (optional) a string specifying the HTTP 'Host' header value. Only used if 'Host' - is not specified in `headers` and the `url` does not include an authority component. - Default is inferred from runtime server information. + - `url` - (required) the request URL. If the URI includes an authority + (e.g. `'example.com:8080'`), it is used to automatically set an HTTP 'Host' header, unless + one was specified in `headers`. - - `headers` - (optional) an object with optional request headers where each key is the header - name and the value is the header content. Defaults to no additions to the default **shot** - headers. + - `authority` - (optional) a string specifying the HTTP 'Host' header value. Only used if 'Host' + is not specified in `headers` and the `url` does not include an authority component. + Default is inferred from runtime server information. - - `payload` - (optional) an string, buffer or object containing the request payload. In case of - an object it will be converted to a string for you. Defaults to no payload. Note that payload - processing defaults to `'application/json'` if no 'Content-Type' header provided. + - `headers` - (optional) an object with optional request headers where each key is the header + name and the value is the header content. Defaults to no additions to the default **shot** + headers. - - `auth` - (optional) an object containing parsed authentication credentials where: - - `strategy` - (required) the authentication strategy name matching the provided - credentials. + - `payload` - (optional) an string, buffer or object containing the request payload. In case of + an object it will be converted to a string for you. Defaults to no payload. Note that payload + processing defaults to `'application/json'` if no 'Content-Type' header provided. - - `credentials` - (required) a credentials object containing authentication information. - The `credentials` are used to bypass the default authentication strategies, and are - validated directly as if they were received via an authentication scheme. + - `auth` - (optional) an object containing parsed authentication credentials where: - - `artifacts` - (optional) an artifacts object containing authentication artifact - information. The `artifacts` are used to bypass the default authentication strategies, - and are validated directly as if they were received via an authentication scheme. - Defaults to no artifacts. + - `strategy` - (required) the authentication strategy name matching the provided + credentials. - - `payload` - (optional) disables payload authentication when set to false. - Only required when an authentication strategy requires payload authentication. - Defaults to `true`. + - `credentials` - (required) a credentials object containing authentication information. + The `credentials` are used to bypass the default authentication strategies, and are + validated directly as if they were received via an authentication scheme. - - `app` - (optional) sets the initial value of `request.app`, defaults to `{}`. + - `artifacts` - (optional) an artifacts object containing authentication artifact + information. The `artifacts` are used to bypass the default authentication strategies, + and are validated directly as if they were received via an authentication scheme. + Defaults to no artifacts. - - `plugins` - (optional) sets the initial value of `request.plugins`, defaults to `{}`. + - `payload` - (optional) disables payload authentication when set to false. + Only required when an authentication strategy requires payload authentication. + Defaults to `true`. - - `allowInternals` - (optional) allows access to routes with `options.isInternal` set to `true`. - Defaults to `false`. + - `app` - (optional) sets the initial value of `request.app`, defaults to `{}`. - - `remoteAddress` - (optional) sets the remote address for the incoming connection. + - `plugins` - (optional) sets the initial value of `request.plugins`, defaults to `{}`. - - `simulate` - (optional) an object with options used to simulate client request stream - conditions for testing: - - `error` - if `true`, emits an `'error'` event after payload transmission (if any). + - `allowInternals` - (optional) allows access to routes with `options.isInternal` set to `true`. Defaults to `false`. - - `close` - if `true`, emits a `'close'` event after payload transmission (if any). - Defaults to `false`. + - `remoteAddress` - (optional) sets the remote address for the incoming connection. + + - `simulate` - (optional) an object with options used to simulate client request stream + conditions for testing: - - `end` - if `false`, does not end the stream. Defaults to `true`. + - `error` - if `true`, emits an `'error'` event after payload transmission (if any). + Defaults to `false`. - - `split` - indicates whether the request payload will be split into chunks. Defaults to - `undefined`, meaning payload will not be chunked. + - `close` - if `true`, emits a `'close'` event after payload transmission (if any). + Defaults to `false`. - - `validate` - (optional) if `false`, the `options` inputs are not validated. This is - recommended for run-time usage of `inject()` to make it perform faster where input validation - can be tested separately. + - `end` - if `false`, does not end the stream. Defaults to `true`. + + - `split` - indicates whether the request payload will be split into chunks. Defaults to + `undefined`, meaning payload will not be chunked. + + - `validate` - (optional) if `false`, the `options` inputs are not validated. This is + recommended for run-time usage of `inject()` to make it perform faster where input validation + can be tested separately. Return value: a response object with the following properties: @@ -1893,8 +1924,9 @@ Return value: a response object with the following properties: - `rawPayload` - the raw response payload buffer. - `raw` - an object with the injection request and response objects: - - `req` - the simulated node request object. - - `res` - the simulated node response object. + + - `req` - the simulated node request object. + - `res` - the simulated node response object. - `result` - the raw handler response (e.g. when not a stream or a view) before it is serialized for transmission. If not available, the value is set to `payload`. Useful for @@ -1910,11 +1942,11 @@ the `data` property. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - server.route({ method: 'GET', path: '/', handler: () => 'Success!' }); + const server = Hapi.server({ port: 80 }); + server.route({ method: 'GET', path: '/', handler: () => 'Success!' }); - const res = await server.inject('/'); - console.log(res.result); // 'Success!' + const res = await server.inject('/'); + console.log(res.result); // 'Success!' } ``` @@ -1943,9 +1975,9 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); server.events.on('log', (event, tags) => { - if (tags.error) { - console.log(event); - } + if (tags.error) { + console.log(event); + } }); server.log(['test', 'error'], 'Test event'); @@ -1963,12 +1995,12 @@ Return value: the [route information](#request.route) if found, otherwise `null` const Hapi = require('@hapi/hapi'); const server = Hapi.server(); server.route({ - method: 'GET', - path: '/', - options: { - id: 'root', - handler: () => 'ok', - }, + method: 'GET', + path: '/', + options: { + id: 'root', + handler: () => 'ok', + }, }); const route = server.lookup('root'); @@ -1988,12 +2020,12 @@ Return value: the [route information](#request.route) if found, otherwise `null` const Hapi = require('@hapi/hapi'); const server = Hapi.server(); server.route({ - method: 'GET', - path: '/', - options: { - id: 'root', - handler: () => 'ok', - }, + method: 'GET', + path: '/', + options: { + id: 'root', + handler: () => 'ok', + }, }); const route = server.match('get', '/'); @@ -2006,26 +2038,27 @@ Registers a [server method](#server.methods) where: - `name` - a unique method name used to invoke the method via [`server.methods[name]`](#server.method). - `method` - the method function with a signature `async function(...args, [flags])` where: - - `...args` - the method function arguments (can be any number of arguments or none). - - `flags` - when caching is enabled, an object used to set optional method result flags. This - parameter is provided automatically and can only be accessed/modified within the method - function. It cannot be passed as an argument. - - `ttl` - `0` if result is valid but cannot be cached. Defaults to cache policy. + - `...args` - the method function arguments (can be any number of arguments or none). + - `flags` - when caching is enabled, an object used to set optional method result flags. This + parameter is provided automatically and can only be accessed/modified within the method + function. It cannot be passed as an argument. + - `ttl` - `0` if result is valid but cannot be cached. Defaults to cache policy. - `options` - (optional) configuration object: - - `bind` - a context object passed back to the method function (via `this`) when called. - Defaults to active context (set via [`server.bind()`](#server.bind()) when the method is - registered. Ignored if the method is an arrow function. - - `cache` - the same cache configuration used in [`server.cache()`](#server.cache()). The - `generateTimeout` option is required, and the `generateFunc` options is not allowed. + - `bind` - a context object passed back to the method function (via `this`) when called. + Defaults to active context (set via [`server.bind()`](#server.bind()) when the method is + registered. Ignored if the method is an arrow function. + + - `cache` - the same cache configuration used in [`server.cache()`](#server.cache()). The + `generateTimeout` option is required, and the `generateFunc` options is not allowed. - - `generateKey` - a function used to generate a unique key (for caching) from the arguments - passed to the method function (the `flags` argument is not passed as input). The server - will automatically generate a unique key if the function's arguments are all of types - `'string'`, `'number'`, or `'boolean'`. However if the method uses other types of arguments, - a key generation function must be provided which takes the same arguments as the function and - returns a unique string (or `null` if no key can be generated). + - `generateKey` - a function used to generate a unique key (for caching) from the arguments + passed to the method function (the `flags` argument is not passed as input). The server + will automatically generate a unique key if the function's arguments are all of types + `'string'`, `'number'`, or `'boolean'`. However if the method uses other types of arguments, + a key generation function must be provided which takes the same arguments as the function and + returns a unique string (or `null` if no key can be generated). Return value: none. @@ -2041,14 +2074,14 @@ Simple arguments example: const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); + const server = Hapi.server({ port: 80 }); - const add = (a, b) => a + b; - server.method('sum', add, { - cache: { expiresIn: 2000, generateTimeout: 100 }, - }); + const add = (a, b) => a + b; + server.method('sum', add, { + cache: { expiresIn: 2000, generateTimeout: 100 }, + }); - console.log(await server.methods.sum(4, 5)); // 9 + console.log(await server.methods.sum(4, 5)); // 9 } ``` @@ -2058,25 +2091,25 @@ Object argument example: const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); + const server = Hapi.server({ port: 80 }); - const addArray = function (array) { - let sum = 0; - array.forEach((item) => { - sum += item; - }); + const addArray = function (array) { + let sum = 0; + array.forEach((item) => { + sum += item; + }); - return sum; - }; + return sum; + }; - const options = { - cache: { expiresIn: 2000, generateTimeout: 100 }, - generateKey: (array) => array.join(','), - }; + const options = { + cache: { expiresIn: 2000, generateTimeout: 100 }, + generateKey: (array) => array.join(','), + }; - server.method('sumObj', addArray, options); + server.method('sumObj', addArray, options); - console.log(await server.methods.sumObj([5, 6])); // 11 + console.log(await server.methods.sumObj([5, 6])); // 11 } ``` @@ -2086,26 +2119,27 @@ Registers a server method function as described in [`server.method()`](#server.m configuration object where: - `methods` - an object or an array of objects where each one contains: - - `name` - the method name. - - `method` - the method function. - - `options` - (optional) settings. + + - `name` - the method name. + - `method` - the method function. + - `options` - (optional) settings. Return value: none. ```js const add = function (a, b) { - return a + b; + return a + b; }; server.method({ - name: 'sum', - method: add, - options: { - cache: { - expiresIn: 2000, - generateTimeout: 100, + name: 'sum', + method: add, + options: { + cache: { + expiresIn: 2000, + generateTimeout: 100, + }, }, - }, }); ``` @@ -2125,17 +2159,17 @@ after it has been set. ```js exports.plugin = { - name: 'example', - register: function (server, options) { - // Assuming the Inert plugin was registered previously - - server.path(__dirname + '../static'); - server.route({ - path: '/file', - method: 'GET', - handler: { file: './test.html' }, - }); - }, + name: 'example', + register: function (server, options) { + // Assuming the Inert plugin was registered previously + + server.path(__dirname + '../static'); + server.route({ + path: '/file', + method: 'GET', + handler: { file: './test.html' }, + }); + }, }; ``` @@ -2144,34 +2178,37 @@ exports.plugin = { Registers a plugin where: - `plugins` - one or an array of: - - a [plugin object](#plugins). - - an object with the following: - - `plugin` - a [plugin object](#plugins). - - `options` - (optional) options passed to the plugin during registration. - - `once`, `routes` - (optional) plugin-specific registration options as defined below. + - a [plugin object](#plugins). + + - an object with the following: + - `plugin` - a [plugin object](#plugins). + - `options` - (optional) options passed to the plugin during registration. + - `once`, `routes` - (optional) plugin-specific registration options as defined below. - `options` - (optional) registration options (different from the options passed to the registration function): - - `once` - if `true`, subsequent registrations of the same plugin are skipped without error. - Cannot be used with plugin options. Defaults to `false`. - If not set to `true`, an error will be thrown the second time a plugin is registered on the server. - - `routes` - modifiers applied to each route added by the plugin: - - `prefix` - string added as prefix to any route path (must begin with `'/'`). If a plugin - registers a child plugin the `prefix` is passed on to the child or is added in front of - the child-specific prefix. - - `vhost` - virtual host string (or array of strings) applied to every route. The - outer-most `vhost` overrides the any nested configuration. + - `once` - if `true`, subsequent registrations of the same plugin are skipped without error. + Cannot be used with plugin options. Defaults to `false`. + If not set to `true`, an error will be thrown the second time a plugin is registered on the server. + + - `routes` - modifiers applied to each route added by the plugin: + + - `prefix` - string added as prefix to any route path (must begin with `'/'`). If a plugin + registers a child plugin the `prefix` is passed on to the child or is added in front of + the child-specific prefix. + - `vhost` - virtual host string (or array of strings) applied to every route. The + outer-most `vhost` overrides the any nested configuration. Return value: a reference to the `server`. ```js async function example() { - await server.register({ - plugin: require('plugin_name'), - options: { message: 'hello' }, - }); + await server.register({ + plugin: require('plugin_name'), + options: { message: 'hello' }, + }); } ``` @@ -2181,35 +2218,36 @@ Adds a route where: - `route` - a route configuration object or an array of configuration objects where each object contains: - - `path` - (required) the absolute path used to match incoming requests (must begin with '/'). - Incoming requests are compared to the configured paths based on the server's - [`router`](#server.options.router) configuration. The path can include named parameters - enclosed in `{}` which will be matched against literal values in the request as described in - [Path parameters](#path-parameters). - - - `method` - (required) the HTTP method. Typically one of 'GET', 'POST', 'PUT', 'PATCH', - 'DELETE', or 'OPTIONS'. Any HTTP method is allowed, except for 'HEAD'. Use `'*'` to match - against any HTTP method (only when an exact match was not found, and any match with a - specific method will be given a higher priority over a wildcard match). Can be assigned an - array of methods which has the same result as adding the same route with different methods - manually. - - - `vhost` - (optional) a domain string or an array of domain strings for limiting the route to - only requests with a matching host header field. Matching is done against the hostname part - of the header only (excluding the port). Defaults to all hosts. - - - `handler` - (required when [`handler`](#route.options.handler) is not set) the route - handler function called to generate the response after successful authentication and - validation. - - - `options` - additional [route options](#route-options). The `options` value can be an object - or a function that returns an object using the signature `function(server)` where `server` is - the server the route is being added to and `this` is bound to the current - [realm](#server.realm)'s `bind` option. - - - `rules` - route custom rules object. The object is passed to each rules processor registered - with [`server.rules()`](#server.rules()). Cannot be used if - [`route.options.rules`](#route.options.rules) is defined. + + - `path` - (required) the absolute path used to match incoming requests (must begin with '/'). + Incoming requests are compared to the configured paths based on the server's + [`router`](#server.options.router) configuration. The path can include named parameters + enclosed in `{}` which will be matched against literal values in the request as described in + [Path parameters](#path-parameters). + + - `method` - (required) the HTTP method. Typically one of 'GET', 'POST', 'PUT', 'PATCH', + 'DELETE', or 'OPTIONS'. Any HTTP method is allowed, except for 'HEAD'. Use `'*'` to match + against any HTTP method (only when an exact match was not found, and any match with a + specific method will be given a higher priority over a wildcard match). Can be assigned an + array of methods which has the same result as adding the same route with different methods + manually. + + - `vhost` - (optional) a domain string or an array of domain strings for limiting the route to + only requests with a matching host header field. Matching is done against the hostname part + of the header only (excluding the port). Defaults to all hosts. + + - `handler` - (required when [`handler`](#route.options.handler) is not set) the route + handler function called to generate the response after successful authentication and + validation. + + - `options` - additional [route options](#route-options). The `options` value can be an object + or a function that returns an object using the signature `function(server)` where `server` is + the server the route is being added to and `this` is bound to the current + [realm](#server.realm)'s `bind` option. + + - `rules` - route custom rules object. The object is passed to each rules processor registered + with [`server.rules()`](#server.rules()). Cannot be used if + [`route.options.rules`](#route.options.rules) is defined. Return value: none. @@ -2227,10 +2265,10 @@ server.route({ method: 'GET', path: '/status', handler: () => 'ok' }); // Handler in config const user = { - cache: { expiresIn: 5000 }, - handler: function (request, h) { - return { name: 'John' }; - }, + cache: { expiresIn: 5000 }, + handler: function (request, h) { + return { name: 'John' }; + }, }; server.route({ method: 'GET', path: '/user', options: user }); @@ -2238,20 +2276,20 @@ server.route({ method: 'GET', path: '/user', options: user }); // An array of routes server.route([ - { - method: 'GET', - path: '/1', - handler: function (request, h) { - return 'ok'; + { + method: 'GET', + path: '/1', + handler: function (request, h) { + return 'ok'; + }, }, - }, - { - method: 'GET', - path: '/2', - handler: function (request, h) { - return 'ok'; + { + method: 'GET', + path: '/2', + handler: function (request, h) { + return 'ok'; + }, }, - }, ]); ``` @@ -2275,17 +2313,17 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const getAlbum = function (request, h) { - return ( - 'You asked for ' + - (request.params.song ? request.params.song + ' from ' : '') + - request.params.album - ); + return ( + 'You asked for ' + + (request.params.song ? request.params.song + ' from ' : '') + + request.params.album + ); }; server.route({ - path: '/{album}/{song?}', - method: 'GET', - handler: getAlbum, + path: '/{album}/{song?}', + method: 'GET', + handler: getAlbum, }); ``` @@ -2299,14 +2337,14 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const getPerson = function (request, h) { - const nameParts = request.params.name.split('/'); - return { first: nameParts[0], last: nameParts[1] }; + const nameParts = request.params.name.split('/'); + return { first: nameParts[0], last: nameParts[1] }; }; server.route({ - path: '/person/{name*2}', // Matches '/person/john/doe' - method: 'GET', - handler: getPerson, + path: '/person/{name*2}', // Matches '/person/john/doe' + method: 'GET', + handler: getPerson, }); ``` @@ -2339,7 +2377,7 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const handler = function (request, h) { - return h.response('The page was not found').code(404); + return h.response('The page was not found').code(404); }; server.route({ method: '*', path: '/{p*}', handler }); @@ -2350,17 +2388,17 @@ server.route({ method: '*', path: '/{p*}', handler }); Defines a route rules processor for converting route rules object into route configuration where: - `processor` - a function using the signature `function(rules, info)` where: - - `rules` - the [custom object](#route.options.rules) defined in your routes configuration for you to use its values. - - `info` - an object with the following properties: - - `method` - the route method. - - `path` - the route path. - - `vhost` - the route virtual host (if any defined). - - returns a route config object. + - `rules` - the [custom object](#route.options.rules) defined in your routes configuration for you to use its values. + - `info` - an object with the following properties: + - `method` - the route method. + - `path` - the route path. + - `vhost` - the route virtual host (if any defined). + - returns a route config object. - `options` - optional settings: - - `validate` - rules object validation: - - `schema` - **joi** schema. - - `options` - optional **joi** validation options. Defaults to `{ allowUnknown: true }`. + - `validate` - rules object validation: + - `schema` - **joi** schema. + - `options` - optional **joi** validation options. Defaults to `{ allowUnknown: true }`. Note that the root server and each plugin server instance can only register one rules processor. If a route is added after the rules are configured, it will not include the rules config. Routes @@ -2370,62 +2408,62 @@ processor if they overlap. Similarly, the route's own config overrides the confi ```js const validateSchema = { - auth: Joi.string(), - myCustomPre: Joi.array().min(2).items(Joi.string()), - payload: Joi.object(), + auth: Joi.string(), + myCustomPre: Joi.array().min(2).items(Joi.string()), + payload: Joi.object(), }; const myPreHelper = (name) => { - return { - method: (request, h) => { - return `hello ${name || 'world'}!`; - }, - assign: 'myPreHelper', - }; + return { + method: (request, h) => { + return `hello ${name || 'world'}!`; + }, + assign: 'myPreHelper', + }; }; const processor = (rules, info) => { - if (!rules) { - return null; - } + if (!rules) { + return null; + } - const options = {}; + const options = {}; - if (rules.auth) { - options.auth = { - strategy: rules.auth, - validate: { - entity: 'user', - }, - }; - } + if (rules.auth) { + options.auth = { + strategy: rules.auth, + validate: { + entity: 'user', + }, + }; + } - if (rules.myCustomPre) { - options.pre = [myPreHelper(...rules.myCustomPre)]; - } + if (rules.myCustomPre) { + options.pre = [myPreHelper(...rules.myCustomPre)]; + } - if (rules.payload) { - options.validate = { payload: Joi.object(rules.payload) }; - } + if (rules.payload) { + options.validate = { payload: Joi.object(rules.payload) }; + } - return options; + return options; }; server.rules(processor, { - validate: { schema: validateSchema }, + validate: { schema: validateSchema }, }); server.route({ - method: 'GET', - path: '/', - rules: { - auth: 'jwt', - myCustomPre: ['arg1', 'arg2'], - payload: { a: Joi.boolean(), b: Joi.string() }, - }, - options: { - id: 'my-route', - }, + method: 'GET', + path: '/', + rules: { + auth: 'jwt', + myCustomPre: ['arg1', 'arg2'], + payload: { a: Joi.boolean(), b: Joi.string() }, + }, + options: { + id: 'my-route', + }, }); ``` @@ -2450,9 +2488,9 @@ will be emitted and no extension points invoked. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - await server.start(); - console.log('Server started at: ' + server.info.uri); + const server = Hapi.server({ port: 80 }); + await server.start(); + console.log('Server started at: ' + server.info.uri); } ``` @@ -2464,53 +2502,59 @@ across multiple requests. Registers a cookie definitions where: - `name` - the cookie name string. - `options` - are the optional cookie settings: - - `ttl` - time-to-live in milliseconds. Defaults to `null` (session time-life - cookies are deleted when the browser is closed). - - `isSecure` - sets the 'Secure' flag. Defaults to `true`. + - `ttl` - time-to-live in milliseconds. Defaults to `null` (session time-life - cookies are deleted when the browser is closed). - - `isHttpOnly` - sets the 'HttpOnly' flag. Defaults to `true`. + - `isSecure` - sets the 'Secure' flag. Defaults to `true`. - - `isSameSite` - sets the ['SameSite' flag](https://www.owasp.org/index.php/SameSite). The value must be one of: - - `false` - no flag. - - `'Strict'` - sets the value to `'Strict'` (this is the default value). - - `'Lax'` - sets the value to `'Lax'`. - - `'None'` - sets the value to `'None'`. + - `isHttpOnly` - sets the 'HttpOnly' flag. Defaults to `true`. - - `isPartitioned` - sets the ['Partitioned' flag](https://developers.google.com/privacy-sandbox/3pcd/chips). Defaults to `false`. Requires `isSecure` to be `true` and `isSameSite` to be `'None'`. + - `isSameSite` - sets the ['SameSite' flag](https://www.owasp.org/index.php/SameSite). The value must be one of: - - `path` - the path scope. Defaults to `null` (no path). + - `false` - no flag. + - `'Strict'` - sets the value to `'Strict'` (this is the default value). + - `'Lax'` - sets the value to `'Lax'`. + - `'None'` - sets the value to `'None'`. - - `domain` - the domain scope. Defaults to `null` (no domain). + - `isPartitioned` - sets the ['Partitioned' flag](https://developers.google.com/privacy-sandbox/3pcd/chips). Defaults to `false`. Requires `isSecure` to be `true` and `isSameSite` to be `'None'`. - - `autoValue` - if present and the cookie was not received from the client or explicitly set by the route handler, the cookie is automatically added to the response with the provided value. The value can be a function with signature `async function(request)` where: - - `request` - the [request object](#request). + - `path` - the path scope. Defaults to `null` (no path). + + - `domain` - the domain scope. Defaults to `null` (no domain). + + - `autoValue` - if present and the cookie was not received from the client or explicitly set by the route handler, the cookie is automatically added to the response with the provided value. The value can be a function with signature `async function(request)` where: - - `encoding` - encoding performs on the provided value before serialization. Options are: - - `'none'` - no encoding. When used, the cookie value must be a string. This is the default value. - - `'base64'` - string value is encoded using Base64. - - `'base64json'` - object value is JSON-stringified then encoded using Base64. - - `'form'` - object value is encoded using the _x-www-form-urlencoded_ method. - - `'iron'` - Encrypts and sign the value using [**iron**](https://hapi.dev/family/iron/api). + - `request` - the [request object](#request). - - `sign` - an object used to calculate an HMAC for cookie integrity validation. This does not provide privacy, only a mean to verify that the cookie value was generated by the server. Redundant when `'iron'` encoding is used. Options are: - - `integrity` - algorithm options. Defaults to [`require('iron').defaults.integrity`](https://hapi.dev/family/iron/api/#options). - - `password` - password used for HMAC key generation (must be at least 32 characters long). + - `encoding` - encoding performs on the provided value before serialization. Options are: - - `password` - password used for `'iron'` encoding (must be at least 32 characters long). + - `'none'` - no encoding. When used, the cookie value must be a string. This is the default value. + - `'base64'` - string value is encoded using Base64. + - `'base64json'` - object value is JSON-stringified then encoded using Base64. + - `'form'` - object value is encoded using the _x-www-form-urlencoded_ method. + - `'iron'` - Encrypts and sign the value using [**iron**](https://hapi.dev/family/iron/api). - - `iron` - options for `'iron'` encoding. Defaults to [`require('iron').defaults`](https://hapi.dev/family/iron/api/#options). + - `sign` - an object used to calculate an HMAC for cookie integrity validation. This does not provide privacy, only a mean to verify that the cookie value was generated by the server. Redundant when `'iron'` encoding is used. Options are: - - `ignoreErrors` - if `true`, errors are ignored and treated as missing cookies. + - `integrity` - algorithm options. Defaults to [`require('iron').defaults.integrity`](https://hapi.dev/family/iron/api/#options). + - `password` - password used for HMAC key generation (must be at least 32 characters long). - - `clearInvalid` - if `true`, automatically instruct the client to remove invalid cookies. Defaults to `false`. + - `password` - password used for `'iron'` encoding (must be at least 32 characters long). - - `strictHeader` - if `false`, allows any cookie value including values in violation of [RFC 6265](https://tools.ietf.org/html/rfc6265). Defaults to `true`. + - `iron` - options for `'iron'` encoding. Defaults to [`require('iron').defaults`](https://hapi.dev/family/iron/api/#options). - - `passThrough` - used by proxy plugins (e.g. [**h2o2**](https://hapi.dev/family/h2o2/api)). + - `ignoreErrors` - if `true`, errors are ignored and treated as missing cookies. - - `contextualize` - a function using the signature `async function(definition, request)` used to override a request-specific cookie settings where: - - `definition` - a copy of the `options` to be used for formatting the cookie that can be manipulated by the function to customize the request cookie header. Note that changing the `definition.contextualize` property will be ignored. - - `request` - the current request object. + - `clearInvalid` - if `true`, automatically instruct the client to remove invalid cookies. Defaults to `false`. + + - `strictHeader` - if `false`, allows any cookie value including values in violation of [RFC 6265](https://tools.ietf.org/html/rfc6265). Defaults to `true`. + + - `passThrough` - used by proxy plugins (e.g. [**h2o2**](https://hapi.dev/family/h2o2/api)). + + - `contextualize` - a function using the signature `async function(definition, request)` used to override a request-specific cookie settings where: + + - `definition` - a copy of the `options` to be used for formatting the cookie that can be manipulated by the function to customize the request cookie header. Note that changing the `definition.contextualize` property will be ignored. + - `request` - the current request object. Return value: none. @@ -2524,23 +2568,23 @@ const server = Hapi.server({ port: 80 }); // Set cookie definition server.state('session', { - ttl: 24 * 60 * 60 * 1000, // One day - isSecure: true, - path: '/', - encoding: 'base64json', + ttl: 24 * 60 * 60 * 1000, // One day + isSecure: true, + path: '/', + encoding: 'base64json', }); // Set state in route handler const handler = function (request, h) { - let session = request.state.session; - if (!session) { - session = { user: 'joe' }; - } + let session = request.state.session; + if (!session) { + session = { user: 'joe' }; + } - session.last = Date.now(); + session.last = Date.now(); - return h.response('Success').state('session', session); + return h.response('Success').state('session', session); }; ``` @@ -2557,12 +2601,12 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); server.events.on( - { name: 'request', channels: 'internal' }, - (request, event, tags) => { - if (tags.error && tags.state) { - console.error(event); - } - }, + { name: 'request', channels: 'internal' }, + (request, event, tags) => { + if (tags.error && tags.state) { + console.error(event); + } + }, ); ``` @@ -2578,9 +2622,9 @@ Formats an HTTP 'Set-Cookie' header based on the [`server.options.state`](#serve where: - `cookies` - a single object or an array of object where each contains: - - `name` - the cookie name. - - `value` - the cookie value. - - `options` - cookie configuration to override the server settings. + - `name` - the cookie name. + - `value` - the cookie value. + - `options` - cookie configuration to override the server settings. Return value: a header string. @@ -2604,14 +2648,15 @@ Stops the server's listener by refusing to accept any new connections or request connections will continue until closed or timeout), where: - `options` - (optional) object with: - - `timeout` - sets the timeout in millisecond before forcefully terminating any open - connections that arrived before the server stopped accepting new connections. The timeout - only applies to waiting for existing connections to close, and not to any - [`'onPreStop'` or `'onPostStop'` server extensions](#server.ext.args()) which can - delay or block the stop operation indefinitely. Ignored if - [`server.options.operations.cleanStop`](#server.options.operations) is `false`. Note that if - the server is set as a [group controller](#server.control()), the timeout is per controlled - server and the controlling server itself. Defaults to `5000` (5 seconds). + + - `timeout` - sets the timeout in millisecond before forcefully terminating any open + connections that arrived before the server stopped accepting new connections. The timeout + only applies to waiting for existing connections to close, and not to any + [`'onPreStop'` or `'onPostStop'` server extensions](#server.ext.args()) which can + delay or block the stop operation indefinitely. Ignored if + [`server.options.operations.cleanStop`](#server.options.operations) is `false`. Note that if + the server is set as a [group controller](#server.control()), the timeout is per controlled + server and the controlling server itself. Defaults to `5000` (5 seconds). Return value: none. @@ -2619,10 +2664,10 @@ Return value: none. const Hapi = require('@hapi/hapi'); async function example() { - const server = Hapi.server({ port: 80 }); - await server.start(); - await server.stop({ timeout: 60 * 1000 }); - console.log('Server stopped'); + const server = Hapi.server({ port: 80 }); + await server.start(); + await server.stop({ timeout: 60 * 1000 }); + console.log('Server stopped'); } ``` @@ -2662,8 +2707,8 @@ const Hapi = require('@hapi/hapi'); const Joi = require('joi'); async function example() { - const server = Hapi.server({ port: 80 }); - server.validator(Joi); + const server = Hapi.server({ port: 80 }); + server.validator(Joi); } ``` @@ -2785,9 +2830,10 @@ response. Caching can be customized using an object with the following options: - `privacy` - determines the privacy flag included in client-side caching using the 'Cache-Control' header. Values are: - - `'default'` - no privacy flag. - - `'public'` - mark the response as suitable for public caching. - - `'private'` - mark the response as suitable only for private caching. + + - `'default'` - no privacy flag. + - `'public'` - mark the response as suitable for public caching. + - `'private'` - mark the response as suitable only for private caching. - `expiresIn` - relative expiration expressed in the number of milliseconds since the item was saved in the cache. Cannot be used together with `expiresAt`. @@ -2884,7 +2930,7 @@ The route handler function performs the main business logic of the route and set ```js const handler = function (request, h) { - return 'success'; + return 'success'; }; ``` @@ -3004,12 +3050,14 @@ Overrides payload processing for multipart requests. Value can be one of: - `true` - enable multipart processing using the [`output`](#route.options.payload.output) value. - an object with the following required options: - - `output` - same as the [`output`](#route.options.payload.output) option with an additional - value option: - - `annotated` - wraps each multipart part in an object with the following keys: - - `headers` - the part headers. - - `filename` - the part file name. - - `payload` - the processed part payload. + + - `output` - same as the [`output`](#route.options.payload.output) option with an additional + value option: + - `annotated` - wraps each multipart part in an object with the following keys: + + - `headers` - the part headers. + - `filename` - the part file name. + - `payload` - the processed part payload. #### `route.options.payload.output` @@ -3116,12 +3164,12 @@ to execute but will be ignored once completed. - an array containing the elements listed below, which are executed in parallel. - an object with: - - `method` - a [lifecycle method](#lifecycle-methods). - - `assign` - key name used to assign the response of the method to in [`request.pre`](#request.pre) - and [`request.preResponses`](#request.preResponses). - - `failAction` - A [`failAction` value](#lifecycle-failAction) which determine what to do when - a pre-handler method throws an error. If `assign` is specified and the `failAction` setting - is not `'error'`, the error will be assigned. + - `method` - a [lifecycle method](#lifecycle-methods). + - `assign` - key name used to assign the response of the method to in [`request.pre`](#request.pre) + and [`request.preResponses`](#request.preResponses). + - `failAction` - A [`failAction` value](#lifecycle-failAction) which determine what to do when + a pre-handler method throws an error. If `assign` is specified and the `failAction` setting + is not `'error'`, the error will be assigned. - a method function - same as including an object with a single `method` key. @@ -3137,33 +3185,33 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const pre1 = function (request, h) { - return 'Hello'; + return 'Hello'; }; const pre2 = function (request, h) { - return 'World'; + return 'World'; }; const pre3 = function (request, h) { - return request.pre.m1 + ' ' + request.pre.m2; + return request.pre.m1 + ' ' + request.pre.m2; }; server.route({ - method: 'GET', - path: '/', - options: { - pre: [ - [ - // m1 and m2 executed in parallel - { method: pre1, assign: 'm1' }, - { method: pre2, assign: 'm2' }, - ], - { method: pre3, assign: 'm3' }, - ], - handler: function (request, h) { - return request.pre.m3 + '!\n'; + method: 'GET', + path: '/', + options: { + pre: [ + [ + // m1 and m2 executed in parallel + { method: pre1, assign: 'm1' }, + { method: pre2, assign: 'm2' }, + ], + { method: pre3, assign: 'm3' }, + ], + handler: function (request, h) { + return request.pre.m3 + '!\n'; + }, }, - }, }); ``` @@ -3234,14 +3282,15 @@ The default response payload validation rules (for all non-error responses) expr the validation function. - a validation function using the signature `async function(value, options)` where: - - `value` - the pending response payload. - - `options` - The [`options`](#route.options.response.options) along with the request context - (`{ headers, params, query, payload, state, app, auth }`). - - if the function returns a value and [`modify`](#route.options.response.modify) is `true`, - the value is used as the new response. If the original response is an error, the return - value is used to override the original error `output.payload`. If an error is thrown, the - error is processed according to [`failAction`](#route.options.response.failAction). + - `value` - the pending response payload. + - `options` - The [`options`](#route.options.response.options) along with the request context + (`{ headers, params, query, payload, state, app, auth }`). + + - if the function returns a value and [`modify`](#route.options.response.modify) is `true`, + the value is used as the new response. If the original response is an error, the return + value is used to override the original error `output.payload`. If an error is thrown, the + error is processed according to [`failAction`](#route.options.response.failAction). #### `route.options.response.status` @@ -3267,41 +3316,44 @@ Sets common security headers. To enable, set `security` to `true` or to an objec following options: - `hsts` - controls the 'Strict-Transport-Security' header, where: - - `true` - the header will be set to `max-age=15768000`. This is the default value. - - a number - the maxAge parameter will be set to the provided value. - - an object with the following fields: - - `maxAge` - the max-age portion of the header, as a number. Default is `15768000`. - - `includeSubDomains` - a boolean specifying whether to add the `includeSubDomains` flag to - the header. - - `preload` - a boolean specifying whether to add the `'preload'` flag (used to submit - domains inclusion in Chrome's HTTP Strict Transport Security (HSTS) preload list) to the - header. + - `true` - the header will be set to `max-age=15768000`. This is the default value. + - a number - the maxAge parameter will be set to the provided value. + + - an object with the following fields: + - `maxAge` - the max-age portion of the header, as a number. Default is `15768000`. + - `includeSubDomains` - a boolean specifying whether to add the `includeSubDomains` flag to + the header. + - `preload` - a boolean specifying whether to add the `'preload'` flag (used to submit + domains inclusion in Chrome's HTTP Strict Transport Security (HSTS) preload list) to the + header. - `xframe` - controls the 'X-Frame-Options' header, where: - - `true` - the header will be set to `'DENY'`. This is the default value. - - `'deny'` - the headers will be set to `'DENY'`. - - `'sameorigin'` - the headers will be set to `'SAMEORIGIN'`. - - - an object for specifying the 'allow-from' rule, where: - - `rule` - one of: - - `'deny'` - - `'sameorigin'` - - `'allow-from'` - - `source` - when `rule` is `'allow-from'` this is used to form the rest of the header, - otherwise this field is ignored. If `rule` is `'allow-from'` but `source` is unset, the - rule will be automatically changed to `'sameorigin'`. + + - `true` - the header will be set to `'DENY'`. This is the default value. + - `'deny'` - the headers will be set to `'DENY'`. + - `'sameorigin'` - the headers will be set to `'SAMEORIGIN'`. + + - an object for specifying the 'allow-from' rule, where: + - `rule` - one of: + - `'deny'` + - `'sameorigin'` + - `'allow-from'` + - `source` - when `rule` is `'allow-from'` this is used to form the rest of the header, + otherwise this field is ignored. If `rule` is `'allow-from'` but `source` is unset, the + rule will be automatically changed to `'sameorigin'`. - `xss` - controls the 'X-XSS-Protection' header, where: - - `'disabled'` - the header will be set to `'0'`. This is the default value. - - `'enabled'` - the header will be set to `'1; mode=block'`. - - `false` - the header will be omitted. - Note: when enabled, this setting can create a security vulnerabilities in versions of Internet Explorer - below 8, unpatched versions of IE8, and browsers that employ an XSS filter/auditor. See - [here](https://hackademix.net/2009/11/21/ies-xss-filter-creates-xss-vulnerabilities/), - [here](https://technet.microsoft.com/library/security/ms10-002), and - [here](https://blog.innerht.ml/the-misunderstood-x-xss-protection/) for more information. + - `'disabled'` - the header will be set to `'0'`. This is the default value. + - `'enabled'` - the header will be set to `'1; mode=block'`. + - `false` - the header will be omitted. + + Note: when enabled, this setting can create a security vulnerabilities in versions of Internet Explorer + below 8, unpatched versions of IE8, and browsers that employ an XSS filter/auditor. See + [here](https://hackademix.net/2009/11/21/ies-xss-filter-creates-xss-vulnerabilities/), + [here](https://technet.microsoft.com/library/security/ms10-002), and + [here](https://blog.innerht.ml/the-misunderstood-x-xss-protection/) for more information. - `noOpen` - boolean controlling the 'X-Download-Options' header for Internet Explorer, preventing downloads from executing in your context. Defaults to `true` setting the header to `'noopen'`. @@ -3310,16 +3362,16 @@ following options: the header to its only and default option, `'nosniff'`. - `referrer` - controls the ['Referrer-Policy'](https://www.w3.org/TR/referrer-policy/) header, which has the following possible values. - - `false` - the 'Referrer-Policy' header will not be sent to clients with responses. This is the default value. - - `''` - instructs clients that the Referrer-Policy will be [defined elsewhere](https://www.w3.org/TR/referrer-policy/#referrer-policy-empty-string), such as in a meta html tag. - - `'no-referrer'` - instructs clients to never include the referrer header when making requests. - - `'no-referrer-when-downgrade'` - instructs clients to never include the referrer when navigating from HTTPS to HTTP. - - `'same-origin'` - instructs clients to only include the referrer on the current site origin. - - `'origin'` - instructs clients to include the referrer but strip off path information so that the value is the current origin only. - - `'strict-origin'` - same as `'origin'` but instructs clients to omit the referrer header when going from HTTPS to HTTP. - - `'origin-when-cross-origin'` - instructs clients to include the full path in the referrer header for same-origin requests but only the origin components of the URL are included for cross origin requests. - - `'strict-origin-when-cross-origin'` - same as `'origin-when-cross-origin'` but the client is instructed to omit the referrer when going from HTTPS to HTTP. - - `'unsafe-url'` - instructs the client to always include the referrer with the full URL. + - `false` - the 'Referrer-Policy' header will not be sent to clients with responses. This is the default value. + - `''` - instructs clients that the Referrer-Policy will be [defined elsewhere](https://www.w3.org/TR/referrer-policy/#referrer-policy-empty-string), such as in a meta html tag. + - `'no-referrer'` - instructs clients to never include the referrer header when making requests. + - `'no-referrer-when-downgrade'` - instructs clients to never include the referrer when navigating from HTTPS to HTTP. + - `'same-origin'` - instructs clients to only include the referrer on the current site origin. + - `'origin'` - instructs clients to include the referrer but strip off path information so that the value is the current origin only. + - `'strict-origin'` - same as `'origin'` but instructs clients to omit the referrer header when going from HTTPS to HTTP. + - `'origin-when-cross-origin'` - instructs clients to include the full path in the referrer header for same-origin requests but only the origin components of the URL are included for cross origin requests. + - `'strict-origin-when-cross-origin'` - same as `'origin-when-cross-origin'` but the client is instructed to omit the referrer when going from HTTPS to HTTP. + - `'unsafe-url'` - instructs the client to always include the referrer with the full URL. ### `route.options.state` @@ -3396,12 +3448,13 @@ Validation rules for incoming request headers: - a [**joi**](https://joi.dev/api) validation object. - a validation function using the signature `async function(value, options)` where: - - `value` - the [`request.headers`](#request.headers) object containing the request headers. - - `options` - [`options`](#route.options.validate.options). - - if a value is returned, the value is used as the new [`request.headers`](#request.headers) - value and the original value is stored in [`request.orig.headers`](#request.orig). - Otherwise, the headers are left unchanged. If an error is thrown, the error is handled - according to [`failAction`](#route.options.validate.failAction). + + - `value` - the [`request.headers`](#request.headers) object containing the request headers. + - `options` - [`options`](#route.options.validate.options). + - if a value is returned, the value is used as the new [`request.headers`](#request.headers) + value and the original value is stored in [`request.orig.headers`](#request.orig). + Otherwise, the headers are left unchanged. If an error is thrown, the error is handled + according to [`failAction`](#route.options.validate.failAction). Note that all header field names must be in lowercase to match the headers normalized by node. @@ -3440,13 +3493,14 @@ extracting any parameters, and storing them in [`request.params`](#request.param - a [**joi**](https://joi.dev/api) validation object. - a validation function using the signature `async function(value, options)` where: - - `value` - the [`request.params`](#request.params) object containing the request path - parameters. - - `options` - [`options`](#route.options.validate.options). - - if a value is returned, the value is used as the new [`request.params`](#request.params) - value and the original value is stored in [`request.orig.params`](#request.orig). Otherwise, - the path parameters are left unchanged. If an error is thrown, the error is handled according - to [`failAction`](#route.options.validate.failAction). + + - `value` - the [`request.params`](#request.params) object containing the request path + parameters. + - `options` - [`options`](#route.options.validate.options). + - if a value is returned, the value is used as the new [`request.params`](#request.params) + value and the original value is stored in [`request.orig.params`](#request.orig). Otherwise, + the path parameters are left unchanged. If an error is thrown, the error is handled according + to [`failAction`](#route.options.validate.failAction). Note that failing to match the validation rules to the route path parameters definition will cause all requests to fail. @@ -3462,18 +3516,19 @@ Validation rules for incoming request payload (request body), where: - `false` - no payload allowed. - a [**joi**](https://joi.dev/api) validation object. - - Note that empty payloads are represented by a `null` value. If a validation schema is - provided and empty payload are allowed, the schema must be explicitly defined by setting the - rule to a **joi** schema with `null` allowed (e.g. - `Joi.object({ /* keys here */ }).allow(null)`). + - Note that empty payloads are represented by a `null` value. If a validation schema is + provided and empty payload are allowed, the schema must be explicitly defined by setting the + rule to a **joi** schema with `null` allowed (e.g. + `Joi.object({ /* keys here */ }).allow(null)`). - a validation function using the signature `async function(value, options)` where: - - `value` - the [`request.payload`](#request.payload) object containing the request payload. - - `options` - [`options`](#route.options.validate.options). - - if a value is returned, the value is used as the new [`request.payload`](#request.payload) - value and the original value is stored in [`request.orig.payload`](#request.orig). Otherwise, - the payload is left unchanged. If an error is thrown, the error is handled according to - [`failAction`](#route.options.validate.failAction). + + - `value` - the [`request.payload`](#request.payload) object containing the request payload. + - `options` - [`options`](#route.options.validate.options). + - if a value is returned, the value is used as the new [`request.payload`](#request.payload) + value and the original value is stored in [`request.orig.payload`](#request.orig). Otherwise, + the payload is left unchanged. If an error is thrown, the error is handled according to + [`failAction`](#route.options.validate.failAction). Note that validating large payloads and modifying them will cause memory duplication of the payload (since the original is kept), as well as the significant performance cost of validating large @@ -3494,13 +3549,14 @@ Validation rules for incoming request URI query component (the key-value part of - a [**joi**](https://joi.dev/api) validation object. - a validation function using the signature `async function(value, options)` where: - - `value` - the [`request.query`](#request.query) object containing the request query - parameters. - - `options` - [`options`](#route.options.validate.options). - - if a value is returned, the value is used as the new [`request.query`](#request.query) value - and the original value is stored in [`request.orig.query`](#request.orig). Otherwise, the - query parameters are left unchanged. If an error is thrown, the error is handled according to - [`failAction`](#route.options.validate.failAction). + + - `value` - the [`request.query`](#request.query) object containing the request query + parameters. + - `options` - [`options`](#route.options.validate.options). + - if a value is returned, the value is used as the new [`request.query`](#request.query) value + and the original value is stored in [`request.orig.query`](#request.orig). Otherwise, the + query parameters are left unchanged. If an error is thrown, the error is handled according to + [`failAction`](#route.options.validate.failAction). Note that changes to the query parameters will not be reflected in [`request.url`](#request.url). @@ -3518,12 +3574,13 @@ Validation rules for incoming cookies. The `cookie` header is parsed and decoded - a [**joi**](https://joi.dev/api) validation object. - a validation function using the signature `async function(value, options)` where: - - `value` - the [`request.state`](#request.state) object containing all parsed cookie values. - - `options` - [`options`](#route.options.validate.options). - - if a value is returned, the value is used as the new [`request.state`](#request.state) value - and the original value is stored in [`request.orig.state`](#request.orig). Otherwise, the - cookie values are left unchanged. If an error is thrown, the error is handled according to - [`failAction`](#route.options.validate.failAction). + + - `value` - the [`request.state`](#request.state) object containing all parsed cookie values. + - `options` - [`options`](#route.options.validate.options). + - if a value is returned, the value is used as the new [`request.state`](#request.state) value + and the original value is stored in [`request.orig.state`](#request.orig). Otherwise, the + cookie values are left unchanged. If an error is thrown, the error is handled according to + [`failAction`](#route.options.validate.failAction). #### `route.options.validate.validator` @@ -3540,99 +3597,99 @@ server and route configurations, but the order in which the applicable steps are the same. The following is the complete list of steps a request can go through: - _**onRequest**_ - - always called when `onRequest` extensions exist. - - the request path and method can be modified via the [`request.setUrl()`](#request.setUrl()) and [`request.setMethod()`](#request.setMethod()) methods. Changes to the request path or method will impact how the request is routed and can be used for rewrite rules. - - [`request.payload`](#request.payload) is `undefined` and can be overridden with any non-`undefined` value to bypass payload processing. - - [`request.route`](#request.route) is unassigned. - - [`request.url`](#request.url) can be `null` if the incoming request path is invalid. - - [`request.path`](#request.path) can be an invalid path. + - always called when `onRequest` extensions exist. + - the request path and method can be modified via the [`request.setUrl()`](#request.setUrl()) and [`request.setMethod()`](#request.setMethod()) methods. Changes to the request path or method will impact how the request is routed and can be used for rewrite rules. + - [`request.payload`](#request.payload) is `undefined` and can be overridden with any non-`undefined` value to bypass payload processing. + - [`request.route`](#request.route) is unassigned. + - [`request.url`](#request.url) can be `null` if the incoming request path is invalid. + - [`request.path`](#request.path) can be an invalid path. - _**Route lookup**_ - - lookup based on `request.path` and `request.method`. - - skips to _**onPreResponse**_ if no route is found or if the path violates the HTTP - specification. + - lookup based on `request.path` and `request.method`. + - skips to _**onPreResponse**_ if no route is found or if the path violates the HTTP + specification. - _**Cookies processing**_ - - based on the route [`state`](#route.options.state) option. - - error handling based on [`failAction`](#route.options.state.failAction). + - based on the route [`state`](#route.options.state) option. + - error handling based on [`failAction`](#route.options.state.failAction). - _**onPreAuth**_ - - called regardless if authentication is performed. + - called regardless if authentication is performed. - _**Authentication**_ - - based on the route [`auth`](#route.options.auth) option. + - based on the route [`auth`](#route.options.auth) option. - _**Payload processing**_ - - based on the route [`payload`](#route.options.payload) option and if [`request.payload`](#request.payload) has not been overridden in _**onRequest**_. - - error handling based on [`failAction`](#route.options.payload.failAction). + - based on the route [`payload`](#route.options.payload) option and if [`request.payload`](#request.payload) has not been overridden in _**onRequest**_. + - error handling based on [`failAction`](#route.options.payload.failAction). - _**Payload authentication**_ - - based on the route [`auth`](#route.options.auth) option. + - based on the route [`auth`](#route.options.auth) option. - _**onCredentials**_ - - called only if authentication is performed. + - called only if authentication is performed. - _**Authorization**_ - - based on the route authentication [`access`](#route.options.auth.access) option. + - based on the route authentication [`access`](#route.options.auth.access) option. - _**onPostAuth**_ - - called regardless if authentication is performed. + - called regardless if authentication is performed. - _**Headers validation**_ - - based on the route [`validate.headers`](#route.options.validate.headers) option. - - error handling based on [`failAction`](#route.options.validate.failAction). + - based on the route [`validate.headers`](#route.options.validate.headers) option. + - error handling based on [`failAction`](#route.options.validate.failAction). - _**Path parameters validation**_ - - based on the route [`validate.params`](#route.options.validate.params) option. - - error handling based on [`failAction`](#route.options.validate.failAction). + - based on the route [`validate.params`](#route.options.validate.params) option. + - error handling based on [`failAction`](#route.options.validate.failAction). - _**Query validation**_ - - based on the route [`validate.query`](#route.options.validate.query) option. - - error handling based on [`failAction`](#route.options.validate.failAction). + - based on the route [`validate.query`](#route.options.validate.query) option. + - error handling based on [`failAction`](#route.options.validate.failAction). - _**Payload validation**_ - - based on the route [`validate.payload`](#route.options.validate.payload) option. - - error handling based on [`failAction`](#route.options.validate.failAction). + - based on the route [`validate.payload`](#route.options.validate.payload) option. + - error handling based on [`failAction`](#route.options.validate.failAction). - _**State validation**_ - - based on the route [`validate.state`](#route.options.validate.state) option. - - error handling based on [`failAction`](#route.options.validate.failAction). + - based on the route [`validate.state`](#route.options.validate.state) option. + - error handling based on [`failAction`](#route.options.validate.failAction). - _**onPreHandler**_ - _**Pre-handler methods**_ - - based on the route [`pre`](#route.options.pre) option. - - error handling based on each pre-handler method's `failAction` setting. + - based on the route [`pre`](#route.options.pre) option. + - error handling based on each pre-handler method's `failAction` setting. - _**Route handler**_ - - executes the route [`handler`](#route.options.handler). + - executes the route [`handler`](#route.options.handler). - _**onPostHandler**_ - - the response contained in [`request.response`](#request.response) may be modified (but not - assigned a new value). To return a different response type (for example, replace an error - with an HTML response), return a new response value. + - the response contained in [`request.response`](#request.response) may be modified (but not + assigned a new value). To return a different response type (for example, replace an error + with an HTML response), return a new response value. - _**Response validation**_ - - error handling based on [`failAction`](#route.options.response.failAction). + - error handling based on [`failAction`](#route.options.response.failAction). - _**onPreResponse**_ - - always called, unless the request is aborted. - - the response contained in [`request.response`](#request.response) may be modified (but not - assigned a new value). To return a different response type (for example, replace an error - with an HTML response), return a new response value. Note that any errors generated will not - be passed back to _**onPreResponse**_ to prevent an infinite loop. + - always called, unless the request is aborted. + - the response contained in [`request.response`](#request.response) may be modified (but not + assigned a new value). To return a different response type (for example, replace an error + with an HTML response), return a new response value. Note that any errors generated will not + be passed back to _**onPreResponse**_ to prevent an infinite loop. - _**Response transmission**_ - - may emit a [`'request'` event](#server.events.request) on the `'error'` channel. + - may emit a [`'request'` event](#server.events.request) on the `'error'` channel. - _**Finalize request**_ - - emits `'response'` event. + - emits `'response'` event. - _**onPostResponse**_ - - return value is ignored since the response is already set. - - emits a [`'request'` event](#server.events.request) on the `'error'` channel if an error is returned. - - all extension handlers are executed even if some error. - - note that since the handlers are executed in serial (each is `await`ed), care must be taken to avoid blocking execution if other extension handlers expect to be called immediately when the response is sent. If an _**onPostResponse**_ handler is performing IO, it should defer that activity to another tick and return immediately (either without a return value or without a promise that is solve to resolve). + - return value is ignored since the response is already set. + - emits a [`'request'` event](#server.events.request) on the `'error'` channel if an error is returned. + - all extension handlers are executed even if some error. + - note that since the handlers are executed in serial (each is `await`ed), care must be taken to avoid blocking execution if other extension handlers expect to be called immediately when the response is sent. If an _**onPostResponse**_ handler is performing IO, it should defer that activity to another tick and return immediately (either without a return value or without a promise that is solve to resolve). ### Lifecycle methods @@ -3657,39 +3714,39 @@ error response is sent. The return value must be one of: - Plain value: - - `null` - - string - - number - - boolean + - `null` + - string + - number + - boolean - `Buffer` object - `Error` object - - plain `Error`. - - a [`Boom`](https://hapi.dev/family/boom/api) object. + - plain `Error`. + - a [`Boom`](https://hapi.dev/family/boom/api) object. - `Stream` object - - must be compatible with the "streams2" API and not be in `objectMode`. - - if the stream object has a `statusCode` property, that status code will be used as - the default response code based on the [`passThrough`](#response.settings.passThrough) - option. - - if the stream object has a `headers` property, the headers will be included in the response - based on the [`passThrough`](#response.settings.passThrough) option. - - if the stream object has a function property `setCompressor(compressor)` and the response - passes through a compressor, a reference to the compressor stream will be passed to the - response stream via this method. + - must be compatible with the "streams2" API and not be in `objectMode`. + - if the stream object has a `statusCode` property, that status code will be used as + the default response code based on the [`passThrough`](#response.settings.passThrough) + option. + - if the stream object has a `headers` property, the headers will be included in the response + based on the [`passThrough`](#response.settings.passThrough) option. + - if the stream object has a function property `setCompressor(compressor)` and the response + passes through a compressor, a reference to the compressor stream will be passed to the + response stream via this method. - any object or array - - must not include circular references. + - must not include circular references. - a toolkit signal: - - [`h.abandon`](#h.abandon) - abort processing the request. - - [`h.close`](#h.close) - abort processing the request and call `end()` to ensure the response - is closed. - - [`h.continue`](#h.continue) - continue processing the request lifecycle without changing the - response. + - [`h.abandon`](#h.abandon) - abort processing the request. + - [`h.close`](#h.close) - abort processing the request and call `end()` to ensure the response + is closed. + - [`h.continue`](#h.continue) - continue processing the request lifecycle without changing the + response. - a toolkit method response: - - [`h.response()`](#h.response()) - wraps a plain response in a [response object](#response-object). - - [`h.redirect()`](#h.redirect()) - wraps a plain response with a redirection directive. - - [`h.authenticated()`](#h.authenticated()) - indicate request authenticated successfully - (auth scheme only). - - [`h.unauthenticated()`](#h.unauthenticated()) - indicate request failed to authenticate - (auth scheme only). + - [`h.response()`](#h.response()) - wraps a plain response in a [response object](#response-object). + - [`h.redirect()`](#h.redirect()) - wraps a plain response with a redirection directive. + - [`h.authenticated()`](#h.authenticated()) - indicate request authenticated successfully + (auth scheme only). + - [`h.unauthenticated()`](#h.unauthenticated()) - indicate request failed to authenticate + (auth scheme only). - a promise object that resolve to any of the above values Any error thrown by a lifecycle method will be used as the [response object](#response-object). While errors and valid @@ -3698,11 +3755,11 @@ a Bad Implementation (500) error response. ```js const handler = function (request, h) { - if (request.query.forbidden) { - throw Boom.badRequest(); - } + if (request.query.forbidden) { + throw Boom.badRequest(); + } - return 'success'; + return 'success'; }; ``` @@ -3716,28 +3773,28 @@ The flow between each lifecycle step depends on the value returned by each lifec follows: - an error: - - the lifecycle skips to the _**Response validation**_ step. - - if returned by the _**onRequest**_ step it skips to the _**onPreResponse**_ step. - - if returned by the _**Response validation**_ step it skips to the _**onPreResponse**_ step. - - if returned by the _**onPreResponse**_ step it skips to the _**Response transmission**_ step. + - the lifecycle skips to the _**Response validation**_ step. + - if returned by the _**onRequest**_ step it skips to the _**onPreResponse**_ step. + - if returned by the _**Response validation**_ step it skips to the _**onPreResponse**_ step. + - if returned by the _**onPreResponse**_ step it skips to the _**Response transmission**_ step. - an abort signal ([`h.abandon`](#h.abandon) or [`h.close`](#h.close)): - - skips to the _**Finalize request**_ step. + - skips to the _**Finalize request**_ step. - a [`h.continue`](#h.continue) signal: - - continues processing the request lifecycle without changing the request response. - - cannot be used by the [`authenticate()`](#authentication-scheme) scheme method. + - continues processing the request lifecycle without changing the request response. + - cannot be used by the [`authenticate()`](#authentication-scheme) scheme method. - a [takeover response](#takeover-response): - - overrides the request response with the provided value and skips to the - _**Response validation**_ step. - - if returned by the _**Response validation**_ step it skips to the _**onPreResponse**_ step. - - if returned by the _**onPreResponse**_ step it skips to the _**Response transmission**_ step. + - overrides the request response with the provided value and skips to the + _**Response validation**_ step. + - if returned by the _**Response validation**_ step it skips to the _**onPreResponse**_ step. + - if returned by the _**onPreResponse**_ step it skips to the _**Response transmission**_ step. - any other response: - - overrides the request response with the provided value and continues processing the request - lifecycle. - - cannot be returned from any step prior to the _**Pre-handler methods**_ step. + - overrides the request response with the provided value and continues processing the request + lifecycle. + - cannot be returned from any step prior to the _**Pre-handler methods**_ step. The [`authenticate()`](#authentication-scheme) method has access to two additional return values: - [`h.authenticated()`](#h.authenticated()) - indicate request authenticated successfully. - [`h.unauthenticated()`](#h.unauthenticated()) - indicate request failed to authenticate. @@ -3763,9 +3820,9 @@ values: - a [lifecycle method](#lifecycle-methods) with the signature `async function(request, h, err)` where: - - `request` - the [request object](#request). - - `h` - the [response toolkit](#response-toolkit). - - `err` - the error object. + - `request` - the [request object](#request). + - `h` - the [response toolkit](#response-toolkit). + - `err` - the error object. #### Errors @@ -3784,19 +3841,19 @@ const Boom = require('@hapi/boom'); const server = Hapi.server(); server.route({ - method: 'GET', - path: '/badRequest', - handler: function (request, h) { - throw Boom.badRequest('Unsupported parameter'); // 400 - }, + method: 'GET', + path: '/badRequest', + handler: function (request, h) { + throw Boom.badRequest('Unsupported parameter'); // 400 + }, }); server.route({ - method: 'GET', - path: '/internal', - handler: function (request, h) { - throw new Error('unexpect error'); // 500 - }, + method: 'GET', + path: '/internal', + handler: function (request, h) { + throw new Error('unexpect error'); // 500 + }, }); ``` @@ -3811,20 +3868,22 @@ following properties: - `output` - the formatted response. Can be directly manipulated after object construction to return a custom error response. Allowed root keys: - - `statusCode` - the HTTP status code (typically 4xx or 5xx). - - `headers` - an object containing any HTTP headers where each key is a header name and value - is the header content. + - `statusCode` - the HTTP status code (typically 4xx or 5xx). + + - `headers` - an object containing any HTTP headers where each key is a header name and value + is the header content. + + - `payload` - the formatted object used as the response payload. Can be directly + manipulated but any changes will be lost + if `reformat()` is called. Any content allowed and by default includes the following content: - - `payload` - the formatted object used as the response payload. Can be directly - manipulated but any changes will be lost - if `reformat()` is called. Any content allowed and by default includes the following content: - - `statusCode` - the HTTP status code, derived from `error.output.statusCode`. + - `statusCode` - the HTTP status code, derived from `error.output.statusCode`. - - `error` - the HTTP status message (e.g. 'Bad Request', 'Internal Server Error') derived - from `statusCode`. + - `error` - the HTTP status message (e.g. 'Bad Request', 'Internal Server Error') derived + from `statusCode`. - - `message` - the error message derived from `error.message`. + - `message` - the error message derived from `error.message`. - inherited `Error` properties. @@ -3856,30 +3915,30 @@ const Vision = require('@hapi/vision'); const server = Hapi.server({ port: 80 }); server.register(Vision, (err) => { - server.views({ - engines: { - html: require('handlebars'), - }, - }); + server.views({ + engines: { + html: require('handlebars'), + }, + }); }); const preResponse = function (request, h) { - const response = request.response; - if (!response.isBoom) { - return h.continue; - } + const response = request.response; + if (!response.isBoom) { + return h.continue; + } - // Replace error with friendly HTML + // Replace error with friendly HTML - const error = response; - const ctx = { - message: - error.output.statusCode === 404 - ? 'page not found' - : 'something went wrong', - }; + const error = response; + const ctx = { + message: + error.output.statusCode === 404 + ? 'page not found' + : 'something went wrong', + }; - return h.view('error', ctx).code(error.output.statusCode); + return h.view('error', ctx).code(error.output.statusCode); }; server.ext('onPreResponse', preResponse); @@ -3946,9 +4005,10 @@ The [request] object. This is a duplication of the `request` lifecycle method ar Used by the [authentication] method to pass back valid credentials where: - `data` - an object with: - - `credentials` - (required) object representing the authenticated entity. - - `artifacts` - (optional) authentication artifacts object specific to the authentication - scheme. + + - `credentials` - (required) object representing the authenticated entity. + - `artifacts` - (optional) authentication artifacts object specific to the authentication + scheme. Return value: an internal authentication object. @@ -3961,10 +4021,10 @@ return as its value which will set a 304 response. Otherwise, it sets the provid and returns `undefined`. The method arguments are: - `options` - a required configuration object with: - - `etag` - the ETag string. Required if `modified` is not present. Defaults to no header. - - `modified` - the Last-Modified header value. Required if `etag` is not present. Defaults to - no header. - - `vary` - same as the [`response.etag()`](#response.etag()) option. Defaults to `true`. + - `etag` - the ETag string. Required if `modified` is not present. Defaults to no header. + - `modified` - the Last-Modified header value. Required if `etag` is not present. Defaults to + no header. + - `vary` - same as the [`response.etag()`](#response.etag()) option. Defaults to `true`. Return value: - a [response object](#response-object) if the response is unmodified. - `undefined` if the response has changed. @@ -3977,20 +4037,20 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); server.route({ - method: 'GET', - path: '/', - options: { - cache: { expiresIn: 5000 }, - handler: function (request, h) { - const response = h.entity({ etag: 'abc' }); - if (response) { - response.header('X', 'y'); - return response; - } - - return 'ok'; + method: 'GET', + path: '/', + options: { + cache: { expiresIn: 5000 }, + handler: function (request, h) { + const response = h.entity({ etag: 'abc' }); + if (response) { + response.header('X', 'y'); + return response; + } + + return 'ok'; + }, }, - }, }); ``` @@ -4002,7 +4062,7 @@ Returns a [response object](#response-object). ```js const handler = function (request, h) { - return h.redirect('http://example.com'); + return h.redirect('http://example.com'); }; ``` @@ -4019,19 +4079,19 @@ Returns a [response object](#response-object). // Detailed notation const handler = function (request, h) { - const response = h.response('success'); - response.type('text/plain'); - response.header('X-Custom', 'some-value'); - return response; + const response = h.response('success'); + response.type('text/plain'); + response.header('X-Custom', 'some-value'); + return response; }; // Chained notation const handler = function (request, h) { - return h - .response('success') - .type('text/plain') - .header('X-Custom', 'some-value'); + return h + .response('success') + .type('text/plain') + .header('X-Custom', 'some-value'); }; ``` @@ -4043,8 +4103,8 @@ Return value: none. ```js const ext = function (request, h) { - h.state('cookie-name', 'value'); - return h.continue; + h.state('cookie-name', 'value'); + return h.continue; }; ``` @@ -4055,9 +4115,9 @@ received where: - `error` - (required) the authentication error. - `data` - (optional) an object with: - - `credentials` - (required) object representing the authenticated entity. - - `artifacts` - (optional) authentication artifacts object specific to the authentication - scheme. + - `credentials` - (required) object representing the authenticated entity. + - `artifacts` - (optional) authentication artifacts object specific to the authentication + scheme. The method is used to pass both the authentication error and the credentials. For example, if a request included expired credentials, it allows the method to pass back the user information @@ -4072,8 +4132,8 @@ Clears a response cookie using the same arguments as [`response.unstate()`](#res ```js const ext = function (request, h) { - h.unstate('cookie-name'); - return h.continue; + h.unstate('cookie-name'); + return h.continue; }; ``` @@ -4122,21 +4182,21 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const preResponse = function (request, h) { - const response = request.response; - if (response.isBoom) { - return null; - } + const response = request.response; + if (response.isBoom) { + return null; + } - const hash = Crypto.createHash('sha1'); - response.events.on('peek', (chunk) => { - hash.update(chunk); - }); + const hash = Crypto.createHash('sha1'); + response.events.on('peek', (chunk) => { + hash.update(chunk); + }); - response.events.once('finish', () => { - console.log(hash.digest('hex')); - }); + response.events.once('finish', () => { + console.log(hash.digest('hex')); + }); - return h.continue; + return h.continue; }; server.ext('onPreResponse', preResponse); @@ -4292,13 +4352,14 @@ Sets the representation [entity tag](https://tools.ietf.org/html/rfc7232#section - `tag` - the entity tag string without the double-quote. - `options` - (optional) settings where: - - `weak` - if `true`, the tag will be prefixed with the `'W/'` weak signifier. Weak tags will - fail to match identical tags for the purpose of determining 304 response status. Defaults to - `false`. - - `vary` - if `true` and content encoding is set or applied to the response (e.g 'gzip' or - 'deflate'), the encoding name will be automatically added to the tag at transmission time - (separated by a `'-'` character). Ignored when `weak` is `true`. Defaults to `true`. + - `weak` - if `true`, the tag will be prefixed with the `'W/'` weak signifier. Weak tags will + fail to match identical tags for the purpose of determining 304 response status. Defaults to + `false`. + + - `vary` - if `true` and content encoding is set or applied to the response (e.g 'gzip' or + 'deflate'), the encoding name will be automatically added to the tag at transmission time + (separated by a `'-'` character). Ignored when `weak` is `true`. Defaults to `true`. Return value: the current response object. @@ -4311,17 +4372,18 @@ Sets an HTTP header where: - `value` - the header value. - `options` - (optional) object where: - - `append` - if `true`, the value is appended to any existing header value using `separator`. - Defaults to `false`. - - `separator` - string used as separator when appending to an existing value. Defaults to `','`. + - `append` - if `true`, the value is appended to any existing header value using `separator`. + Defaults to `false`. + + - `separator` - string used as separator when appending to an existing value. Defaults to `','`. - - `override` - if `false`, the header value is not set if an existing value present. Defaults - to `true`. + - `override` - if `false`, the header value is not set if an existing value present. Defaults + to `true`. - - `duplicate` - if `false`, the header value is not modified if the provided value is already - included. Does not apply when `append` is `false` or if the `name` is `'set-cookie'`. - Defaults to `true`. + - `duplicate` - if `false`, the header value is not modified if the provided value is already + included. Does not apply when `append` is `false` or if the `name` is `'set-cookie'`. + Defaults to `true`. Return value: the current response object. @@ -4531,20 +4593,20 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const onRequest = function (request, h) { - const hash = Crypto.createHash('sha1'); - request.events.on('peek', (chunk) => { - hash.update(chunk); - }); + const hash = Crypto.createHash('sha1'); + request.events.on('peek', (chunk) => { + hash.update(chunk); + }); - request.events.once('finish', () => { - console.log(hash.digest('hex')); - }); + request.events.once('finish', () => { + console.log(hash.digest('hex')); + }); - request.events.once('disconnect', () => { - console.error('request aborted'); - }); + request.events.once('disconnect', () => { + console.error('request aborted'); + }); - return h.continue; + return h.continue; }; server.ext('onRequest', onRequest); @@ -4569,8 +4631,8 @@ Request information: - `cors` - request CORS information (available only after the `'onRequest'` extension point as CORS is configured per-route and no routing decisions are made at that point in the request lifecycle), where: - - `isOriginMatch` - `true` if the request 'Origin' header matches the configured CORS - restrictions. Set to `false` if no 'Origin' header is found or if it does not match. + - `isOriginMatch` - `true` if the request 'Origin' header matches the configured CORS + restrictions. Set to `false` if no 'Origin' header is found or if it does not match. - `host` - content of the HTTP 'Host' header (e.g. 'example.com:8080'). @@ -4722,18 +4784,18 @@ Returns a [`response`](#response-object) which you can pass to [h.response()](#h - `source` - the value to set as the source of [h.response()](#h.response()), optional. - `options` - optional object with the following optional properties: - - `variety` - a sting name of the response type (e.g. `'file'`). - - `prepare` - a function with the signature `async function(response)` used to prepare the response after it is returned by a [lifecycle method](#lifecycle-methods) such as setting a file descriptor, where: - - `response` - the response object being prepared. - - must return the prepared response object (`response`). - - may throw an error which is used as the prepared response. - - `marshal` - a function with the signature `async function(response)` used to prepare the response for transmission to the client before it is sent, where: - - `response` - the response object being marshaled. - - must return the prepared value (not as response object) which can be any value accepted by the [`h.response()`](#h.response()) `value` argument. - - may throw an error which is used as the marshaled value. - - `close` - a function with the signature `function(response)` used to close the resources opened by the response object (e.g. file handlers), where: - - `response` - the response object being marshaled. - - should not throw errors (which are logged but otherwise ignored). + - `variety` - a sting name of the response type (e.g. `'file'`). + - `prepare` - a function with the signature `async function(response)` used to prepare the response after it is returned by a [lifecycle method](#lifecycle-methods) such as setting a file descriptor, where: + - `response` - the response object being prepared. + - must return the prepared response object (`response`). + - may throw an error which is used as the prepared response. + - `marshal` - a function with the signature `async function(response)` used to prepare the response for transmission to the client before it is sent, where: + - `response` - the response object being marshaled. + - must return the prepared value (not as response object) which can be any value accepted by the [`h.response()`](#h.response()) `value` argument. + - may throw an error which is used as the marshaled value. + - `close` - a function with the signature `function(response)` used to close the resources opened by the response object (e.g. file handlers), where: + - `response` - the response object being marshaled. + - should not throw errors (which are logged but otherwise ignored). ### `request.active()` @@ -4744,20 +4806,20 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); server.route({ - method: 'POST', - path: '/worker', - handler: function (request, h) { - // Do some work... - - // Check if request is still active - if (!request.active()) { - return h.close; - } + method: 'POST', + path: '/worker', + handler: function (request, h) { + // Do some work... - // Do some more work... + // Check if request is still active + if (!request.active()) { + return h.close; + } - return null; - }, + // Do some more work... + + return null; + }, }); ``` @@ -4779,17 +4841,17 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80, routes: { log: { collect: true } } }); server.events.on( - { name: 'request', channels: 'app' }, - (request, event, tags) => { - if (tags.error) { - console.log(event); - } - }, + { name: 'request', channels: 'app' }, + (request, event, tags) => { + if (tags.error) { + console.log(event); + } + }, ); const handler = function (request, h) { - request.log(['test', 'error'], 'Test event'); - return null; + request.log(['test', 'error'], 'Test event'); + return null; }; ``` @@ -4798,10 +4860,10 @@ Note that any logs generated by the server internally will be emitted using the ```js server.events.on( - { name: 'request', channels: 'internal' }, - (request, event, tags) => { - console.log(event); - }, + { name: 'request', channels: 'internal' }, + (request, event, tags) => { + console.log(event); + }, ); ``` @@ -4835,9 +4897,9 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const onRequest = function (request, h) { - // Change all requests to 'GET' - request.setMethod('GET'); - return h.continue; + // Change all requests to 'GET' + request.setMethod('GET'); + return h.continue; }; server.ext('onRequest', onRequest); @@ -4859,9 +4921,9 @@ const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 80 }); const onRequest = function (request, h) { - // Change all requests to '/test' - request.setUrl('/test'); - return h.continue; + // Change all requests to '/test' + request.setUrl('/test'); + return h.continue; }; server.ext('onRequest', onRequest); @@ -4880,8 +4942,9 @@ A plugin is an object with the following properties: - `register` - (required) the registration function with the signature `async function(server, options)` where: - - `server` - the server object with a plugin-specific [`server.realm`](#server.realm). - - `options` - any options passed to the plugin during registration via [`server.register()`](#server.register()). + + - `server` - the server object with a plugin-specific [`server.realm`](#server.realm). + - `options` - any options passed to the plugin during registration via [`server.register()`](#server.register()). - `name` - (required) the plugin name string. The name is used as a unique key. Published plugins (e.g. published in the npm registry) should use the same name as the name field in their @@ -4898,25 +4961,26 @@ A plugin is an object with the following properties: as setting dependencies via [`server.dependency()`](#server.dependency()). - `requirements` - (optional) object declaring the plugin supported [semver range](https://semver.org/) for: - - `node` runtime [semver range](https://nodejs.org/en/about/releases/) string. - - `hapi` framework [semver range](#server.version) string. + + - `node` runtime [semver range](https://nodejs.org/en/about/releases/) string. + - `hapi` framework [semver range](#server.version) string. - `once` - (optional) if `true`, will only register the plugin once per server. If set, overrides the `once` option passed to [`server.register()`](#server.register()). Defaults to no override. ```js const plugin = { - name: 'test', - version: '1.0.0', - register: function (server, options) { - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'ok'; - }, - }); - }, + name: 'test', + version: '1.0.0', + register: function (server, options) { + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'ok'; + }, + }); + }, }; ``` @@ -4925,15 +4989,15 @@ Alternatively, the `name` and `version` can be included via the `pkg` property c ```js const plugin = { - pkg: require('./package.json'), - register: function (server, options) { - server.route({ - method: 'GET', - path: '/test', - handler: function (request, h) { - return 'ok'; - }, - }); - }, + pkg: require('./package.json'), + register: function (server, options) { + server.route({ + method: 'GET', + path: '/test', + handler: function (request, h) { + return 'ok'; + }, + }); + }, }; ``` diff --git a/generated/markdown/hapi/changelog.md b/generated/markdown/hapi/changelog.md index 690ce110..36017899 100644 --- a/generated/markdown/hapi/changelog.md +++ b/generated/markdown/hapi/changelog.md @@ -1,5 +1,9 @@ ## Version 21 {#v21} +### [21.4.9](https://github.com/hapijs/hapi/milestone/330) {#21.4.9} + +- [#4577](https://github.com/hapijs/hapi/pull/4577) chore: bump dependencies + ### [21.4.8](https://github.com/hapijs/hapi/milestone/329) {#21.4.8} - [#4568](https://github.com/hapijs/hapi/pull/4568) chore: bump deps diff --git a/generated/markdown/heavy/8/api.md b/generated/markdown/heavy/8/api.md index 275bb5a7..bcfa568d 100644 --- a/generated/markdown/heavy/8/api.md +++ b/generated/markdown/heavy/8/api.md @@ -5,11 +5,11 @@ Creates a new heavy instance where: - `options` - - `sampleInterval` - frequency of load sampling in milliseconds. Defaults to `0` (no sampling). - - `maxHeapUsedBytes` - maximum V8 heap size bytes. Defaults to `0` (no limit). - - `maxRssBytes` - maximum process RSS size bytes. Defaults to `0` (no limit). - - `maxEventLoopDelay` - maximum event loop delay duration in milliseconds. Defaults to `0` (no limit). - - `maxEventLoopUtilization` - maximum event loop utilization value. Defaults to `0` (no limit). + - `sampleInterval` - frequency of load sampling in milliseconds. Defaults to `0` (no sampling). + - `maxHeapUsedBytes` - maximum V8 heap size bytes. Defaults to `0` (no limit). + - `maxRssBytes` - maximum process RSS size bytes. Defaults to `0` (no limit). + - `maxEventLoopDelay` - maximum event loop delay duration in milliseconds. Defaults to `0` (no limit). + - `maxEventLoopUtilization` - maximum event loop utilization value. Defaults to `0` (no limit). Returns a new `Heavy` object. diff --git a/generated/markdown/hoek/11/api.md b/generated/markdown/hoek/11/api.md index 56e76e07..04f94d29 100644 --- a/generated/markdown/hoek/11/api.md +++ b/generated/markdown/hoek/11/api.md @@ -9,21 +9,21 @@ objects, as well as non-enumerable properties) where: - `obj` - the object to be cloned. - `options` - optional settings: - - `symbols` - clone symbol properties. Defaults to `true`. - - `shallow` - one of: - - an array of object key strings (dot-separated or array-based key paths) to shallow copy from `obj` instead of deep. - - `true` to shallow copy all object properties. Used to shallow copy an object with non-enumerable properties and prototype; + - `symbols` - clone symbol properties. Defaults to `true`. + - `shallow` - one of: + - an array of object key strings (dot-separated or array-based key paths) to shallow copy from `obj` instead of deep. + - `true` to shallow copy all object properties. Used to shallow copy an object with non-enumerable properties and prototype; ```javascript const nestedObj = { - w: /^something$/gi, - x: { - a: [1, 2, 3], - b: 123456, - c: new Date(), - }, - y: 'y', - z: new Date(), + w: /^something$/gi, + x: { + a: [1, 2, 3], + b: 123456, + c: new Date(), + }, + y: 'y', + z: new Date(), }; const copy = Hoek.clone(nestedObj); @@ -39,14 +39,14 @@ Clones an object or array excluding some keys which are shallow copied: ```javascript const nestedObj = { - w: /^something$/gi, - x: { - a: [1, 2, 3], - b: 123456, - c: new Date(), - }, - y: 'y', - z: new Date(), + w: /^something$/gi, + x: { + a: [1, 2, 3], + b: 123456, + c: new Date(), + }, + y: 'y', + z: new Date(), }; const copy = Hoek.clone(nestedObj, { shallow: ['x'] }); @@ -65,11 +65,11 @@ Merge all the properties of source into target where: - `target` - the object onto which the properties of `source` are copied to. - `source` - the object copied onto `target`. - `options` - optional settings: - - `nullOverride` - if `true`, a `null` value in the source overrides any existing value in the `defaults`. - If `false`, `null` values in the `source` are ignored. Defaults to `true`. - - `mergeArrays` - if `true`, array values from `source` are appended to existing array values in `target`. - Defaults to `true`. - - `symbols` - clone symbol properties. Defaults to `true`. + - `nullOverride` - if `true`, a `null` value in the source overrides any existing value in the `defaults`. + If `false`, `null` values in the `source` are ignored. Defaults to `true`. + - `mergeArrays` - if `true`, array values from `source` are appended to existing array values in `target`. + Defaults to `true`. + - `symbols` - clone symbol properties. Defaults to `true`. Note that source wins in conflict, and by default null and undefined from source are applied. Merge is destructive where the target is modified. For non destructive merge, use `applyToDefaults`. @@ -97,9 +97,9 @@ Apply source to a copy of the defaults where: - `defaults` - the default object to clone and then apply `source` onto. - `source` - the object applied to the `defaults`. - `options` - optional settings: - - `nullOverride` - if `true`, a `null` value in the source overrides any existing value in the `defaults`. - If `false`, `null` values in the `source` are ignored. Defaults to `false`. - - `shallow` - an array of dot-separated or array-based key paths to shallow copy values in `source`. + - `nullOverride` - if `true`, a `null` value in the source overrides any existing value in the `defaults`. + If `false`, `null` values in the `source` are ignored. Defaults to `false`. + - `shallow` - an array of dot-separated or array-based key paths to shallow copy values in `source`. ```javascript const defaults = { host: 'localhost', port: 8000 }; @@ -121,22 +121,22 @@ Apply source to a copy of the defaults where the shallow keys specified in the l ```javascript const defaults = { - db: { - server: { - host: 'localhost', - port: 8000, + db: { + server: { + host: 'localhost', + port: 8000, + }, + name: 'example', }, - name: 'example', - }, }; const source = { server: { port: 8080 } }; const config = Hoek.applyToDefaults(defaults, source, { - shallow: ['db.server'], + shallow: ['db.server'], }); // results in { db: { server: { port: 8080 }, name: 'example' } } const config = Hoek.applyToDefaults(defaults, source, { - shallow: [['db', 'server']], + shallow: [['db', 'server']], }); // results in { db: { server: { port: 8080 }, name: 'example' } } ``` @@ -148,21 +148,21 @@ prototype, and enumerable properties, where: - `a` - the first value. - `b` - the second value. - `options` - optional settings: - - `deepFunction` - when `true`, function values are deep compared using their source code and - object properties. Defaults to `false`. - - `part` - when `true`, allows a partial match where some of `b` is present in `a`. Defaults to - `false`. - - `prototype` - when `false, prototype comparisons are skipped. Defaults to `true`. - - `skip` - an array of key name strings to skip comparing. The keys can be found in any level - of the object. Note that both values must contain the key - only the value comparison is - skipped. Only applies to plain objects and deep functions (not to map, sets, etc.). Defaults - to no skipping. - - `symbols` - when `false`, symbol properties are ignored. Defaults to `true`. + - `deepFunction` - when `true`, function values are deep compared using their source code and + object properties. Defaults to `false`. + - `part` - when `true`, allows a partial match where some of `b` is present in `a`. Defaults to + `false`. + - `prototype` - when `false, prototype comparisons are skipped. Defaults to `true`. + - `skip` - an array of key name strings to skip comparing. The keys can be found in any level + of the object. Note that both values must contain the key - only the value comparison is + skipped. Only applies to plain objects and deep functions (not to map, sets, etc.). Defaults + to no skipping. + - `symbols` - when `false`, symbol properties are ignored. Defaults to `true`. ```javascript Hoek.deepEqual( - { a: [1, 2], b: 'string', c: { d: true } }, - { a: [1, 2], b: 'string', c: { d: true } }, + { a: [1, 2], b: 'string', c: { d: true } }, + { a: [1, 2], b: 'string', c: { d: true } }, ); //results in true Hoek.deepEqual(Object.create(null), {}, { prototype: false }); //results in true Hoek.deepEqual(Object.create(null), {}); //results in false @@ -175,7 +175,7 @@ Find the common unique items betwee two arrays where: - `array1` - the first array. - `array2` - the second array. - `options` - optional settings: - - `first` - if `true`, return only the first intersecting item. Defaults to `false`. + - `first` - if `true`, return only the first intersecting item. Defaults to `false`. ```javascript const array1 = [1, 2, 3]; @@ -192,11 +192,11 @@ Tests if the reference value contains the provided values where: - `values` - a single or array of values to find within the `ref` value. If `ref` is an object, `values` can be a key name, an array of key names, or an object with key-value pairs to compare. - `options` - an optional object with the following optional settings: - - `deep` - if `true`, performed a deep comparison of the values. - - `once` - if `true`, allows only one occurrence of each value. - - `only` - if `true`, does not allow values not explicitly listed. - - `part` - if `true`, allows partial match of the values (at least one must always match). - - `symbols` - clone symbol properties. Defaults to `true`. + - `deep` - if `true`, performed a deep comparison of the values. + - `once` - if `true`, allows only one occurrence of each value. + - `only` - if `true`, does not allow values not explicitly listed. + - `part` - if `true`, allows partial match of the values (at least one must always match). + - `symbols` - clone symbol properties. Defaults to `true`. Note: comparing a string to overlapping values will result in failed comparison (e.g. `contain('abc', ['ab', 'bc'])`). Also, if an object key's value does not match the provided value, `false` is returned even when `part` is specified. @@ -228,15 +228,15 @@ flattenedArray = Hoek.flatten(array, target); // results in [4, [5], 1, 2, 3] Converts an object key chain string or array to reference - `options` - optional settings - - `separator` - string to split chain path on, defaults to '.' - - `default` - value to return if the path or value is not present, default is `undefined` - - `strict` - if `true`, will throw an error on missing member, default is `false` - - `functions` - if `true`, allow traversing functions for properties. `false` will throw an - error if a function is part of the chain. Defaults to `true`. - - `iterables` - if `true`, allows traversing Set and Map objects. `false` will result in - `undefined` return value is the chain contains any Set or Map objects. Note that enabling - `iterables` can impact performance by up to 10% for all calls regardless of the presence of - Set or Map objects. Defaults to `false`. + - `separator` - string to split chain path on, defaults to '.' + - `default` - value to return if the path or value is not present, default is `undefined` + - `strict` - if `true`, will throw an error on missing member, default is `false` + - `functions` - if `true`, allow traversing functions for properties. `false` will throw an + error if a function is part of the chain. Defaults to `true`. + - `iterables` - if `true`, allows traversing Set and Map objects. `false` will result in + `undefined` return value is the chain contains any Set or Map objects. Note that enabling + `iterables` can impact performance by up to 10% for all calls regardless of the presence of + Set or Map objects. Defaults to `false`. A chain can be a string that will be split into key names using `separator`, or an array containing each individual key name. @@ -296,12 +296,12 @@ human-readable timestamps. More accurate for benchmarking or internal timers. ```javascript internals.htmlEscaped = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`', + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`', }; ``` @@ -343,7 +343,7 @@ const a = Hoek.escapeRegex('4^f$s.4*5+-_?%=#!:@|~\\/`"(>)[<]d{}s,'); // returns ```javascript const a = 1, - b = 2; + b = 2; Hoek.assert(a === b, 'a should equal b'); // Throws 'a should equal b' ``` @@ -352,7 +352,7 @@ Note that you may also pass an already created Error object as the second parame ```javascript const a = 1, - b = 2; + b = 2; Hoek.assert(a === b, new Error('a should equal b')); // Throws the given error object ``` @@ -365,7 +365,7 @@ Returns a new function that can be run multiple times, but makes sure `fn` is on ```javascript const myFn = function () { - console.log('Ran myFn'); + console.log('Ran myFn'); }; const onceFn = Hoek.once(myFn); diff --git a/generated/markdown/inert/7/api.md b/generated/markdown/inert/7/api.md index 15192e4e..1d424f32 100644 --- a/generated/markdown/inert/7/api.md +++ b/generated/markdown/inert/7/api.md @@ -25,32 +25,32 @@ const Hapi = require('@hapi/hapi'); const Inert = require('@hapi/inert'); const server = new Hapi.Server({ - port: 3000, - routes: { - files: { - relativeTo: Path.join(__dirname, 'public'), + port: 3000, + routes: { + files: { + relativeTo: Path.join(__dirname, 'public'), + }, }, - }, }); const provision = async () => { - await server.register(Inert); - - server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: '.', - redirectToSlash: true, - index: true, - }, - }, - }); - - await server.start(); - - console.log('Server running at:', server.info.uri); + await server.register(Inert); + + server.route({ + method: 'GET', + path: '/{param*}', + handler: { + directory: { + path: '.', + redirectToSlash: true, + index: true, + }, + }, + }); + + await server.start(); + + console.log('Server running at:', server.info.uri); }; provision(); @@ -62,11 +62,11 @@ You can serve specific files using the `file` handler: ```js server.route({ - method: 'GET', - path: '/{path*}', - handler: { - file: 'page.html', - }, + method: 'GET', + path: '/{path*}', + handler: { + file: 'page.html', + }, }); ``` @@ -76,25 +76,25 @@ If you need more control, the `h.file()` method is available to use inside handl ```js server.route({ - method: 'GET', - path: '/file', - handler(request, h) { - let path = 'plain.txt'; - if (request.headers['x-magic'] === 'sekret') { - path = 'awesome.png'; - } - - return h.file(path).vary('x-magic'); - }, + method: 'GET', + path: '/file', + handler(request, h) { + let path = 'plain.txt'; + if (request.headers['x-magic'] === 'sekret') { + path = 'awesome.png'; + } + + return h.file(path).vary('x-magic'); + }, }); server.ext('onPreResponse', (request, h) => { - const response = request.response; - if (response.isBoom && response.output.statusCode === 404) { - return h.file('404.html').code(404); - } + const response = request.response; + if (response.isBoom && response.output.statusCode === 404) { + return h.file('404.html').code(404); + } - return h.continue; + return h.continue; }); ``` @@ -120,31 +120,31 @@ type based on filename extension.: - `path` - the file path. - `options` - optional settings: - - `confine` - serve file relative to this directory and returns `403 Forbidden` if the - `path` resolves outside the `confine` directory. - Defaults to `true` which uses the `relativeTo` route option as the `confine`. - Set to `false` to disable this security feature. - - `filename` - an optional filename to specify if sending a 'Content-Disposition' header, - defaults to the basename of `path` - - `mode` - specifies whether to include the 'Content-Disposition' header with the response. - Available values: - - `false` - header is not included. This is the default value. - - `'attachment'` - - `'inline'` - - `lookupCompressed` - if `true`, looks for for a pre-compressed version of the file with - the same filename with an extension, depending on the accepted encoding. - Defaults to `false`. - - `lookupMap` - an `object` which maps content encoding to expected file name extension. - Defaults to `{ gzip: '.gz' }`. - - `etagMethod` - specifies the method used to calculate the `ETag` header response. - Available values: - - `'hash'` - SHA1 sum of the file contents, suitable for distributed deployments. - Default value. - - `'simple'` - Hex encoded size and modification date, suitable when files are stored - on a single server. - - `false` - Disable ETag computation. - - `start` - offset in file to reading from, defaults to 0. - - `end` - offset in file to stop reading from. If not set, will read to end of file. + - `confine` - serve file relative to this directory and returns `403 Forbidden` if the + `path` resolves outside the `confine` directory. + Defaults to `true` which uses the `relativeTo` route option as the `confine`. + Set to `false` to disable this security feature. + - `filename` - an optional filename to specify if sending a 'Content-Disposition' header, + defaults to the basename of `path` + - `mode` - specifies whether to include the 'Content-Disposition' header with the response. + Available values: + - `false` - header is not included. This is the default value. + - `'attachment'` + - `'inline'` + - `lookupCompressed` - if `true`, looks for for a pre-compressed version of the file with + the same filename with an extension, depending on the accepted encoding. + Defaults to `false`. + - `lookupMap` - an `object` which maps content encoding to expected file name extension. + Defaults to `{ gzip: '.gz' }`. + - `etagMethod` - specifies the method used to calculate the `ETag` header response. + Available values: + - `'hash'` - SHA1 sum of the file contents, suitable for distributed deployments. + Default value. + - `'simple'` - Hex encoded size and modification date, suitable when files are stored + on a single server. + - `false` - Disable ETag computation. + - `start` - offset in file to reading from, defaults to 0. + - `end` - offset in file to stop reading from. If not set, will read to end of file. Returns a standard [response](https://github.com/hapijs/hapi/blob/master/API.md#response-object) object. @@ -160,32 +160,32 @@ Generates a static file endpoint for serving a single file. `file` can be set to - a function with the signature `function(request)` which returns the relative or absolute file path. - an object with one or more of the following options: - - `path` - a path string or function as described above (required). - - `confine` - serve file relative to this directory and returns `403 Forbidden` if the - `path` resolves outside the `confine` directory. - Defaults to `true` which uses the `relativeTo` route option as the `confine`. - Set to `false` to disable this security feature. - - `filename` - an optional filename to specify if sending a 'Content-Disposition' - header, defaults to the basename of `path` - - `mode` - specifies whether to include the 'Content-Disposition' header with the - response. Available values: - - `false` - header is not included. This is the default value. - - `'attachment'` - - `'inline'` - - `lookupCompressed` - if `true`, looks for for a pre-compressed version of the file with - the same filename with an extension, depending on the accepted encoding. - Defaults to `false`. - - `lookupMap` - an `object` which maps content encoding to expected file name extension. - Defaults to `{ gzip: '.gz' }`. - - `etagMethod` - specifies the method used to calculate the `ETag` header response. - Available values: - - `'hash'` - SHA1 sum of the file contents, suitable for distributed deployments. - Default value. - - `'simple'` - Hex encoded size and modification date, suitable when files are stored - on a single server. - - `false` - Disable ETag computation. - - `start` - offset in file to reading from, defaults to 0. - - `end` - offset in file to stop reading from. If not set, will read to end of file. + - `path` - a path string or function as described above (required). + - `confine` - serve file relative to this directory and returns `403 Forbidden` if the + `path` resolves outside the `confine` directory. + Defaults to `true` which uses the `relativeTo` route option as the `confine`. + Set to `false` to disable this security feature. + - `filename` - an optional filename to specify if sending a 'Content-Disposition' + header, defaults to the basename of `path` + - `mode` - specifies whether to include the 'Content-Disposition' header with the + response. Available values: + - `false` - header is not included. This is the default value. + - `'attachment'` + - `'inline'` + - `lookupCompressed` - if `true`, looks for for a pre-compressed version of the file with + the same filename with an extension, depending on the accepted encoding. + Defaults to `false`. + - `lookupMap` - an `object` which maps content encoding to expected file name extension. + Defaults to `{ gzip: '.gz' }`. + - `etagMethod` - specifies the method used to calculate the `ETag` header response. + Available values: + - `'hash'` - SHA1 sum of the file contents, suitable for distributed deployments. + Default value. + - `'simple'` - Hex encoded size and modification date, suitable when files are stored + on a single server. + - `false` - Disable ETag computation. + - `start` - offset in file to reading from, defaults to 0. + - `end` - offset in file to stop reading from. If not set, will read to end of file. ### The `directory` handler @@ -201,13 +201,13 @@ object with the following options: - `path` - (required) the directory root path (relative paths are resolved based on the route [`files`](https://github.com/hapijs/hapi/blob/master/API.md#route.config.files) configuration). Value can be: - - a single path string used as the prefix for any resources requested by appending the - request path parameter to the provided string. - - an array of path strings. Each path will be attempted in order until a match is - found (by following the same process as the single path string). - - a function with the signature `function(request)` which returns the path string or - an array of path strings. If the function returns an error, the error is passed back - to the client in the response. + - a single path string used as the prefix for any resources requested by appending the + request path parameter to the provided string. + - an array of path strings. Each path will be attempted in order until a match is + found (by following the same process as the single path string). + - a function with the signature `function(request)` which returns the path string or + an array of path strings. If the function returns an error, the error is passed back + to the client in the response. - `index` - optional boolean|string|string[], determines if an index file will be served if found in the folder when requesting a directory. The given string or strings specify the name(s) of the index file to look for. If `true`, looks for 'index.html'. Any falsy @@ -228,11 +228,11 @@ object with the following options: Defaults to `{ gzip: '.gz' }`. - `etagMethod` - specifies the method used to calculate the `ETag` header response. Available values: - - `'hash'` - SHA1 sum of the file contents, suitable for distributed deployments. - Default value. - - `'simple'` - Hex encoded size and modification date, suitable when files are stored - on a single server. - - `false` - Disable ETag computation. + - `'hash'` - SHA1 sum of the file contents, suitable for distributed deployments. + Default value. + - `'simple'` - Hex encoded size and modification date, suitable when files are stored + on a single server. + - `false` - Disable ETag computation. - `defaultExtension` - optional string, appended to file requests if the requested file is not found. Defaults to no extension. diff --git a/generated/markdown/iron/7/api.md b/generated/markdown/iron/7/api.md index 2cfa3c77..41547aa2 100644 --- a/generated/markdown/iron/7/api.md +++ b/generated/markdown/iron/7/api.md @@ -35,20 +35,20 @@ To seal an object: ```javascript const obj = { - a: 1, - b: 2, - c: [3, 4, 5], - d: { - e: 'f', - }, + a: 1, + b: 2, + c: [3, 4, 5], + d: { + e: 'f', + }, }; const password = 'some_not_random_password_that_is_at_least_32_characters'; try { - const sealed = await Iron.seal(obj, password, Iron.defaults); + const sealed = await Iron.seal(obj, password, Iron.defaults); } catch (err) { - console.log(err.message); + console.log(err.message); } ``` @@ -57,9 +57,9 @@ HTTP header attribute. To unseal the string: ```javascript try { - const unsealed = await Iron.unseal(sealed, password, Iron.defaults); + const unsealed = await Iron.unseal(sealed, password, Iron.defaults); } catch (err) { - console.log(err.message); + console.log(err.message); } ``` @@ -113,17 +113,17 @@ Seriealizes, encrypts, and signs objects into an **iron** protocol string where: `JSON.stringify()`. **Note**: `JSON.stringify` will not keep object properties which values are `undefined`. So if you pass an object like `{id: undefined}` then it will be serialized as `{}`. - `password` - one of: - - a password string used to generate a key using the pbkdf2 algorithm. + - a password string used to generate a key using the pbkdf2 algorithm. - - a key buffer used as-is (after validating sufficient length based on the algorithm used). + - a key buffer used as-is (after validating sufficient length based on the algorithm used). - - an object with: - - `id` - a password identifier (must consist of only letters, numbers, and `_`). - - `secret` - a password string or key buffer used for both encryption and integrity. - - an object with: - - `id` - a password identifier (must consist of only letters, numbers, and `_`). - - `encryption` - a password string or key buffer used for encryption. - - `integrity` - a password string or key buffer used for integrity. + - an object with: + - `id` - a password identifier (must consist of only letters, numbers, and `_`). + - `secret` - a password string or key buffer used for both encryption and integrity. + - an object with: + - `id` - a password identifier (must consist of only letters, numbers, and `_`). + - `encryption` - a password string or key buffer used for encryption. + - `integrity` - a password string or key buffer used for integrity. - `options` - see [Options](#options). @@ -146,15 +146,15 @@ Verifies, decrypts, and reconstruct an **iron** protocol string into an object w - `password` - must match the `password` value passed to [`seal()`](#await-sealobject-password-options) and be one of: - - a password string used to generate a key using the pbkdf2 algorithm. + - a password string used to generate a key using the pbkdf2 algorithm. - - a key buffer used as-is (after validating sufficient length based on the algorithm used). + - a key buffer used as-is (after validating sufficient length based on the algorithm used). - - an object with `id` as the key and value is one of: - - a password string or key buffer used for both encryption and integrity. - - an object with: - - `encryption` - a password string or key buffer used for encryption. - - `integrity` - a password string or key buffer used for integrity. + - an object with `id` as the key and value is one of: + - a password string or key buffer used for both encryption and integrity. + - an object with: + - `encryption` - a password string or key buffer used for encryption. + - `integrity` - a password string or key buffer used for integrity. - `options` - see [Options](#options). Must match the `options` value passed to [`seal()`](#await-sealobject-password-options) @@ -190,9 +190,9 @@ Return value: an object with the following keys: - `encrypted` - `key`: - - `key` - - `salt` - - `iv` + - `key` + - `salt` + - `iv` ### `await decrypt(password, options, data)` @@ -261,18 +261,18 @@ example. The default settings are: ```javascript var options = { - encryption: { - saltBits: 256, - algorithm: 'aes-256-cbc', - iterations: 1, - }, - integrity: { - saltBits: 256, - algorithm: 'sha256', - iterations: 1, - }, - ttl: 0, - timestampSkewSec: 60, - localtimeOffsetMsec: 0, + encryption: { + saltBits: 256, + algorithm: 'aes-256-cbc', + iterations: 1, + }, + integrity: { + saltBits: 256, + algorithm: 'sha256', + iterations: 1, + }, + ttl: 0, + timestampSkewSec: 60, + localtimeOffsetMsec: 0, }; ``` diff --git a/generated/markdown/jwt/3/api.md b/generated/markdown/jwt/3/api.md index 1cf58078..d4a1fb13 100644 --- a/generated/markdown/jwt/3/api.md +++ b/generated/markdown/jwt/3/api.md @@ -15,42 +15,42 @@ const Hapi = require('@hapi/hapi'); const internals = {}; internals.start = async function () { - const server = Hapi.server({ port: 8000 }); - - // Register jwt with the server - - await server.register(Jwt); - - // Declare an authentication strategy using the jwt scheme. - // Use keys: with a shared secret key OR json web key set uri. - // Use verify: To determine how key contents are verified beyond signature. - // If verify is set to false, the keys option is not required and ignored. - // The verify: { aud, iss, sub } options are required if verify is not set to false. - // The verify: { exp, nbf, timeSkewSec, maxAgeSec } parameters have defaults. - // Use validate: To create a function called after token validation. - - server.auth.strategy('my_jwt_strategy', 'jwt', { - keys: 'some_shared_secret', - verify: { - aud: 'urn:audience:test', - iss: 'urn:issuer:test', - sub: false, - nbf: true, - exp: true, - maxAgeSec: 14400, // 4 hours - timeSkewSec: 15, - }, - validate: (artifacts, request, h) => { - return { - isValid: true, - credentials: { user: artifacts.decoded.payload.user }, - }; - }, - }); - - // Set the strategy - - server.auth.default('my_jwt_strategy'); + const server = Hapi.server({ port: 8000 }); + + // Register jwt with the server + + await server.register(Jwt); + + // Declare an authentication strategy using the jwt scheme. + // Use keys: with a shared secret key OR json web key set uri. + // Use verify: To determine how key contents are verified beyond signature. + // If verify is set to false, the keys option is not required and ignored. + // The verify: { aud, iss, sub } options are required if verify is not set to false. + // The verify: { exp, nbf, timeSkewSec, maxAgeSec } parameters have defaults. + // Use validate: To create a function called after token validation. + + server.auth.strategy('my_jwt_strategy', 'jwt', { + keys: 'some_shared_secret', + verify: { + aud: 'urn:audience:test', + iss: 'urn:issuer:test', + sub: false, + nbf: true, + exp: true, + maxAgeSec: 14400, // 4 hours + timeSkewSec: 15, + }, + validate: (artifacts, request, h) => { + return { + isValid: true, + credentials: { user: artifacts.decoded.payload.user }, + }; + }, + }); + + // Set the strategy + + server.auth.default('my_jwt_strategy'); }; internals.start(); @@ -65,7 +65,7 @@ Declares a named strategy using the jwt scheme. #### options - `options` - Config object containing keys to define your jwt authentication and response with the following: - - `keys` - Object or array of objects containing the key method to be used for jwt verification. The keys object can be expressed in many ways. See [keys option examples](#keys-option-examples) for a handful of ways to express this option. + - `keys` - Object or array of objects containing the key method to be used for jwt verification. The keys object can be expressed in many ways. See [keys option examples](#keys-option-examples) for a handful of ways to express this option. ##### keys @@ -80,9 +80,9 @@ You can do HMAC algorithms a couple of different ways. You can do it either like OR with optional algorithm and key ID header (kid) like: - `keys` - - `key` - String that is used for shared secret. - - `algorithms` - Array of accepted [algorithms](#Key-algorithms-supported-by-jwt) (optional). - - `kid` - String representing the key ID header (optional). + - `key` - String that is used for shared secret. + - `algorithms` - Array of accepted [algorithms](#Key-algorithms-supported-by-jwt) (optional). + - `kid` - String representing the key ID header (optional). ###### Public algorithms @@ -93,22 +93,22 @@ Similar to the HMAC algorithms you can do it like: OR with optional algorithm and key ID header (kid) like: - `keys` - - `key` - Binary data of the public key. Often retrieve via `Fs.readFileSync('public.pem')`. - - `algorithms` - Array of accepted [algorithms](#Key-algorithms-supported-by-jwt) (optional). - - `kid` - String representing the key ID header (optional). + - `key` - Binary data of the public key. Often retrieve via `Fs.readFileSync('public.pem')`. + - `algorithms` - Array of accepted [algorithms](#Key-algorithms-supported-by-jwt) (optional). + - `kid` - String representing the key ID header (optional). ###### Public and RSA algorithms using JWKS - `keys` - - `uri` - String that defines your json web key set uri. - - `rejectUnauthorized` - Boolean that determines if TLS flag indicating whether the client should reject a response from a server with invalid certificates. Default is `true`. - - `headers` - Object containing the request headers to send to the uri (optional). - - `algorithms` - Array of accepted [algorithms](#Key-algorithms-supported-by-jwt) (optional). + - `uri` - String that defines your json web key set uri. + - `rejectUnauthorized` - Boolean that determines if TLS flag indicating whether the client should reject a response from a server with invalid certificates. Default is `true`. + - `headers` - Object containing the request headers to send to the uri (optional). + - `algorithms` - Array of accepted [algorithms](#Key-algorithms-supported-by-jwt) (optional). ###### No algorithms - `keys` - - `algorithms` - `['none']` + - `algorithms` - `['none']` ###### Custom Function @@ -203,13 +203,13 @@ It is not advisable to put shared secrets in your source code, use environment v In addition to keys you can provide other options. - `verify` - Object to determine how key contents are verified beyond key signature. Set to `false` to do no verification. This includes the `keys` even if they are defined. - - `aud` - String or `RegExp` **or** array of strings or `RegExp` that matches the audience of the token. Set to boolean `false` to not verify aud. Required if `verify` is not `false`. - - `iss` - String or array of strings that matches the issuer of the token. Set to boolean `false` to not verify iss. Required if `verify` is not `false`. - - `sub` - String or array of strings that matches the subject of the token. Set to boolean `false` to not verify sub. Required if `verify` is not `false`. - - `nbf` - Boolean to determine if the "Not Before" [NumericDate](#registered-claim-names) of the token should be validated. Default is `true`. - - `exp` - Boolean to determine if the "Expiration Time" [NumericDate](#registered-claim-names) of the token should be validated. Default is `true`. - - `maxAgeSec` - Integer to determine the maximum age of the token in seconds. Default is `0`. This is time validation using the "Issued At" [NumericDate](#registered-claim-names) (`iat`). Please note that `0` effectively disables this validation, it does not make the maximum age of the token 0 seconds. Also if `maxAgeSec` is not `0` and `exp` is `true`, both will be validated and if either validation fails, the token validation will fail. - - `timeSkewSec` - Integer to adust `exp` and `maxAgeSec` to account for server time drift in seconds. Default is `0`. + - `aud` - String or `RegExp` **or** array of strings or `RegExp` that matches the audience of the token. Set to boolean `false` to not verify aud. Required if `verify` is not `false`. + - `iss` - String or array of strings that matches the issuer of the token. Set to boolean `false` to not verify iss. Required if `verify` is not `false`. + - `sub` - String or array of strings that matches the subject of the token. Set to boolean `false` to not verify sub. Required if `verify` is not `false`. + - `nbf` - Boolean to determine if the "Not Before" [NumericDate](#registered-claim-names) of the token should be validated. Default is `true`. + - `exp` - Boolean to determine if the "Expiration Time" [NumericDate](#registered-claim-names) of the token should be validated. Default is `true`. + - `maxAgeSec` - Integer to determine the maximum age of the token in seconds. Default is `0`. This is time validation using the "Issued At" [NumericDate](#registered-claim-names) (`iat`). Please note that `0` effectively disables this validation, it does not make the maximum age of the token 0 seconds. Also if `maxAgeSec` is not `0` and `exp` is `true`, both will be validated and if either validation fails, the token validation will fail. + - `timeSkewSec` - Integer to adust `exp` and `maxAgeSec` to account for server time drift in seconds. Default is `0`. ##### headless @@ -230,24 +230,24 @@ In addition to keys you can provide other options. The validate function has a signature of `[async] function (artifacts, request, h)` where: - `artifacts` - An object that contains information from the token. - - `token` - The complete token that was sent. - - `decoded` - An object that contains decoded token. - - `header` - An object that contain the header information. - - `alg` - The algorithm used to sign the token. - - `typ` - The token type (should be `'JWT'` if present) (optional). - - `payload` - An object containing the payload. - - `signature` - The signature string of the token. - - `raw` - An object that contains the token that was sent broken out by `header`, `payload`, and `signature`. - - `keys` - An array of information about key(s) used for authentication - - `key` - The key. - - `algorithm` - The algorithm used to sign the token. - - `kid` - The key ID header. `undefined` if none was set. + - `token` - The complete token that was sent. + - `decoded` - An object that contains decoded token. + - `header` - An object that contain the header information. + - `alg` - The algorithm used to sign the token. + - `typ` - The token type (should be `'JWT'` if present) (optional). + - `payload` - An object containing the payload. + - `signature` - The signature string of the token. + - `raw` - An object that contains the token that was sent broken out by `header`, `payload`, and `signature`. + - `keys` - An array of information about key(s) used for authentication + - `key` - The key. + - `algorithm` - The algorithm used to sign the token. + - `kid` - The key ID header. `undefined` if none was set. - `request` - Is the hapi request object of the request which is being authenticated. - `h` - The response toolkit. - Returns an object `{ isValid, credentials, response }` where: - - `isValid` - Boolean that should be set to `true` if additional validation passed, otherwise `false`. - - `credentials` - Object passed back to the application in `request.auth.credentials`. - - `response` - Will be used immediately as a takeover response. `isValid` and `credentials` are ignored if provided. + - `isValid` - Boolean that should be set to `true` if additional validation passed, otherwise `false`. + - `credentials` - Object passed back to the application in `request.auth.credentials`. + - `response` - Will be used immediately as a takeover response. `isValid` and `credentials` are ignored if provided. - Throwing an error from this function will replace default `message` in the `Boom.unauthorized` error. - Typically, `credentials` are only included when `isValid` is `true`, but there are cases when the application needs to know who tried to authenticate even when it fails (e.g. with authentication mode `'try'`). @@ -266,28 +266,28 @@ Function: ```js validate: (artifacts, request, h) => { - if (artifacts.decoded.payload.user === 'help') { - return { response: h.redirect('https://hapi.dev/module/jwt/') }; // custom response - } - - if (artifacts.decoded.payload.user === 'crash') { - throw new Error('We hit a tree!'); // custom message in Boom.unauthorized - } - - let isValid; - if (artifacts.decoded.payload.group === 'hapi_community') { - isValid = true; - } else { - isValid = false; - } - - // Return isValid value based on group - // Set credentials object to have the key username with a value of the user value from the payload - - return { - isValid, - credentials: { username: artifacts.decoded.payload.user }, - }; + if (artifacts.decoded.payload.user === 'help') { + return { response: h.redirect('https://hapi.dev/module/jwt/') }; // custom response + } + + if (artifacts.decoded.payload.user === 'crash') { + throw new Error('We hit a tree!'); // custom message in Boom.unauthorized + } + + let isValid; + if (artifacts.decoded.payload.group === 'hapi_community') { + isValid = true; + } else { + isValid = false; + } + + // Return isValid value based on group + // Set credentials object to have the key username with a value of the user value from the payload + + return { + isValid, + credentials: { username: artifacts.decoded.payload.user }, + }; }; ``` @@ -311,19 +311,19 @@ const Jwt = require('@hapi/jwt'); // Generate a Token const token = Jwt.token.generate( - { - aud: 'urn:audience:test', - iss: 'urn:issuer:test', - user: 'some_user_name', - group: 'hapi_community', - }, - { - key: 'some_shared_secret', - algorithm: 'HS512', - }, - { - ttlSec: 14400, // 4 hours - }, + { + aud: 'urn:audience:test', + iss: 'urn:issuer:test', + user: 'some_user_name', + group: 'hapi_community', + }, + { + key: 'some_shared_secret', + algorithm: 'HS512', + }, + { + ttlSec: 14400, // 4 hours + }, ); // Decode a token @@ -333,15 +333,15 @@ const decodedToken = Jwt.token.decode(token); // Create function to verify a token const verifyToken = (artifact, secret, options = {}) => { - try { - Jwt.token.verify(artifact, secret, options); - return { isValid: true }; - } catch (err) { - return { - isValid: false, - error: err.message, - }; - } + try { + Jwt.token.verify(artifact, secret, options); + return { isValid: true }; + } catch (err) { + return { + isValid: false, + error: err.message, + }; + } }; // Get response of a successful verification @@ -355,20 +355,20 @@ const badSecretResponse = verifyToken(decodedToken, 'some_unshared_secret'); // Get response of a unsuccessful verification due to wrong iss const badIssResponse = verifyToken(decodedToken, 'some_shared_secret', { - iss: 'urn:issuer:different_test', + iss: 'urn:issuer:different_test', }); // Display results to console console.dir( - { - token, - decodedToken, - validResponse, - badSecretResponse, - badIssResponse, - }, - { depth: null }, + { + token, + decodedToken, + validResponse, + badSecretResponse, + badIssResponse, + }, + { depth: null }, ); ``` @@ -411,15 +411,15 @@ Generates a token as a string where: - `payload` - Object that contains [Registered Claim Names](#registered-claim-names) (optional) and additional credentials (optional). While both [Registered Claim Names](#registered-claim-names) and additional credentials are optional, an empty payload `{}`, would result in a key that only has an `iat` of now. This would make a token that is valid for one second and containing no other information. - `secret` - String or buffer that creates signature **or** object where: - - `key` - String or buffer that creates signature. - - `algorithm`- String containing an accepted [algorithm](#Key-algorithms-supported-by-jwt) to be used. Default is `'HS256'`. + - `key` - String or buffer that creates signature. + - `algorithm`- String containing an accepted [algorithm](#Key-algorithms-supported-by-jwt) to be used. Default is `'HS256'`. - `options` - Optional configuration object with the following: - - `header` - Object to put additional key/value pairs in the header of the token in addition to `alg` and `typ`. - - `typ` Boolean if set to `false` `typ: 'JWT'` is not included in the header. - - `now` - Integer as an alternative way to set `iat` claim. Takes JavaScript style epoch time (with ms). `iat` claim must not be set and `iat` option must not be `false`. Milliseconds are truncated, not rounded. - - `ttlSec` - Integer as an alternative way to set `exp` claim. `exp` is set to be `iat` + `ttlSec`. `exp` claim must not be set. - - `iat` - Boolean if set to `false` to turn off default behavior of creating an `iat` claim. - - `headless` - Boolean if set to `true` will create a headless token. Default is `false`. + - `header` - Object to put additional key/value pairs in the header of the token in addition to `alg` and `typ`. + - `typ` Boolean if set to `false` `typ: 'JWT'` is not included in the header. + - `now` - Integer as an alternative way to set `iat` claim. Takes JavaScript style epoch time (with ms). `iat` claim must not be set and `iat` option must not be `false`. Milliseconds are truncated, not rounded. + - `ttlSec` - Integer as an alternative way to set `exp` claim. `exp` is set to be `iat` + `ttlSec`. `exp` claim must not be set. + - `iat` - Boolean if set to `false` to turn off default behavior of creating an `iat` claim. + - `headless` - Boolean if set to `true` will create a headless token. Default is `false`. ### decode @@ -429,7 +429,7 @@ Returns an Object of a decoded token in the format of `artifacts` described in t - `token` - String of encoded token. - `options` - Optional configuration object with the following: - - `headless`: String representing `base64` header **or** an Object to use as a header on headless tokens. If this is set, tokens that contain a header section will create an error. Default is `null`. + - `headless`: String representing `base64` header **or** an Object to use as a header on headless tokens. If this is set, tokens that contain a header section will create an error. Default is `null`. ### verify @@ -439,19 +439,19 @@ A function that will complete if verification passes or throw an error if verifi - `artifacts` - Object of a decoded token in the format of `artifacts` described in the [`validate`](#more-on-the-validate-function) section above. - `secret` - String or buffer that creates signature **or** object where: - - `key` - String or buffer that creates signature. - - `algorithm`- String containing an accepted [algorithm](#Key-algorithms-supported-by-jwt) to be used. Default is `'HS256'`. + - `key` - String or buffer that creates signature. + - `algorithm`- String containing an accepted [algorithm](#Key-algorithms-supported-by-jwt) to be used. Default is `'HS256'`. - `options` - Optional configuration object with the following: - - `aud`- String or `RegExp` **or** array of strings or `RegExp` that matches the audience of the token. - - `iss` - String or array of strings that matches the issuer of the token. - - `sub` - String or array of strings that matches the subject of the token. - - `jti` - String or array of strings that matches the JWT ID of the token. - - `nonce` - String or array of strings that matches the `nonce` of the token. `nonce` is used on [Open ID](https://openid.net/specs/openid-connect-core-1_0.html#NonceNotes) for the ID Tokens. - - `nbf` - Integer that represents the "Not Before" [NumericDate](#registered-claim-names) of the token. - - `exp` - Integer that represents the "Expiration Time" [NumericDate](#registered-claim-names) of the token. - - `now` - Integer that represents the current time in JavaScript epoch format (with msecs). When evaluated the msecs are truncated, not rounded. - - `maxAgeSec` - Integer to determine the maximum age of the token in seconds. This is time validation using the "Issued At" [NumericDate](#registered-claim-names) (`iat`). - - `timeSkewSec` - Integer to adust `exp` and `maxAgeSec` to account for server time drift in seconds. + - `aud`- String or `RegExp` **or** array of strings or `RegExp` that matches the audience of the token. + - `iss` - String or array of strings that matches the issuer of the token. + - `sub` - String or array of strings that matches the subject of the token. + - `jti` - String or array of strings that matches the JWT ID of the token. + - `nonce` - String or array of strings that matches the `nonce` of the token. `nonce` is used on [Open ID](https://openid.net/specs/openid-connect-core-1_0.html#NonceNotes) for the ID Tokens. + - `nbf` - Integer that represents the "Not Before" [NumericDate](#registered-claim-names) of the token. + - `exp` - Integer that represents the "Expiration Time" [NumericDate](#registered-claim-names) of the token. + - `now` - Integer that represents the current time in JavaScript epoch format (with msecs). When evaluated the msecs are truncated, not rounded. + - `maxAgeSec` - Integer to determine the maximum age of the token in seconds. This is time validation using the "Issued At" [NumericDate](#registered-claim-names) (`iat`). + - `timeSkewSec` - Integer to adust `exp` and `maxAgeSec` to account for server time drift in seconds. ### verifySignature @@ -462,8 +462,8 @@ A function that will complete if the signature is valid or throw an error if inv - `decoded` - Object of decoded token in the format of `artifacts.decoded` described in the [`validate`](#more-on-the-validate-function) section above. - `raw` - Object of decoded token in the format of `artifacts.raw` described in the [`validate`](#more-on-the-validate-function) section above. - `secret` - String or buffer that creates signature **or** object where: - - `key` - String or buffer that creates signature. - - `algorithm`- String containing an accepted [algorithm](#Key-algorithms-supported-by-jwt) to be used. Default is `'HS256'`. + - `key` - String or buffer that creates signature. + - `algorithm`- String containing an accepted [algorithm](#Key-algorithms-supported-by-jwt) to be used. Default is `'HS256'`. ### verifyPayload @@ -482,10 +482,10 @@ A function that will complete if `iat` and `exp` verification pass and throw an - `decoded` - Object of decoded token in the format of `artifacts.decoded` described in the [`validate`](#more-on-the-validate-function) section above. - `options` - Optional configuration object with the following: - - `now` - Integer that represents the current time in JavaScript epoch format (with msecs). When evaluated the msecs are truncated, not rounded. Either this or `nowSec` need to be defined. - - `exp` - Integer that represents the "Expiration Time" [NumericDate](#registered-claim-names) of the token. - - `maxAgeSec` - Integer to determine the maximum age of the token in seconds. This is time validation using the "Issued At" [NumericDate](#registered-claim-names) (`iat`). - - `timeSkewSec` - Integer to adust `exp` and `maxAgeSec` to account for server time drift in seconds. + - `now` - Integer that represents the current time in JavaScript epoch format (with msecs). When evaluated the msecs are truncated, not rounded. Either this or `nowSec` need to be defined. + - `exp` - Integer that represents the "Expiration Time" [NumericDate](#registered-claim-names) of the token. + - `maxAgeSec` - Integer to determine the maximum age of the token in seconds. This is time validation using the "Issued At" [NumericDate](#registered-claim-names) (`iat`). + - `timeSkewSec` - Integer to adust `exp` and `maxAgeSec` to account for server time drift in seconds. ## Additional Information diff --git a/generated/markdown/jwt/changelog.md b/generated/markdown/jwt/changelog.md index 62f0e0b4..cb4d390c 100644 --- a/generated/markdown/jwt/changelog.md +++ b/generated/markdown/jwt/changelog.md @@ -1,5 +1,9 @@ ## Version 3 {#v3} +### [3.2.4](https://github.com/hapijs/jwt/milestone/19) {#3.2.4} + +- [#61](https://github.com/hapijs/jwt/pull/61) chore: bump dependencies + ### [3.2.2](https://github.com/hapijs/jwt/milestone/18) {#3.2.2} - [#60](https://github.com/hapijs/jwt/pull/60) Fix: jwt constant time fixed time diff --git a/generated/markdown/lab/25/api.md b/generated/markdown/lab/25/api.md index 8c337e3d..46914839 100644 --- a/generated/markdown/lab/25/api.md +++ b/generated/markdown/lab/25/api.md @@ -22,7 +22,7 @@ const { expect } = Code; const { it } = (exports.lab = Lab.script()); it('returns true when 1 + 1 equals 2', () => { - expect(1 + 1).to.equal(2); + expect(1 + 1).to.equal(2); }); ``` @@ -36,7 +36,7 @@ const { expect } = Code; const lab = (exports.lab = Lab.script()); lab.test('returns true when 1 + 1 equals 2', () => { - expect(1 + 1).to.equal(2); + expect(1 + 1).to.equal(2); }); ``` @@ -44,8 +44,8 @@ If a test is performing an asynchronous operation then it should use the `async` ```javascript lab.test('config file has correct value', async () => { - const file = await fs.readFile('config'); - expect(file.toString()).to.contain('something'); + const file = await fs.readFile('config'); + expect(file.toString()).to.contain('something'); }); ``` @@ -53,9 +53,9 @@ Tests can be organized into experiments: ```javascript lab.experiment('math', () => { - lab.test('returns true when 1 + 1 equals 2', () => { - expect(1 + 1).to.equal(2); - }); + lab.test('returns true when 1 + 1 equals 2', () => { + expect(1 + 1).to.equal(2); + }); }); ``` @@ -63,22 +63,22 @@ If you need to perform some setup operations before or after executing the tests ```javascript lab.experiment('math', () => { - lab.before(() => { - return new Promise((resolve) => { - // Wait 1 second - setTimeout(() => { - resolve(); - }, 1000); + lab.before(() => { + return new Promise((resolve) => { + // Wait 1 second + setTimeout(() => { + resolve(); + }, 1000); + }); }); - }); - lab.beforeEach(() => { - // Run before every single test - }); + lab.beforeEach(() => { + // Run before every single test + }); - lab.test('returns true when 1 + 1 equals 2', () => { - expect(1 + 1).to.equal(2); - }); + lab.test('returns true when 1 + 1 equals 2', () => { + expect(1 + 1).to.equal(2); + }); }); ``` @@ -86,15 +86,15 @@ lab.experiment('math', () => { ```javascript lab.experiment('math', () => { - lab.before(() => { - return aFunctionReturningAPromise(); - }); + lab.before(() => { + return aFunctionReturningAPromise(); + }); - lab.test('returns true when 1 + 1 equals 2', () => { - return aFunctionReturningAPromise().then((aValue) => { - expect(aValue).to.equal(expectedValue); + lab.test('returns true when 1 + 1 equals 2', () => { + return aFunctionReturningAPromise().then((aValue) => { + expect(aValue).to.equal(expectedValue); + }); }); - }); }); ``` @@ -108,11 +108,11 @@ You can also append `.only(…)` or `.skip(…)` to `test` and `experiment` inst ```javascript lab.experiment('with only', () => { - lab.test.only('only this test will run', () => { - expect(1 + 1).to.equal(2); - }); + lab.test.only('only this test will run', () => { + expect(1 + 1).to.equal(2); + }); - lab.test('another test that will not be executed', () => {}); + lab.test('another test that will not be executed', () => {}); }); ``` @@ -128,13 +128,13 @@ const { expect } = Code; const { after, before, describe, it } = (exports.lab = Lab.script()); describe('math', () => { - before(() => {}); + before(() => {}); - after(() => {}); + after(() => {}); - it('returns true when 1 + 1 equals 2', () => { - expect(1 + 1).to.equal(2); - }); + it('returns true when 1 + 1 equals 2', () => { + expect(1 + 1).to.equal(2); + }); }); ``` @@ -150,9 +150,9 @@ const { expect } = Code; const { suite, test } = (exports.lab = Lab.script()); suite('math', () => { - test('returns true when 1 + 1 equals 2', () => { - expect(1 + 1).to.equal(2); - }); + test('returns true when 1 + 1 equals 2', () => { + expect(1 + 1).to.equal(2); + }); }); ``` @@ -162,13 +162,13 @@ suite('math', () => { ```json { - "devDependencies": { - "@hapi/lab": "21.x.x" - }, - "scripts": { - "test": "lab -t 100", - "test-cov-html": "lab -r html -o coverage.html" - } + "devDependencies": { + "@hapi/lab": "21.x.x" + }, + "scripts": { + "test": "lab -t 100", + "test-cov-html": "lab -r html -o coverage.html" + } } ``` @@ -188,13 +188,13 @@ $ npm test ```javascript lab.experiment('math', { timeout: 1000 }, () => { - lab.before({ timeout: 500 }, () => { - doSomething(); - }); + lab.before({ timeout: 500 }, () => { + doSomething(); + }); - lab.test('returns true when 1 + 1 equals 2', () => { - expect(1 + 1).to.equal(2); - }); + lab.test('returns true when 1 + 1 equals 2', () => { + expect(1 + 1).to.equal(2); + }); }); ``` @@ -215,11 +215,11 @@ const { describe, it, before } = lab; export { lab }; describe('experiment', () => { - before(() => {}); + before(() => {}); - it('verifies 1 equals 1', () => { - expect(1).to.equal(1); - }); + it('verifies 1 equals 1', () => { + expect(1).to.equal(1); + }); }); ``` @@ -270,15 +270,15 @@ $ lab --typescript --require 'tsconfig-paths/register' - `-p`, `--default-plan-threshold` - sets the minimum number of assertions a test must run. Overridable with [`plan`](#plan). - `-P`, `--pattern` - only load files with the given pattern in the name. - `-r`, `--reporter` - the reporter used to generate the test results. Defaults to `console`. Options are: - - `console` - text report. - - `html` - HTML test and code coverage report (sets `-c`). - - `json` - output results in JSON format. - - `junit` - output results in JUnit XML format. - - `tap` - TAP protocol report. - - `lcov` - output to [lcov](http://ltp.sourceforge.net/coverage/lcov/geninfo.1.php) format. - - `clover` - output results in [Clover XML](https://confluence.atlassian.com/display/CLOVER) format. - - [Multiple Reporters](#multiple-reporters) - See Below - - [Custom Reporters](#custom-reporters) - See Below + - `console` - text report. + - `html` - HTML test and code coverage report (sets `-c`). + - `json` - output results in JSON format. + - `junit` - output results in JUnit XML format. + - `tap` - TAP protocol report. + - `lcov` - output to [lcov](http://ltp.sourceforge.net/coverage/lcov/geninfo.1.php) format. + - `clover` - output results in [Clover XML](https://confluence.atlassian.com/display/CLOVER) format. + - [Multiple Reporters](#multiple-reporters) - See Below + - [Custom Reporters](#custom-reporters) - See Below - `--req`, `--require` - dependencies to require and run before tests run (useful for things like `babel`, `tsconfig-paths`, test setup, etc). - `-R`, `--retries` - the number of times to retry a failing test that is explicitly marked with `retry`. Defaults to `5`. - `--shuffle` - randomize the order that test scripts are executed. Will not work with `--id`. @@ -300,8 +300,8 @@ $ lab --typescript --require 'tsconfig-paths/register' Generates a test script interface which is used to add experiments and tests, where: - `options` - an optional object with the following optional keys: - - `schedule` - if `false`, an automatic execution of the script is disabled. Automatic execution allows running lab test scripts directly with Node.js without having to use the CLI (e.g. `node test/script.js`). When using **lab** programmatically, this behavior is undesired and can be turned off by setting `schedule` to `false`. If you need to see the output with schedule disabled you should set `output` to `process.stdout`. Defaults to `true`. - - `cli` - allows setting command line options within the script. Note that the last script file loaded wins and usage of this is recommended only for temporarily changing the execution of tests. This option is useful for code working with an automatic test engine that run tests on commits. Setting this option has no effect when not using the CLI runner. For example setting `cli` to `{ ids: [1] }` will only execute the first test loaded. + - `schedule` - if `false`, an automatic execution of the script is disabled. Automatic execution allows running lab test scripts directly with Node.js without having to use the CLI (e.g. `node test/script.js`). When using **lab** programmatically, this behavior is undesired and can be turned off by setting `schedule` to `false`. If you need to see the output with schedule disabled you should set `output` to `process.stdout`. Defaults to `true`. + - `cli` - allows setting command line options within the script. Note that the last script file loaded wins and usage of this is recommended only for temporarily changing the execution of tests. This option is useful for code working with an automatic test engine that run tests on commits. Setting this option has no effect when not using the CLI runner. For example setting `cli` to `{ ids: [1] }` will only execute the first test loaded. ### `script.after([options], action)` @@ -309,7 +309,7 @@ Executes the provided action after the current experiment block is finished wher - `options` - optional flags as describe in [`script.test()`](#scripttesttitle-options-test). - `action` - a sync or async function using the signature `function(flags)` where: - - `flags` - see [Flags](#flags) + - `flags` - see [Flags](#flags) ### `script.afterEach()` @@ -317,7 +317,7 @@ Executes the provided action after each test is executed in the current experime - `options` - optional flags as describe in [`script.test()`](#scripttesttitle-options-test). - `action` - a sync or async function using the signature `function(flags)` where: - - `flags` - see [Flags](#flags) + - `flags` - see [Flags](#flags) ### `script.before()` @@ -325,7 +325,7 @@ Executes the provided action before the current experiment block is started wher - `options` - optional flags as describe in [`script.test()`](#scripttesttitle-options-test). - `action` - a sync or async function using the signature `function(flags)` where: - - `flags` - see [Flags](#flags) + - `flags` - see [Flags](#flags) ### `script.beforeEach()` @@ -333,7 +333,7 @@ Executes the provided action before each test is executed in the current experim - `options` - optional flags as describe in [`script.test()`](#scripttesttitle-options-test). - `action` - a sync or async function using the signature `function(flags)` where: - - `flags` - see [Flags](#flags) + - `flags` - see [Flags](#flags) ### `script.describe(title, [options], content)` @@ -345,9 +345,9 @@ Sets up an experiment (a group of tests) where: - `title` - the experiment description. - `options` - optional settings: - - `skip` - if `true`, sets the entire experiment content to be skipped during execution. Defaults to `false`. - - `only` - if `true`, sets all other experiments to `skip`. Default to `false`. - - `timeout` - overrides the default test timeout for tests and other timed operations. Defaults to `2000`. + - `skip` - if `true`, sets the entire experiment content to be skipped during execution. Defaults to `false`. + - `only` - if `true`, sets all other experiments to `skip`. Default to `false`. + - `timeout` - overrides the default test timeout for tests and other timed operations. Defaults to `2000`. - `content` - a function with signature `function()` which can setup other experiments or tests. ### `script.experiment.only(title, [options], content)` @@ -372,22 +372,22 @@ Sets up a test where: - `title` - the test description. - `options` - optional settings: - - `skip` - if `true`, sets the entire experiment content to be skipped during execution. Defaults to `false`. - - `only` - if `true`, sets all other experiments to `skip`. Default to `false`. - - `timeout` - overrides the default test timeout for tests and other timed operations in milliseconds. Defaults to `2000`. - - `plan` - the expected number of assertions the test must execute. This setting should only be used with an assertion library that supports a `count()` function, like [**code**](https://hapi.dev/family/code). - - `retry` - when `true` or set to a number greater than `0`, if the test fails it will be retried `retries` (defaults to `5`) number of times until it passes. + - `skip` - if `true`, sets the entire experiment content to be skipped during execution. Defaults to `false`. + - `only` - if `true`, sets all other experiments to `skip`. Default to `false`. + - `timeout` - overrides the default test timeout for tests and other timed operations in milliseconds. Defaults to `2000`. + - `plan` - the expected number of assertions the test must execute. This setting should only be used with an assertion library that supports a `count()` function, like [**code**](https://hapi.dev/family/code). + - `retry` - when `true` or set to a number greater than `0`, if the test fails it will be retried `retries` (defaults to `5`) number of times until it passes. - `test` - a function with signature `function(flags)` where: - - the function can throw if the test failed. - - the function can return a Promise which either resolves (success) or rejects (fails). - - all other return value is ignored. - - `flags` - a set of test utilities described in [Flags](#flags). + - the function can throw if the test failed. + - the function can return a Promise which either resolves (success) or rejects (fails). + - all other return value is ignored. + - `flags` - a set of test utilities described in [Flags](#flags). ```javascript lab.experiment('my plan', () => { - lab.test('only a single assertion executes', { plan: 1 }, () => { - expect(1 + 1).to.equal(2); - }); + lab.test('only a single assertion executes', { plan: 1 }, () => { + expect(1 + 1).to.equal(2); + }); }); ``` @@ -409,36 +409,36 @@ An object that is passed to `before` and `after` functions in addition to tests ```javascript lab.experiment('my experiment', () => { - lab.before(({ context }) => { - context.foo = 'bar'; - }); - - lab.test('contains context', ({ context }) => { - expect(context.foo).to.equal('bar'); - }); - - lab.experiment('a nested experiment', () => { lab.before(({ context }) => { - context.foo = 'baz'; + context.foo = 'bar'; }); - lab.test('has the correct context', ({ context }) => { - expect(context.foo).to.equal('baz'); - // since this is a shallow clone, changes will not be carried to - // future tests or experiments - context.foo = 'fizzbuzz'; + lab.test('contains context', ({ context }) => { + expect(context.foo).to.equal('bar'); }); - lab.test('receives a clean context', ({ context }) => { - expect(context.foo).to.equal('baz'); + lab.experiment('a nested experiment', () => { + lab.before(({ context }) => { + context.foo = 'baz'; + }); + + lab.test('has the correct context', ({ context }) => { + expect(context.foo).to.equal('baz'); + // since this is a shallow clone, changes will not be carried to + // future tests or experiments + context.foo = 'fizzbuzz'; + }); + + lab.test('receives a clean context', ({ context }) => { + expect(context.foo).to.equal('baz'); + }); }); - }); - lab.experiment('another nested experiment', () => { - lab.test('maintains the original context', ({ context }) => { - expect(context.foo).to.equal('bar'); + lab.experiment('another nested experiment', () => { + lab.test('maintains the original context', ({ context }) => { + expect(context.foo).to.equal('bar'); + }); }); - }); }); ``` @@ -455,12 +455,12 @@ Below is an example demonstrating how to use `mustCall` to verify that `fn` is c ```javascript lab.test('fn must be called twice', async (flags) => { - const fn = () => {}; - const wrapped = flags.mustCall(fn, 2); - wrapped(); + const fn = () => {}; + const wrapped = flags.mustCall(fn, 2); + wrapped(); - await doSomeAsyncOperation(); - wrapped(); + await doSomeAsyncOperation(); + wrapped(); }); ``` @@ -474,8 +474,8 @@ For example, if you would like to add a note with the current time, your test ca ```javascript lab.test('attaches notes', (flags) => { - expect(1 + 1).to.equal(2); - flags.note(`The current time is ${Date.now()}`); + expect(1 + 1).to.equal(2); + flags.note(`The current time is ${Date.now()}`); }); ``` @@ -487,11 +487,11 @@ A property that can be assigned a cleanup function registered at runtime to be e ```javascript lab.test('cleanups after test', (flags) => { - flags.onCleanup = () => { - cleanup_logic(); - }; + flags.onCleanup = () => { + cleanup_logic(); + }; - expect(1 + 1).to.equal(2); + expect(1 + 1).to.equal(2); }); ``` @@ -501,19 +501,21 @@ A property that can be assigned an override for global exception handling. This ```javascript lab.test('leaves an uncaught rejection', (flags) => { - return new Promise((resolve) => { - flags.onUncaughtException = (err) => { - expect(err).to.be.an.error( - 'I want this exception to remain uncaught in production', - ); - resolve(); // finish the test - }; - - // sample production code - setTimeout(() => { - throw new Error('I want this exception to remain uncaught in production'); + return new Promise((resolve) => { + flags.onUncaughtException = (err) => { + expect(err).to.be.an.error( + 'I want this exception to remain uncaught in production', + ); + resolve(); // finish the test + }; + + // sample production code + setTimeout(() => { + throw new Error( + 'I want this exception to remain uncaught in production', + ); + }); }); - }); }); ``` @@ -523,21 +525,23 @@ A property that can be assigned an override function for global rejection handli ```javascript lab.test('leaves an unhandled rejection', (flags) => { - return new Promise((resolve) => { - flags.onUnhandledRejection = (err) => { - expect(err).to.be.an.error( - 'I want this rejection to remain unhandled in production', - ); - resolve(); // finish the test - }; - - // sample production code - setTimeout(() => { - Promise.reject( - new Error('I want this rejection to remain unhandled in production'), - ); + return new Promise((resolve) => { + flags.onUnhandledRejection = (err) => { + expect(err).to.be.an.error( + 'I want this rejection to remain unhandled in production', + ); + resolve(); // finish the test + }; + + // sample production code + setTimeout(() => { + Promise.reject( + new Error( + 'I want this rejection to remain unhandled in production', + ), + ); + }); }); - }); }); ``` @@ -549,9 +553,9 @@ Below is an example of a `.labrc.js` file to enable linting and test coverage ch ```js module.exports = { - coverage: true, - threshold: 90, - lint: true, + coverage: true, + threshold: 90, + lint: true, }; ``` @@ -561,8 +565,8 @@ The `.labrc.js` file will override the **lab** default settings. Any options pas ```js module.exports = { - coverage: true, - threshold: 100, + coverage: true, + threshold: 100, }; ``` @@ -580,7 +584,7 @@ In addition, you can use the `paths` parameter to override the default test dire ```js module.exports = { - paths: ['test/lab'], + paths: ['test/lab'], }; ``` @@ -626,13 +630,13 @@ const { describe, it } = lab; const { expect, fail } = require('@hapi/code'); describe('expectation', () => { - it('should be able to expect', () => { - expect(true).to.be.true(); - }); + it('should be able to expect', () => { + expect(true).to.be.true(); + }); - it('should be able to fail (This test should fail)', () => { - fail('Should fail'); - }); + it('should be able to fail (This test should fail)', () => { + fail('Should fail'); + }); }); ``` @@ -644,11 +648,11 @@ If you use the [Code](https://github.com/hapijs/code) assertion library Lab will ```js describe('expectation', () => { - it('Test should pass but get marked as having a missing expectation', () => { - // Invalid and missing assertion - false is a method, not a property! - // This test will pass. - Lab.expect(true).to.be.false; - }); + it('Test should pass but get marked as having a missing expectation', () => { + // Invalid and missing assertion - false is a method, not a property! + // This test will pass. + Lab.expect(true).to.be.false; + }); }); ``` @@ -685,8 +689,8 @@ In a `.labrc.js` file, multiple reporters and their associated output paths woul ```javascript module.exports = { - reporter: ['console', 'html', 'lcov', 'json'], - output: ['stdout', 'coverage.html', 'lcov.info', 'data.json'], + reporter: ['console', 'html', 'lcov', 'json'], + output: ['stdout', 'coverage.html', 'lcov.info', 'data.json'], }; ``` @@ -735,7 +739,7 @@ Sometimes you want to disable code coverage for specific lines, and have the cov // There is no way to cover this in node 0.10 /* $lab:coverage:off$ */ if (typeof value === 'symbol') { - // do something with value + // do something with value } /* $lab:coverage:on$ */ ``` @@ -775,7 +779,7 @@ Semantics: - `$lab:coverage:push$` copies the current skip state to the top of the stack, and leaves it as the current state as well - `$lab:coverage:pop$` replaces the current skip state with the top of the stack, and removes the top of the stack - - if the stack is empty, `lab` will tell you by throwing the error `"unable to pop coverage bypass stack"` + - if the stack is empty, `lab` will tell you by throwing the error `"unable to pop coverage bypass stack"` ### Excluding paths from coverage reporting diff --git a/generated/markdown/lab/26/api.md b/generated/markdown/lab/26/api.md index 5f98a81b..0a60d2e3 100644 --- a/generated/markdown/lab/26/api.md +++ b/generated/markdown/lab/26/api.md @@ -22,7 +22,7 @@ const { expect } = Code; const { it } = (exports.lab = Lab.script()); it('returns true when 1 + 1 equals 2', () => { - expect(1 + 1).to.equal(2); + expect(1 + 1).to.equal(2); }); ``` @@ -36,7 +36,7 @@ const { expect } = Code; const lab = (exports.lab = Lab.script()); lab.test('returns true when 1 + 1 equals 2', () => { - expect(1 + 1).to.equal(2); + expect(1 + 1).to.equal(2); }); ``` @@ -44,8 +44,8 @@ If a test is performing an asynchronous operation then it should use the `async` ```javascript lab.test('config file has correct value', async () => { - const file = await fs.readFile('config'); - expect(file.toString()).to.contain('something'); + const file = await fs.readFile('config'); + expect(file.toString()).to.contain('something'); }); ``` @@ -53,9 +53,9 @@ Tests can be organized into experiments: ```javascript lab.experiment('math', () => { - lab.test('returns true when 1 + 1 equals 2', () => { - expect(1 + 1).to.equal(2); - }); + lab.test('returns true when 1 + 1 equals 2', () => { + expect(1 + 1).to.equal(2); + }); }); ``` @@ -63,22 +63,22 @@ If you need to perform some setup operations before or after executing the tests ```javascript lab.experiment('math', () => { - lab.before(() => { - return new Promise((resolve) => { - // Wait 1 second - setTimeout(() => { - resolve(); - }, 1000); + lab.before(() => { + return new Promise((resolve) => { + // Wait 1 second + setTimeout(() => { + resolve(); + }, 1000); + }); }); - }); - lab.beforeEach(() => { - // Run before every single test - }); + lab.beforeEach(() => { + // Run before every single test + }); - lab.test('returns true when 1 + 1 equals 2', () => { - expect(1 + 1).to.equal(2); - }); + lab.test('returns true when 1 + 1 equals 2', () => { + expect(1 + 1).to.equal(2); + }); }); ``` @@ -86,15 +86,15 @@ lab.experiment('math', () => { ```javascript lab.experiment('math', () => { - lab.before(() => { - return aFunctionReturningAPromise(); - }); + lab.before(() => { + return aFunctionReturningAPromise(); + }); - lab.test('returns true when 1 + 1 equals 2', () => { - return aFunctionReturningAPromise().then((aValue) => { - expect(aValue).to.equal(expectedValue); + lab.test('returns true when 1 + 1 equals 2', () => { + return aFunctionReturningAPromise().then((aValue) => { + expect(aValue).to.equal(expectedValue); + }); }); - }); }); ``` @@ -108,11 +108,11 @@ You can also append `.only(…)` or `.skip(…)` to `test` and `experiment` inst ```javascript lab.experiment('with only', () => { - lab.test.only('only this test will run', () => { - expect(1 + 1).to.equal(2); - }); + lab.test.only('only this test will run', () => { + expect(1 + 1).to.equal(2); + }); - lab.test('another test that will not be executed', () => {}); + lab.test('another test that will not be executed', () => {}); }); ``` @@ -128,13 +128,13 @@ const { expect } = Code; const { after, before, describe, it } = (exports.lab = Lab.script()); describe('math', () => { - before(() => {}); + before(() => {}); - after(() => {}); + after(() => {}); - it('returns true when 1 + 1 equals 2', () => { - expect(1 + 1).to.equal(2); - }); + it('returns true when 1 + 1 equals 2', () => { + expect(1 + 1).to.equal(2); + }); }); ``` @@ -150,9 +150,9 @@ const { expect } = Code; const { suite, test } = (exports.lab = Lab.script()); suite('math', () => { - test('returns true when 1 + 1 equals 2', () => { - expect(1 + 1).to.equal(2); - }); + test('returns true when 1 + 1 equals 2', () => { + expect(1 + 1).to.equal(2); + }); }); ``` @@ -162,13 +162,13 @@ suite('math', () => { ```json { - "devDependencies": { - "@hapi/lab": "21.x.x" - }, - "scripts": { - "test": "lab -t 100", - "test-cov-html": "lab -r html -o coverage.html" - } + "devDependencies": { + "@hapi/lab": "21.x.x" + }, + "scripts": { + "test": "lab -t 100", + "test-cov-html": "lab -r html -o coverage.html" + } } ``` @@ -188,13 +188,13 @@ $ npm test ```javascript lab.experiment('math', { timeout: 1000 }, () => { - lab.before({ timeout: 500 }, () => { - doSomething(); - }); + lab.before({ timeout: 500 }, () => { + doSomething(); + }); - lab.test('returns true when 1 + 1 equals 2', () => { - expect(1 + 1).to.equal(2); - }); + lab.test('returns true when 1 + 1 equals 2', () => { + expect(1 + 1).to.equal(2); + }); }); ``` @@ -215,11 +215,11 @@ const { describe, it, before } = lab; export { lab }; describe('experiment', () => { - before(() => {}); + before(() => {}); - it('verifies 1 equals 1', () => { - expect(1).to.equal(1); - }); + it('verifies 1 equals 1', () => { + expect(1).to.equal(1); + }); }); ``` @@ -270,15 +270,15 @@ $ lab --typescript --require 'tsconfig-paths/register' - `-p`, `--default-plan-threshold` - sets the minimum number of assertions a test must run. Overridable with [`plan`](#plan). - `-P`, `--pattern` - only load files with the given pattern in the name. - `-r`, `--reporter` - the reporter used to generate the test results. Defaults to `console`. Options are: - - `console` - text report. - - `html` - HTML test and code coverage report (sets `-c`). - - `json` - output results in JSON format. - - `junit` - output results in JUnit XML format. - - `tap` - TAP protocol report. - - `lcov` - output to [lcov](http://ltp.sourceforge.net/coverage/lcov/geninfo.1.php) format. - - `clover` - output results in [Clover XML](https://confluence.atlassian.com/display/CLOVER) format. - - [Multiple Reporters](#multiple-reporters) - See Below - - [Custom Reporters](#custom-reporters) - See Below + - `console` - text report. + - `html` - HTML test and code coverage report (sets `-c`). + - `json` - output results in JSON format. + - `junit` - output results in JUnit XML format. + - `tap` - TAP protocol report. + - `lcov` - output to [lcov](http://ltp.sourceforge.net/coverage/lcov/geninfo.1.php) format. + - `clover` - output results in [Clover XML](https://confluence.atlassian.com/display/CLOVER) format. + - [Multiple Reporters](#multiple-reporters) - See Below + - [Custom Reporters](#custom-reporters) - See Below - `--req`, `--require` - dependencies to require and run before tests run (useful for things like `babel`, `tsconfig-paths`, test setup, etc). - `-R`, `--retries` - the number of times to retry a failing test that is explicitly marked with `retry`. Defaults to `5`. - `--shuffle` - randomize the order that test scripts are executed. Will not work with `--id`. @@ -300,8 +300,8 @@ $ lab --typescript --require 'tsconfig-paths/register' Generates a test script interface which is used to add experiments and tests, where: - `options` - an optional object with the following optional keys: - - `schedule` - if `false`, an automatic execution of the script is disabled. Automatic execution allows running lab test scripts directly with Node.js without having to use the CLI (e.g. `node test/script.js`). When using **lab** programmatically, this behavior is undesired and can be turned off by setting `schedule` to `false`. If you need to see the output with schedule disabled you should set `output` to `process.stdout`. Defaults to `true`. - - `cli` - allows setting command line options within the script. Note that the last script file loaded wins and usage of this is recommended only for temporarily changing the execution of tests. This option is useful for code working with an automatic test engine that run tests on commits. Setting this option has no effect when not using the CLI runner. For example setting `cli` to `{ ids: [1] }` will only execute the first test loaded. + - `schedule` - if `false`, an automatic execution of the script is disabled. Automatic execution allows running lab test scripts directly with Node.js without having to use the CLI (e.g. `node test/script.js`). When using **lab** programmatically, this behavior is undesired and can be turned off by setting `schedule` to `false`. If you need to see the output with schedule disabled you should set `output` to `process.stdout`. Defaults to `true`. + - `cli` - allows setting command line options within the script. Note that the last script file loaded wins and usage of this is recommended only for temporarily changing the execution of tests. This option is useful for code working with an automatic test engine that run tests on commits. Setting this option has no effect when not using the CLI runner. For example setting `cli` to `{ ids: [1] }` will only execute the first test loaded. ### `script.after([options], action)` @@ -309,7 +309,7 @@ Executes the provided action after the current experiment block is finished wher - `options` - optional flags as describe in [`script.test()`](#scripttesttitle-options-test). - `action` - a sync or async function using the signature `function(flags)` where: - - `flags` - see [Flags](#flags) + - `flags` - see [Flags](#flags) ### `script.afterEach()` @@ -317,7 +317,7 @@ Executes the provided action after each test is executed in the current experime - `options` - optional flags as describe in [`script.test()`](#scripttesttitle-options-test). - `action` - a sync or async function using the signature `function(flags)` where: - - `flags` - see [Flags](#flags) + - `flags` - see [Flags](#flags) ### `script.before()` @@ -325,7 +325,7 @@ Executes the provided action before the current experiment block is started wher - `options` - optional flags as describe in [`script.test()`](#scripttesttitle-options-test). - `action` - a sync or async function using the signature `function(flags)` where: - - `flags` - see [Flags](#flags) + - `flags` - see [Flags](#flags) ### `script.beforeEach()` @@ -333,7 +333,7 @@ Executes the provided action before each test is executed in the current experim - `options` - optional flags as describe in [`script.test()`](#scripttesttitle-options-test). - `action` - a sync or async function using the signature `function(flags)` where: - - `flags` - see [Flags](#flags) + - `flags` - see [Flags](#flags) ### `script.describe(title, [options], content)` @@ -345,9 +345,9 @@ Sets up an experiment (a group of tests) where: - `title` - the experiment description. - `options` - optional settings: - - `skip` - if `true`, sets the entire experiment content to be skipped during execution. Defaults to `false`. - - `only` - if `true`, sets all other experiments to `skip`. Default to `false`. - - `timeout` - overrides the default test timeout for tests and other timed operations. Defaults to `2000`. + - `skip` - if `true`, sets the entire experiment content to be skipped during execution. Defaults to `false`. + - `only` - if `true`, sets all other experiments to `skip`. Default to `false`. + - `timeout` - overrides the default test timeout for tests and other timed operations. Defaults to `2000`. - `content` - a function with signature `function()` which can setup other experiments or tests. ### `script.experiment.only(title, [options], content)` @@ -372,22 +372,22 @@ Sets up a test where: - `title` - the test description. - `options` - optional settings: - - `skip` - if `true`, sets the entire experiment content to be skipped during execution. Defaults to `false`. - - `only` - if `true`, sets all other experiments to `skip`. Default to `false`. - - `timeout` - overrides the default test timeout for tests and other timed operations in milliseconds. Defaults to `2000`. - - `plan` - the expected number of assertions the test must execute. This setting should only be used with an assertion library that supports a `count()` function, like [**code**](https://hapi.dev/family/code). - - `retry` - when `true` or set to a number greater than `0`, if the test fails it will be retried `retries` (defaults to `5`) number of times until it passes. + - `skip` - if `true`, sets the entire experiment content to be skipped during execution. Defaults to `false`. + - `only` - if `true`, sets all other experiments to `skip`. Default to `false`. + - `timeout` - overrides the default test timeout for tests and other timed operations in milliseconds. Defaults to `2000`. + - `plan` - the expected number of assertions the test must execute. This setting should only be used with an assertion library that supports a `count()` function, like [**code**](https://hapi.dev/family/code). + - `retry` - when `true` or set to a number greater than `0`, if the test fails it will be retried `retries` (defaults to `5`) number of times until it passes. - `test` - a function with signature `function(flags)` where: - - the function can throw if the test failed. - - the function can return a Promise which either resolves (success) or rejects (fails). - - all other return value is ignored. - - `flags` - a set of test utilities described in [Flags](#flags). + - the function can throw if the test failed. + - the function can return a Promise which either resolves (success) or rejects (fails). + - all other return value is ignored. + - `flags` - a set of test utilities described in [Flags](#flags). ```javascript lab.experiment('my plan', () => { - lab.test('only a single assertion executes', { plan: 1 }, () => { - expect(1 + 1).to.equal(2); - }); + lab.test('only a single assertion executes', { plan: 1 }, () => { + expect(1 + 1).to.equal(2); + }); }); ``` @@ -409,36 +409,36 @@ An object that is passed to `before` and `after` functions in addition to tests ```javascript lab.experiment('my experiment', () => { - lab.before(({ context }) => { - context.foo = 'bar'; - }); - - lab.test('contains context', ({ context }) => { - expect(context.foo).to.equal('bar'); - }); - - lab.experiment('a nested experiment', () => { lab.before(({ context }) => { - context.foo = 'baz'; + context.foo = 'bar'; }); - lab.test('has the correct context', ({ context }) => { - expect(context.foo).to.equal('baz'); - // since this is a shallow clone, changes will not be carried to - // future tests or experiments - context.foo = 'fizzbuzz'; + lab.test('contains context', ({ context }) => { + expect(context.foo).to.equal('bar'); }); - lab.test('receives a clean context', ({ context }) => { - expect(context.foo).to.equal('baz'); + lab.experiment('a nested experiment', () => { + lab.before(({ context }) => { + context.foo = 'baz'; + }); + + lab.test('has the correct context', ({ context }) => { + expect(context.foo).to.equal('baz'); + // since this is a shallow clone, changes will not be carried to + // future tests or experiments + context.foo = 'fizzbuzz'; + }); + + lab.test('receives a clean context', ({ context }) => { + expect(context.foo).to.equal('baz'); + }); }); - }); - lab.experiment('another nested experiment', () => { - lab.test('maintains the original context', ({ context }) => { - expect(context.foo).to.equal('bar'); + lab.experiment('another nested experiment', () => { + lab.test('maintains the original context', ({ context }) => { + expect(context.foo).to.equal('bar'); + }); }); - }); }); ``` @@ -455,12 +455,12 @@ Below is an example demonstrating how to use `mustCall` to verify that `fn` is c ```javascript lab.test('fn must be called twice', async (flags) => { - const fn = () => {}; - const wrapped = flags.mustCall(fn, 2); - wrapped(); + const fn = () => {}; + const wrapped = flags.mustCall(fn, 2); + wrapped(); - await doSomeAsyncOperation(); - wrapped(); + await doSomeAsyncOperation(); + wrapped(); }); ``` @@ -474,8 +474,8 @@ For example, if you would like to add a note with the current time, your test ca ```javascript lab.test('attaches notes', (flags) => { - expect(1 + 1).to.equal(2); - flags.note(`The current time is ${Date.now()}`); + expect(1 + 1).to.equal(2); + flags.note(`The current time is ${Date.now()}`); }); ``` @@ -487,11 +487,11 @@ A property that can be assigned a cleanup function registered at runtime to be e ```javascript lab.test('cleanups after test', (flags) => { - flags.onCleanup = () => { - cleanup_logic(); - }; + flags.onCleanup = () => { + cleanup_logic(); + }; - expect(1 + 1).to.equal(2); + expect(1 + 1).to.equal(2); }); ``` @@ -501,19 +501,21 @@ A property that can be assigned an override for global exception handling. This ```javascript lab.test('leaves an uncaught rejection', (flags) => { - return new Promise((resolve) => { - flags.onUncaughtException = (err) => { - expect(err).to.be.an.error( - 'I want this exception to remain uncaught in production', - ); - resolve(); // finish the test - }; - - // sample production code - setTimeout(() => { - throw new Error('I want this exception to remain uncaught in production'); + return new Promise((resolve) => { + flags.onUncaughtException = (err) => { + expect(err).to.be.an.error( + 'I want this exception to remain uncaught in production', + ); + resolve(); // finish the test + }; + + // sample production code + setTimeout(() => { + throw new Error( + 'I want this exception to remain uncaught in production', + ); + }); }); - }); }); ``` @@ -523,21 +525,23 @@ A property that can be assigned an override function for global rejection handli ```javascript lab.test('leaves an unhandled rejection', (flags) => { - return new Promise((resolve) => { - flags.onUnhandledRejection = (err) => { - expect(err).to.be.an.error( - 'I want this rejection to remain unhandled in production', - ); - resolve(); // finish the test - }; - - // sample production code - setTimeout(() => { - Promise.reject( - new Error('I want this rejection to remain unhandled in production'), - ); + return new Promise((resolve) => { + flags.onUnhandledRejection = (err) => { + expect(err).to.be.an.error( + 'I want this rejection to remain unhandled in production', + ); + resolve(); // finish the test + }; + + // sample production code + setTimeout(() => { + Promise.reject( + new Error( + 'I want this rejection to remain unhandled in production', + ), + ); + }); }); - }); }); ``` @@ -549,9 +553,9 @@ Below is an example of a `.labrc.js` file to enable linting and test coverage ch ```js module.exports = { - coverage: true, - threshold: 90, - lint: true, + coverage: true, + threshold: 90, + lint: true, }; ``` @@ -561,8 +565,8 @@ The `.labrc.js` file will override the **lab** default settings. Any options pas ```js module.exports = { - coverage: true, - threshold: 100, + coverage: true, + threshold: 100, }; ``` @@ -580,7 +584,7 @@ In addition, you can use the `paths` parameter to override the default test dire ```js module.exports = { - paths: ['test/lab'], + paths: ['test/lab'], }; ``` @@ -605,10 +609,10 @@ and add an `ignores` rule containing paths to be ignored. Here is an example pre import HapiPlugin from '@hapi/eslint-plugin'; export default [ - { - ignores: ['node_modules/*', '**/vendor/*.js'], - }, - ...HapiPlugin.configs.module, + { + ignores: ['node_modules/*', '**/vendor/*.js'], + }, + ...HapiPlugin.configs.module, ]; ``` @@ -633,13 +637,13 @@ const { describe, it } = lab; const { expect, fail } = require('@hapi/code'); describe('expectation', () => { - it('should be able to expect', () => { - expect(true).to.be.true(); - }); + it('should be able to expect', () => { + expect(true).to.be.true(); + }); - it('should be able to fail (This test should fail)', () => { - fail('Should fail'); - }); + it('should be able to fail (This test should fail)', () => { + fail('Should fail'); + }); }); ``` @@ -651,11 +655,11 @@ If you use the [Code](https://github.com/hapijs/code) assertion library Lab will ```js describe('expectation', () => { - it('Test should pass but get marked as having a missing expectation', () => { - // Invalid and missing assertion - false is a method, not a property! - // This test will pass. - Lab.expect(true).to.be.false; - }); + it('Test should pass but get marked as having a missing expectation', () => { + // Invalid and missing assertion - false is a method, not a property! + // This test will pass. + Lab.expect(true).to.be.false; + }); }); ``` @@ -692,8 +696,8 @@ In a `.labrc.js` file, multiple reporters and their associated output paths woul ```javascript module.exports = { - reporter: ['console', 'html', 'lcov', 'json'], - output: ['stdout', 'coverage.html', 'lcov.info', 'data.json'], + reporter: ['console', 'html', 'lcov', 'json'], + output: ['stdout', 'coverage.html', 'lcov.info', 'data.json'], }; ``` @@ -742,7 +746,7 @@ Sometimes you want to disable code coverage for specific lines, and have the cov // There is no way to cover this in node 0.10 /* $lab:coverage:off$ */ if (typeof value === 'symbol') { - // do something with value + // do something with value } /* $lab:coverage:on$ */ ``` @@ -782,7 +786,7 @@ Semantics: - `$lab:coverage:push$` copies the current skip state to the top of the stack, and leaves it as the current state as well - `$lab:coverage:pop$` replaces the current skip state with the top of the stack, and removes the top of the stack - - if the stack is empty, `lab` will tell you by throwing the error `"unable to pop coverage bypass stack"` + - if the stack is empty, `lab` will tell you by throwing the error `"unable to pop coverage bypass stack"` ### Excluding paths from coverage reporting diff --git a/generated/markdown/log/2/api.md b/generated/markdown/log/2/api.md index 39477033..e3f2fd11 100644 --- a/generated/markdown/log/2/api.md +++ b/generated/markdown/log/2/api.md @@ -7,21 +7,21 @@ This API is still a WIP. Feedbacks are welcome. This section will serve as a gathering for all ideas we want to implement or that are open to discussion in this module. - Dual logging system: - - A highly performant core integrated with hapi's core: - - Super fast text streams (inspired from pino) - - Replace the current `server.log()` and `request.log()`, maybe by something like `server.log.critical()`, `request.log.debug()`. - - Should we allow for custom log levels? - - Allow data to be bind to a logger to create a "child logger" rather than having to do it by hand every time. - - Allow for default log level and minimum log level threshold. - - A documented log format that would enable logging to `stdout` / `stderr` from hapi and piping them to another process for more in depth handling (reformating, shipping, etc.). - - Podium API to subscribe to specific events and a built-in way to pipe everything to stdout. + - A highly performant core integrated with hapi's core: + - Super fast text streams (inspired from pino) + - Replace the current `server.log()` and `request.log()`, maybe by something like `server.log.critical()`, `request.log.debug()`. + - Should we allow for custom log levels? + - Allow data to be bind to a logger to create a "child logger" rather than having to do it by hand every time. + - Allow for default log level and minimum log level threshold. + - A documented log format that would enable logging to `stdout` / `stderr` from hapi and piping them to another process for more in depth handling (reformating, shipping, etc.). + - Podium API to subscribe to specific events and a built-in way to pipe everything to stdout. - Plugins could add support for writing to files with additional features like files rotation, chunking or write to HTTP targets i.e loggly. - Rework the current `server.events` and `request.events` channels to make them more intuitive : - - Remove the ambiguity with the `request` event where it makes you think that an event will be triggered when a new request is received whereas it can be done with the `onRequest` extension point instead. - - Remove the inconsistency between `server.log()` which emits `log` events and `request.log()` which emits `request` events. + - Remove the ambiguity with the `request` event where it makes you think that an event will be triggered when a new request is received whereas it can be done with the `onRequest` extension point instead. + - Remove the inconsistency between `server.log()` which emits `log` events and `request.log()` which emits `request` events. - Keep emitting events when logging (to enable side usage like crash notifications ala Sentry). - Provide first class API to serialize problematic Node/hapi objects such as the request object using either first class citizen objects or methods like `toJSON()` : - - Allow the user to provide paths to data or a redaction function for sensitive information. + - Allow the user to provide paths to data or a redaction function for sensitive information. - Built in support for ignoring events based on path or tags i.e `/health`. ## Log level @@ -65,7 +65,7 @@ An array of strings where each value represents the name of an event dispatched - `response` event - `start` event - `stop` event - - The logger will automatically be closed upon `stop` event reception whether it is present in the `events` array or not. + - The logger will automatically be closed upon `stop` event reception whether it is present in the `events` array or not. The automatic logging behavior on `log` and `request` event is handled differently from the others. If the received event object contains tags, they will be tested against the [log levels](#log-levels). If there are matches and a matched log level has a more severe log level than the [default level](#register.defaultLevel) it will be used instead. When multiple tags match, the one with the most severe log level will be used. If there are no matches, the [default level](#register.defaultLevel) will be used. @@ -109,12 +109,12 @@ An object with several methods to setup and log information: - `async logger.connect()` (optional): this method is called during the `onPreStart` lifecycle. - `logger.close()` (optional): this method is called upon reception of the server `stop` event. It should execute cleanup logic i.e closing files, closing remote communication. - `logger.on(eventName, callback)`: this method is used to listen to events on the logger object. It is used to listen to an `error` event when the [`onError`](#register.onError) option is provided. It accepts two arguments: - - `eventName`: a string for the event name. - - `callback`: a function that should be called when an event matching the event name is dispatched. + - `eventName`: a string for the event name. + - `callback`: a function that should be called when an event matching the event name is dispatched. - `logger[level](label, data, additionalFields)`: methods for every log level in the [`events`](#register.events) option i.e `logger.notice()` or `logger.critical()`. These methods will be called with three arguments: - - `message`: the message to log. Can be a string or an object that can be stringified. - - `data`: an object containing data about the event, `undefined` when no data are sent. - - `additionalFields`: the object passed to the [`additionalFields`](#register.additionalFields) option. + - `message`: the message to log. Can be a string or an object that can be stringified. + - `data`: an object containing data about the event, `undefined` when no data are sent. + - `additionalFields`: the object passed to the [`additionalFields`](#register.additionalFields) option. ### `logLevelMap` @@ -124,19 +124,19 @@ An object that will be used to create a mapping between different names and the ```json { - "emerg": "emergency", - "emergency": "emergency", - "alert": "alert", - "crit": "critical", - "critical": "critical", - "err": "error", - "error": "error", - "warn": "warning", - "warning": "warning", - "notice": "notice", - "info": "info", - "log": "info", - "debug": "debug" + "emerg": "emergency", + "emergency": "emergency", + "alert": "alert", + "crit": "critical", + "critical": "critical", + "err": "error", + "error": "error", + "warn": "warning", + "warning": "warning", + "notice": "notice", + "info": "info", + "log": "info", + "debug": "debug" } ``` diff --git a/generated/markdown/mimos/7/api.md b/generated/markdown/mimos/7/api.md index c157514a..5cbd63ed 100644 --- a/generated/markdown/mimos/7/api.md +++ b/generated/markdown/mimos/7/api.md @@ -7,11 +7,11 @@ Mimos is a convenience class for retrieving mime information objects. Creates a new Mimos object where: - `[options]` - an option object the following keys - - `[override]` - an object hash that is merged into the built in mime information specified [here](https://github.com/jshttp/mime-db). Each key value pair represents a single mime object. Each override value should follow this schema: - - `key` - the key is the lower-cased correct mime-type. (Ex. "application/javascript"). - - `value` - the value should be an object following the specifications outlined [here](https://github.com/jshttp/mime-db#data-structure). Additional values include: - - `type` - specify the `type` value of result objects, defaults to `key`. See the example below for more clarification. - - `predicate` - method with signature `function(mime)` when this mime type is found in the database, this function will run. This allows you make customizations to `mime` based on developer criteria. + - `[override]` - an object hash that is merged into the built in mime information specified [here](https://github.com/jshttp/mime-db). Each key value pair represents a single mime object. Each override value should follow this schema: + - `key` - the key is the lower-cased correct mime-type. (Ex. "application/javascript"). + - `value` - the value should be an object following the specifications outlined [here](https://github.com/jshttp/mime-db#data-structure). Additional values include: + - `type` - specify the `type` value of result objects, defaults to `key`. See the example below for more clarification. + - `predicate` - method with signature `function(mime)` when this mime type is found in the database, this function will run. This allows you make customizations to `mime` based on developer criteria. ### `mimos.path(path)` @@ -60,31 +60,31 @@ In certain situations, it can be helpful to override the built in mime type info ```js const options = { - override: { - 'node/module': { - source: 'iana', - compressible: true, - extensions: ['node', 'module', 'npm'], - type: 'node/module', + override: { + 'node/module': { + source: 'iana', + compressible: true, + extensions: ['node', 'module', 'npm'], + type: 'node/module', + }, + 'application/javascript': { + source: 'iana', + charset: 'UTF-8', + compressible: true, + extensions: ['js', 'javascript'], + type: 'text/javascript', + }, + 'text/html': { + predicate: function (mime) { + if (someCondition) { + mime.foo = 'test'; + } else { + mime.foo = 'bar'; + } + return mime; + }, + }, }, - 'application/javascript': { - source: 'iana', - charset: 'UTF-8', - compressible: true, - extensions: ['js', 'javascript'], - type: 'text/javascript', - }, - 'text/html': { - predicate: function (mime) { - if (someCondition) { - mime.foo = 'test'; - } else { - mime.foo = 'bar'; - } - return mime; - }, - }, - }, }; const mimos = new Mimos.Mimos(options); diff --git a/generated/markdown/nes/13/api.md b/generated/markdown/nes/13/api.md index 1b2a5472..e691b9a6 100644 --- a/generated/markdown/nes/13/api.md +++ b/generated/markdown/nes/13/api.md @@ -24,19 +24,19 @@ const Nes = require('@hapi/nes'); const server = new Hapi.Server(); const start = async () => { - await server.register(Nes); - server.route({ - method: 'GET', - path: '/h', - config: { - id: 'hello', - handler: (request, h) => { - return 'world!'; - }, - }, - }); - - await server.start(); + await server.register(Nes); + server.route({ + method: 'GET', + path: '/h', + config: { + id: 'hello', + handler: (request, h) => { + return 'world!'; + }, + }, + }); + + await server.start(); }; start(); @@ -50,9 +50,9 @@ const Nes = require('@hapi/nes'); var client = new Nes.Client('ws://localhost'); const start = async () => { - await client.connect(); - const payload = await client.request('hello'); // Can also request '/h' - // payload -> 'world!' + await client.connect(); + const payload = await client.request('hello'); // Can also request '/h' + // payload -> 'world!' }; start(); @@ -69,11 +69,11 @@ const Nes = require('@hapi/nes'); const server = new Hapi.Server(); const start = async () => { - await server.register(Nes); - server.subscription('/item/{id}'); - await server.start(); - server.publish('/item/5', { id: 5, status: 'complete' }); - server.publish('/item/6', { id: 6, status: 'initial' }); + await server.register(Nes); + server.subscription('/item/{id}'); + await server.start(); + server.publish('/item/5', { id: 5, status: 'complete' }); + server.publish('/item/6', { id: 6, status: 'initial' }); }; start(); @@ -86,13 +86,13 @@ const Nes = require('@hapi/nes'); const client = new Nes.Client('ws://localhost'); const start = async () => { - await client.connect(); - const handler = (update, flags) => { - // update -> { id: 5, status: 'complete' } - // Second publish is not received (doesn't match) - }; + await client.connect(); + const handler = (update, flags) => { + // update -> { id: 5, status: 'complete' } + // Second publish is not received (doesn't match) + }; - client.subscribe('/item/5', handler); + client.subscribe('/item/5', handler); }; start(); @@ -109,9 +109,9 @@ const Nes = require('@hapi/nes'); const server = new Hapi.Server(); const start = async () => { - await server.register(Nes); - await server.start(); - server.broadcast('welcome!'); + await server.register(Nes); + await server.start(); + server.broadcast('welcome!'); }; start(); @@ -124,10 +124,10 @@ const Nes = require('@hapi/nes'); const client = new Nes.Client('ws://localhost'); const start = async () => { - await client.connect(); - client.onUpdate = (update) => { - // update -> 'welcome!' - }; + await client.connect(); + client.onUpdate = (update) => { + // update -> 'welcome!' + }; }; start(); @@ -146,46 +146,47 @@ const Nes = require('@hapi/nes'); const server = new Hapi.Server(); const start = async () => { - await server.register([Basic, Nes]); - - // Set up HTTP Basic authentication - - const users = { - john: { - username: 'john', - password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' - name: 'John Doe', - id: '2133d32a', - }, - }; - - const validate = async (request, username, password) => { - const user = users[username]; - if (!user) { - return { isValid: false }; - } - - const isValid = await Bcrypt.compare(password, user.password); - const credentials = { id: user.id, name: user.name }; - return { isValid, credentials }; - }; - - server.auth.strategy('simple', 'basic', { validate }); - - // Configure route with authentication - - server.route({ - method: 'GET', - path: '/h', - config: { - id: 'hello', - handler: (request, h) => { - return `Hello ${request.auth.credentials.name}`; - }, - }, - }); - - await server.start(); + await server.register([Basic, Nes]); + + // Set up HTTP Basic authentication + + const users = { + john: { + username: 'john', + password: + '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' + name: 'John Doe', + id: '2133d32a', + }, + }; + + const validate = async (request, username, password) => { + const user = users[username]; + if (!user) { + return { isValid: false }; + } + + const isValid = await Bcrypt.compare(password, user.password); + const credentials = { id: user.id, name: user.name }; + return { isValid, credentials }; + }; + + server.auth.strategy('simple', 'basic', { validate }); + + // Configure route with authentication + + server.route({ + method: 'GET', + path: '/h', + config: { + id: 'hello', + handler: (request, h) => { + return `Hello ${request.auth.credentials.name}`; + }, + }, + }); + + await server.start(); }; start(); @@ -198,11 +199,11 @@ const Nes = require('@hapi/nes'); const client = new Nes.Client('ws://localhost'); const start = async () => { - await client.connect({ - auth: { headers: { authorization: 'Basic am9objpzZWNyZXQ=' } }, - }); - const payload = await client.request('hello'); // Can also request '/h' - // payload -> 'Hello John Doe' + await client.connect({ + auth: { headers: { authorization: 'Basic am9objpzZWNyZXQ=' } }, + }); + const payload = await client.request('hello'); // Can also request '/h' + // payload -> 'Hello John Doe' }; start(); @@ -221,43 +222,44 @@ const Nes = require('@hapi/nes'); const server = new Hapi.Server(); const start = async () => { - await server.register([Basic, Nes]); - - // Set up HTTP Basic authentication - - const users = { - john: { - username: 'john', - password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' - name: 'John Doe', - id: '2133d32a', - }, - }; - - const validate = async (request, username, password) => { - const user = users[username]; - if (!user) { - return { isValid: false }; - } - - const isValid = await Bcrypt.compare(password, user.password); - const credentials = { id: user.id, name: user.name }; - return { isValid, credentials }; - }; - - server.auth.strategy('simple', 'basic', 'required', { validate }); - - // Set up subscription - - server.subscription('/items', { - filter: (path, message, options) => { - return message.updater !== options.credentials.username; - }, - }); - - await server.start(); - server.publish('/items', { id: 5, status: 'complete', updater: 'john' }); - server.publish('/items', { id: 6, status: 'initial', updater: 'steve' }); + await server.register([Basic, Nes]); + + // Set up HTTP Basic authentication + + const users = { + john: { + username: 'john', + password: + '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' + name: 'John Doe', + id: '2133d32a', + }, + }; + + const validate = async (request, username, password) => { + const user = users[username]; + if (!user) { + return { isValid: false }; + } + + const isValid = await Bcrypt.compare(password, user.password); + const credentials = { id: user.id, name: user.name }; + return { isValid, credentials }; + }; + + server.auth.strategy('simple', 'basic', 'required', { validate }); + + // Set up subscription + + server.subscription('/items', { + filter: (path, message, options) => { + return message.updater !== options.credentials.username; + }, + }); + + await server.start(); + server.publish('/items', { id: 5, status: 'complete', updater: 'john' }); + server.publish('/items', { id: 6, status: 'initial', updater: 'steve' }); }; start(); @@ -273,15 +275,15 @@ const client = new Nes.Client('ws://localhost'); // Authenticate as 'john' const start = async () => { - await client.connect({ - auth: { headers: { authorization: 'Basic am9objpzZWNyZXQ=' } }, - }); - const handler = (update, flags) => { - // First publish is not received (filtered due to updater key) - // update -> { id: 6, status: 'initial', updater: 'steve' } - }; - - client.subscribe('/items', handler); + await client.connect({ + auth: { headers: { authorization: 'Basic am9objpzZWNyZXQ=' } }, + }); + const handler = (update, flags) => { + // First publish is not received (filtered due to updater key) + // update -> { id: 6, status: 'initial', updater: 'steve' } + }; + + client.subscribe('/items', handler); }; start(); @@ -300,93 +302,93 @@ method. The plugin accepts the following optional registration options: - `onConnection` - a function with the signature `function(socket)` invoked for each incoming client connection where: - - `socket` - the [`Socket`](#socket) object of the incoming connection. + - `socket` - the [`Socket`](#socket) object of the incoming connection. - `onDisconnection` - a function with the signature `function(socket)` invoked for each incoming client connection on disconnect where: - - `socket` - the [`Socket`](#socket) object of the connection. + - `socket` - the [`Socket`](#socket) object of the connection. - `onMessage` - a function with the signature `async function(socket, message)` used to receive custom client messages (when the client calls [`client.message()`](#clientmessagedata)) where: - - `socket` - the [`Socket`](#socket) object of the message source. - - `message` - the message sent by the client. - - the function may return a response to the client. + - `socket` - the [`Socket`](#socket) object of the message source. + - `message` - the message sent by the client. + - the function may return a response to the client. - `auth` - optional plugin authentication options with the following supported values: - - `false` - no client authentication supported. - - an object with the following optional keys: - - `type` - the type of authentication flow supported by the server. Each type has a very different - security profile. The following types are supported: - - `'direct'` - the plugin configures an internal authentication endpoint which is only called - internally by the plugin when the client provides its authentication credentials (or by - passing an `auth` option to [`client.connect()`](#await-clientconnectoptions)). The - endpoint returns a copy of the credentials object (along with any artifacts) to the plugin - which is then used for all subsequent client requests and subscriptions. This type requires - exposing the underlying credentials to the application. Note that if the authentication scheme - uses the HTTP request method (e.g. [hawk](https://github.com/hueniverse/hawk) or - [oz](https://github.com/hueniverse/oz)) you need to use `'auth'` as the value (and - not `'GET'`). This is the default value. - - `'cookie'` - the plugin configures a public authentication endpoint which must be called - by the client application manually before it calls [`client.connect()`](#await-clientconnectoptions). - When the endpoint is called with valid credentials, it sets a cookie with the provided - `name` which the browser then transmits back to the server when the WebSocket connection - is made. This type removes the need to expose the authentication credentials to the - JavaScript layer but requires an additional round trip before establishing a client - connection. - - `'token'` - the plugin configures a public authentication endpoint which must be called - by the client application manually before it calls [`client.connect()`](#await-clientconnectoptions). - When the endpoint is called with valid credentials, it returns an encrypted authentication - token which the client can use to authenticate the connection by passing an `auth` option - to [`client.connect()`](#await-clientconnectoptions) with the token. This type is useful - when the client-side application needs to manage its credentials differently than relying - on cookies (e.g. non-browser clients). - - `endpoint` - the HTTP path of the authentication endpoint. Note that even though the `'direct'` - type does not exposes the endpoint, it is still created internally and registered using the - provided path. Change it only if the default path creates a conflict. Defaults to `'/nes/auth'`. - - `id` - the authentication endpoint identifier. Change it only if the default id creates a conflict. - Defaults to `nes.auth`. - - `route` - the **hapi** route `config.auth` settings. The authentication endpoint must be - configured with at least one authentication strategy which the client is going to use to - authenticate. The `route` value must be set to a valid value supported by the **hapi** route - `auth` configuration. Defaults to the default authentication strategy if one is present, - otherwise no authentication will be possible (clients will fail to authenticate). - - `password` - the password used by the [**iron**](https://github.com/hueniverse/iron) module - to encrypt the cookie or token values. If no password is provided, one is automatically - generated. However, the password will change every time the process is restarted (as well - as generate different results on a distributed system). It is recommended that a password - is manually set and managed by the application. - - `iron` - the settings used by the [**iron**](https://github.com/hueniverse/iron) module. - Defaults to the **iron** defaults. - - `cookie` - the cookie name when using type `'cookie'`. Defaults to `'nes'`. - - `isSecure` - the cookie secure flag when using type `'cookie'`. Defaults to `true`. - - `isHttpOnly` - the cookie HTTP only flag when using type `'cookie'`. Defaults to `true`. - - `path` - the cookie path when using type `'cookie'`. Defaults to `'/'`. - - `domain` - the cookie domain when using type `'cookie'`. Defaults to no domain. - - `ttl` - the cookie expiration milliseconds when using type `'cookie'`. Defaults to current - session only. - - `index` - if `true`, authenticated socket with `user` property in `credentials` are mapped - for usage in [`server.broadcast()`](#serverbroadcastmessage-options) calls. Defaults to `false`. - - `timeout` - number of milliseconds after which a new connection is disconnected if authentication - is required but the connection has not yet sent a hello message. No timeout if set to `false`. - Defaults to `5000` (5 seconds). - - `maxConnectionsPerUser` - if specified, limits authenticated users to a maximum number of - client connections. Requires the `index` option enabled. Defaults to `false`. - - `minAuthVerifyInterval` - if specified, waits at least the specificed number of milliseconds - between calls to [`await server.auth.verify()`](https://hapijs.com/api#-await-serverauthverifyrequest) - to check if credentials are still valid. Cannot be shorter than `heartbeat.interval`. - Defaults to `heartbeat.interval` or `15000` if `heartbeat` is disabled. + - `false` - no client authentication supported. + - an object with the following optional keys: + - `type` - the type of authentication flow supported by the server. Each type has a very different + security profile. The following types are supported: + - `'direct'` - the plugin configures an internal authentication endpoint which is only called + internally by the plugin when the client provides its authentication credentials (or by + passing an `auth` option to [`client.connect()`](#await-clientconnectoptions)). The + endpoint returns a copy of the credentials object (along with any artifacts) to the plugin + which is then used for all subsequent client requests and subscriptions. This type requires + exposing the underlying credentials to the application. Note that if the authentication scheme + uses the HTTP request method (e.g. [hawk](https://github.com/hueniverse/hawk) or + [oz](https://github.com/hueniverse/oz)) you need to use `'auth'` as the value (and + not `'GET'`). This is the default value. + - `'cookie'` - the plugin configures a public authentication endpoint which must be called + by the client application manually before it calls [`client.connect()`](#await-clientconnectoptions). + When the endpoint is called with valid credentials, it sets a cookie with the provided + `name` which the browser then transmits back to the server when the WebSocket connection + is made. This type removes the need to expose the authentication credentials to the + JavaScript layer but requires an additional round trip before establishing a client + connection. + - `'token'` - the plugin configures a public authentication endpoint which must be called + by the client application manually before it calls [`client.connect()`](#await-clientconnectoptions). + When the endpoint is called with valid credentials, it returns an encrypted authentication + token which the client can use to authenticate the connection by passing an `auth` option + to [`client.connect()`](#await-clientconnectoptions) with the token. This type is useful + when the client-side application needs to manage its credentials differently than relying + on cookies (e.g. non-browser clients). + - `endpoint` - the HTTP path of the authentication endpoint. Note that even though the `'direct'` + type does not exposes the endpoint, it is still created internally and registered using the + provided path. Change it only if the default path creates a conflict. Defaults to `'/nes/auth'`. + - `id` - the authentication endpoint identifier. Change it only if the default id creates a conflict. + Defaults to `nes.auth`. + - `route` - the **hapi** route `config.auth` settings. The authentication endpoint must be + configured with at least one authentication strategy which the client is going to use to + authenticate. The `route` value must be set to a valid value supported by the **hapi** route + `auth` configuration. Defaults to the default authentication strategy if one is present, + otherwise no authentication will be possible (clients will fail to authenticate). + - `password` - the password used by the [**iron**](https://github.com/hueniverse/iron) module + to encrypt the cookie or token values. If no password is provided, one is automatically + generated. However, the password will change every time the process is restarted (as well + as generate different results on a distributed system). It is recommended that a password + is manually set and managed by the application. + - `iron` - the settings used by the [**iron**](https://github.com/hueniverse/iron) module. + Defaults to the **iron** defaults. + - `cookie` - the cookie name when using type `'cookie'`. Defaults to `'nes'`. + - `isSecure` - the cookie secure flag when using type `'cookie'`. Defaults to `true`. + - `isHttpOnly` - the cookie HTTP only flag when using type `'cookie'`. Defaults to `true`. + - `path` - the cookie path when using type `'cookie'`. Defaults to `'/'`. + - `domain` - the cookie domain when using type `'cookie'`. Defaults to no domain. + - `ttl` - the cookie expiration milliseconds when using type `'cookie'`. Defaults to current + session only. + - `index` - if `true`, authenticated socket with `user` property in `credentials` are mapped + for usage in [`server.broadcast()`](#serverbroadcastmessage-options) calls. Defaults to `false`. + - `timeout` - number of milliseconds after which a new connection is disconnected if authentication + is required but the connection has not yet sent a hello message. No timeout if set to `false`. + Defaults to `5000` (5 seconds). + - `maxConnectionsPerUser` - if specified, limits authenticated users to a maximum number of + client connections. Requires the `index` option enabled. Defaults to `false`. + - `minAuthVerifyInterval` - if specified, waits at least the specificed number of milliseconds + between calls to [`await server.auth.verify()`](https://hapijs.com/api#-await-serverauthverifyrequest) + to check if credentials are still valid. Cannot be shorter than `heartbeat.interval`. + Defaults to `heartbeat.interval` or `15000` if `heartbeat` is disabled. - `headers` - an optional array of header field names to include in server responses to the client. If set to `'*'` (without an array), allows all headers. Defaults to `null` (no headers). - `payload` - optional message payload settings where: - - `maxChunkChars` - the maximum number of characters (after the full protocol object is converted - to a string using `JSON.stringify()`) allowed in a single WebSocket message. This is important - when using the protocol over a slow network (e.g. mobile) with large updates as the transmission - time can exceed the timeout or heartbeat limits which will cause the client to disconnect. - Defaults to `false` (no limit). + - `maxChunkChars` - the maximum number of characters (after the full protocol object is converted + to a string using `JSON.stringify()`) allowed in a single WebSocket message. This is important + when using the protocol over a slow network (e.g. mobile) with large updates as the transmission + time can exceed the timeout or heartbeat limits which will cause the client to disconnect. + Defaults to `false` (no limit). - `heartbeat` - configures connection keep-alive settings where value can be: - - `false` - no heartbeats. - - an object with: - - `interval` - time interval between heartbeat messages in milliseconds. Defaults to `15000` - (15 seconds). - - `timeout` - timeout in milliseconds after a heartbeat is sent to the client and before the - client is considered disconnected by the server. Defaults to `5000` (5 seconds). + - `false` - no heartbeats. + - an object with: + - `interval` - time interval between heartbeat messages in milliseconds. Defaults to `15000` + (15 seconds). + - `timeout` - timeout in milliseconds after a heartbeat is sent to the client and before the + client is considered disconnected by the server. Defaults to `5000` (5 seconds). - `maxConnections` - if specified, limits the number of simultaneous client connections. Defaults to `false`. - `origin` - an origin string or an array of origin strings incoming client requests must match for @@ -404,9 +406,9 @@ Sends a message to all connected clients where: - `message` - the message sent to the clients. Can be any type which can be safely converted to string using `JSON.stringify()`. - `options` - optional object with the following: - - `user` - optional user filter. When provided, the message will be sent only to authenticated - sockets with `credentials.user` equal to `user`. Requires the `auth.index` options to be - configured to `true`. + - `user` - optional user filter. When provided, the message will be sent only to authenticated + sockets with `credentials.user` equal to `user`. Requires the `auth.index` options to be + configured to `true`. Note that in a multi server deployment, only the client connected to the current server will receive the message. @@ -418,52 +420,52 @@ Declares a subscription path client can subscribe to where: - `path` - an HTTP-like path. The path must begin with the `'/'` character. The path may contain path parameters as supported by the **hapi** route path parser. - `options` - an optional object where: - - `filter` - a publishing filter function for making per-client connection decisions about which - matching publication update should be sent to which client. The function uses the signature - `async function(path, message, options)` where: - - `path` - the path of the published update. The path is provided in case the subscription - contains path parameters. - - `message` - the message being published. - - `options` - additional information about the subscription and client: - - `socket` - the current socket being published to. - - `credentials` - the client credentials if authenticated. - - `params` - the parameters parsed from the publish message path if the subscription - path contains parameters. - - `internal` - the `internal` options data passed to the publish call, if defined. - - the function must return a value of (or a promise that resolves into): - - `true` - to proceed sending the message. - - `false` - to skip sending the message. - - `{ override }` - an override `message` to send to this `socket` instead of the - published one. Note that if you want to modify `message`, you must clone it first or - the changes will apply to all other sockets. - - `auth` - the subscription authentication options with the following supported values: - - `false` - no authentication required to subscribe. - - a configuration object with the following optional keys: - - `mode` - same as the **hapi** route auth modes: - - `'required'` - authentication is required. This is the default value. - - `'optional'` - authentication is optional. - - `scope` - a string or array of string of authentication scope as supported by the - **hapi** route authenticate configuration. - - `entity` - the required credentials type as supported by the **hapi** route - authentication configuration: - - `'user'` - - `'app'` - - `'any'` - - `index` - if `true`, authenticated socket with `user` property in `credentials` are - mapped for usage in [`server.publish()`](#await-socketpublishpath-message) calls. - Defaults to `false`. - - `onSubscribe` - a method called when a client subscribes to this subscription endpoint using - the signature `async function(socket, path, params)` where: - - `socket` - the [`Socket`](#socket) object of the incoming connection. - - `path` - the path the client subscribed to - - `params` - the parameters parsed from the subscription request path if the subscription - path definition contains parameters. - - `onUnsubscribe` - a method called when a client unsubscribes from this subscription endpoint - using the signature `async function(socket, path, params)` where: - - `socket` - the [`Socket`](#socket) object of the incoming connection. - - `path` - Path of the unsubscribed route. - - `params` - the parameters parsed from the subscription request path if the subscription - path definition contains parameters. + - `filter` - a publishing filter function for making per-client connection decisions about which + matching publication update should be sent to which client. The function uses the signature + `async function(path, message, options)` where: + - `path` - the path of the published update. The path is provided in case the subscription + contains path parameters. + - `message` - the message being published. + - `options` - additional information about the subscription and client: + - `socket` - the current socket being published to. + - `credentials` - the client credentials if authenticated. + - `params` - the parameters parsed from the publish message path if the subscription + path contains parameters. + - `internal` - the `internal` options data passed to the publish call, if defined. + - the function must return a value of (or a promise that resolves into): + - `true` - to proceed sending the message. + - `false` - to skip sending the message. + - `{ override }` - an override `message` to send to this `socket` instead of the + published one. Note that if you want to modify `message`, you must clone it first or + the changes will apply to all other sockets. + - `auth` - the subscription authentication options with the following supported values: + - `false` - no authentication required to subscribe. + - a configuration object with the following optional keys: + - `mode` - same as the **hapi** route auth modes: + - `'required'` - authentication is required. This is the default value. + - `'optional'` - authentication is optional. + - `scope` - a string or array of string of authentication scope as supported by the + **hapi** route authenticate configuration. + - `entity` - the required credentials type as supported by the **hapi** route + authentication configuration: + - `'user'` + - `'app'` + - `'any'` + - `index` - if `true`, authenticated socket with `user` property in `credentials` are + mapped for usage in [`server.publish()`](#await-socketpublishpath-message) calls. + Defaults to `false`. + - `onSubscribe` - a method called when a client subscribes to this subscription endpoint using + the signature `async function(socket, path, params)` where: + - `socket` - the [`Socket`](#socket) object of the incoming connection. + - `path` - the path the client subscribed to + - `params` - the parameters parsed from the subscription request path if the subscription + path definition contains parameters. + - `onUnsubscribe` - a method called when a client unsubscribes from this subscription endpoint + using the signature `async function(socket, path, params)` where: + - `socket` - the [`Socket`](#socket) object of the incoming connection. + - `path` - Path of the unsubscribed route. + - `params` - the parameters parsed from the subscription request path if the subscription + path definition contains parameters. ### `await server.publish(path, message, [options])` @@ -477,11 +479,11 @@ Sends a message to all the subscribed clients where: - `message` - the message sent to the clients. Can be any type which can be safely converted to string using `JSON.stringify()`. - `options` - optional object that may include - - `internal` - Internal data that is passed to `filter` and may be used to filter messages - on data that is not sent to the client. - - `user` - optional user filter. When provided, the message will be sent only to authenticated - sockets with `credentials.user` equal to `user`. Requires the subscription `auth.index` - options to be configured to `true`. + - `internal` - Internal data that is passed to `filter` and may be used to filter messages + on data that is not sent to the client. + - `user` - optional user filter. When provided, the message will be sent only to authenticated + sockets with `credentials.user` equal to `user`. Requires the subscription `auth.index` + options to be configured to `true`. ### `await server.eachSocket(each, [options])` @@ -490,11 +492,11 @@ a given subscription. This operation is synchronous. - `each` - Iteration method in the form `async function(socket)`. - `options` - Optional options object - - `subscription` - When set to a string path, limits the results to sockets that are - subscribed to that path. - - `user` - optional user filter. When provided, the `each` method will be invoked with - authenticated sockets with `credentials.user` equal to `user`. Requires the subscription - `auth.index` options to be configured to `true`. + - `subscription` - When set to a string path, limits the results to sockets that are + subscribed to that path. + - `user` - optional user filter. When provided, the `each` method will be invoked with + authenticated sockets with `credentials.user` equal to `user`. Requires the subscription + `auth.index` options to be configured to `true`. ## Socket @@ -559,7 +561,7 @@ Revokes a subscription and optionally includes a last update where: safely converted to string using `JSON.stringify()`. Pass `null` to revoke the subscription without sending a last update. - `options` - optional settings: - - `ignoreClosed` - ignore errors if the underlying websocket has been closed. Defaults to `false`. + - `ignoreClosed` - ignore errors if the underlying websocket has been closed. Defaults to `false`. ## Request @@ -580,9 +582,9 @@ Creates a new client object where: - `url` - the WebSocket address to connect to (e.g. `'wss://localhost:8000'`). - `option` - optional configuration object where: - - `ws` - available only when the client is used in node.js and passed as-is to the - [**ws** module](https://www.npmjs.com/package/ws). - - `timeout` - server response timeout in milliseconds. Defaults to `false` (no timeout). + - `ws` - available only when the client is used in node.js and passed as-is to the + [**ws** module](https://www.npmjs.com/package/ws). + - `timeout` - server response timeout in milliseconds. Defaults to `false` (no timeout). ### `client.onError` @@ -601,11 +603,11 @@ where: - `willReconnect` - a boolean indicating if the client will automatically attempt to reconnect. - `log` - an object with the following optional keys: - - `code` - the [RFC6455](https://tools.ietf.org/html/rfc6455#section-7.4.1) status code. - - `explanation` - the [RFC6455](https://tools.ietf.org/html/rfc6455#section-7.4.1) explanation for the - `code`. - - `reason` - a human-readable text explaining the reason for closing. - - `wasClean` - if `false`, the socket was closed abnormally. + - `code` - the [RFC6455](https://tools.ietf.org/html/rfc6455#section-7.4.1) status code. + - `explanation` - the [RFC6455](https://tools.ietf.org/html/rfc6455#section-7.4.1) explanation for the + `code`. + - `reason` - a human-readable text explaining the reason for closing. + - `wasClean` - if `false`, the socket was closed abnormally. ### `client.onHeartbeatTimeout` @@ -626,21 +628,21 @@ the server calls `server.broadcast()` or `socket.send()`. Connects the client to the server where: - `options` - an optional configuration object with the following options: - - `auth` - sets the credentials used to authenticate. when the server is configured for - `'token'` type authentication, the value is the token response received from the - authentication endpoint (called manually by the application). When the server is - configured for `'direct'` type authentication, the value is the credentials expected - by the server for the specified authentication strategy used which typically means an - object with headers (e.g. `{ headers: { authorization: 'Basic am9objpzZWNyZXQ=' } }`). - - `reconnect` - a boolean that indicates whether the client should try to reconnect. Defaults to `true`. - - `delay` - time in milliseconds to wait between each reconnection attempt. The delay time - is cumulative, meaning that if the value is set to `1000` (1 second), the first wait will - be 1 seconds, then 2 seconds, 3 seconds, until the `maxDelay` value is reached and then - `maxDelay` is used. - - `maxDelay` - the maximum delay time in milliseconds between reconnections. - - `retries` - number of reconnection attempts. Defaults to `Infinity` (unlimited). - - `timeout` - socket connection timeout in milliseconds. Defaults to the WebSocket - implementation timeout default. + - `auth` - sets the credentials used to authenticate. when the server is configured for + `'token'` type authentication, the value is the token response received from the + authentication endpoint (called manually by the application). When the server is + configured for `'direct'` type authentication, the value is the credentials expected + by the server for the specified authentication strategy used which typically means an + object with headers (e.g. `{ headers: { authorization: 'Basic am9objpzZWNyZXQ=' } }`). + - `reconnect` - a boolean that indicates whether the client should try to reconnect. Defaults to `true`. + - `delay` - time in milliseconds to wait between each reconnection attempt. The delay time + is cumulative, meaning that if the value is set to `1000` (1 second), the first wait will + be 1 seconds, then 2 seconds, 3 seconds, until the `maxDelay` value is reached and then + `maxDelay` is used. + - `maxDelay` - the maximum delay time in milliseconds between reconnections. + - `retries` - number of reconnection attempts. Defaults to `Infinity` (unlimited). + - `timeout` - socket connection timeout in milliseconds. Defaults to the WebSocket + implementation timeout default. ### `await client.disconnect()` @@ -656,14 +658,14 @@ established. Sends an endpoint request to the server where: - `options` - value can be one of: - - a string with the requested endpoint path or route id (defaults to a GET method). - - an object with the following keys: - - `path` - the requested endpoint path or route id. - - `method` - the requested HTTP method (can also be any method string supported by the - server). Defaults to `'GET'`. - - `headers` - an object where each key is a request header and the value the header - content. Cannot include an Authorization header. Defaults to no headers. - - `payload` - the request payload sent to the server. + - a string with the requested endpoint path or route id (defaults to a GET method). + - an object with the following keys: + - `path` - the requested endpoint path or route id. + - `method` - the requested HTTP method (can also be any method string supported by the + server). Defaults to `'GET'`. + - `headers` - an object where each key is a request header and the value the header + content. Cannot include an Authorization header. Defaults to no headers. + - `payload` - the request payload sent to the server. Rejects with `Error` if the request failed. @@ -689,10 +691,10 @@ Subscribes to a server subscription where: `'/item/5'` or `'/updates'` based on the paths supported by the server). - `handler` - the function used to receive subscription updates using the signature `function(message, flags)` where: - - `message` - the subscription update sent by the server. - - `flags` - an object with the following optional flags: - - `revoked` - set to `true` when the message is the last update from the server due to - a subscription revocation. + - `message` - the subscription update sent by the server. + - `flags` - an object with the following optional flags: + - `revoked` - set to `true` when the message is the last update from the server due to + a subscription revocation. Note that when `subscribe()` is called before the client connects, any server errors will be throw by `connect()`. @@ -740,9 +742,9 @@ the server dropping the connection. When a client method returns or throws an error, the error is decorated with: - `type` - a string indicating the source of the error where: - - `'disconnect'` - the socket disconnected before the request completed. - - `'protocol'` - the client received an invalid message from the server violating the protocol. - - `'server'` - an error response sent from the server. - - `'timeout'` - a timeout event. - - `'user'` - user error (e.g. incorrect use of the API). - - `'ws'` - a socket error. + - `'disconnect'` - the socket disconnected before the request completed. + - `'protocol'` - the client received an invalid message from the server violating the protocol. + - `'server'` - an error response sent from the server. + - `'timeout'` - a timeout event. + - `'user'` - user error (e.g. incorrect use of the API). + - `'ws'` - a socket error. diff --git a/generated/markdown/nes/14/api.md b/generated/markdown/nes/14/api.md index 1b2a5472..e691b9a6 100644 --- a/generated/markdown/nes/14/api.md +++ b/generated/markdown/nes/14/api.md @@ -24,19 +24,19 @@ const Nes = require('@hapi/nes'); const server = new Hapi.Server(); const start = async () => { - await server.register(Nes); - server.route({ - method: 'GET', - path: '/h', - config: { - id: 'hello', - handler: (request, h) => { - return 'world!'; - }, - }, - }); - - await server.start(); + await server.register(Nes); + server.route({ + method: 'GET', + path: '/h', + config: { + id: 'hello', + handler: (request, h) => { + return 'world!'; + }, + }, + }); + + await server.start(); }; start(); @@ -50,9 +50,9 @@ const Nes = require('@hapi/nes'); var client = new Nes.Client('ws://localhost'); const start = async () => { - await client.connect(); - const payload = await client.request('hello'); // Can also request '/h' - // payload -> 'world!' + await client.connect(); + const payload = await client.request('hello'); // Can also request '/h' + // payload -> 'world!' }; start(); @@ -69,11 +69,11 @@ const Nes = require('@hapi/nes'); const server = new Hapi.Server(); const start = async () => { - await server.register(Nes); - server.subscription('/item/{id}'); - await server.start(); - server.publish('/item/5', { id: 5, status: 'complete' }); - server.publish('/item/6', { id: 6, status: 'initial' }); + await server.register(Nes); + server.subscription('/item/{id}'); + await server.start(); + server.publish('/item/5', { id: 5, status: 'complete' }); + server.publish('/item/6', { id: 6, status: 'initial' }); }; start(); @@ -86,13 +86,13 @@ const Nes = require('@hapi/nes'); const client = new Nes.Client('ws://localhost'); const start = async () => { - await client.connect(); - const handler = (update, flags) => { - // update -> { id: 5, status: 'complete' } - // Second publish is not received (doesn't match) - }; + await client.connect(); + const handler = (update, flags) => { + // update -> { id: 5, status: 'complete' } + // Second publish is not received (doesn't match) + }; - client.subscribe('/item/5', handler); + client.subscribe('/item/5', handler); }; start(); @@ -109,9 +109,9 @@ const Nes = require('@hapi/nes'); const server = new Hapi.Server(); const start = async () => { - await server.register(Nes); - await server.start(); - server.broadcast('welcome!'); + await server.register(Nes); + await server.start(); + server.broadcast('welcome!'); }; start(); @@ -124,10 +124,10 @@ const Nes = require('@hapi/nes'); const client = new Nes.Client('ws://localhost'); const start = async () => { - await client.connect(); - client.onUpdate = (update) => { - // update -> 'welcome!' - }; + await client.connect(); + client.onUpdate = (update) => { + // update -> 'welcome!' + }; }; start(); @@ -146,46 +146,47 @@ const Nes = require('@hapi/nes'); const server = new Hapi.Server(); const start = async () => { - await server.register([Basic, Nes]); - - // Set up HTTP Basic authentication - - const users = { - john: { - username: 'john', - password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' - name: 'John Doe', - id: '2133d32a', - }, - }; - - const validate = async (request, username, password) => { - const user = users[username]; - if (!user) { - return { isValid: false }; - } - - const isValid = await Bcrypt.compare(password, user.password); - const credentials = { id: user.id, name: user.name }; - return { isValid, credentials }; - }; - - server.auth.strategy('simple', 'basic', { validate }); - - // Configure route with authentication - - server.route({ - method: 'GET', - path: '/h', - config: { - id: 'hello', - handler: (request, h) => { - return `Hello ${request.auth.credentials.name}`; - }, - }, - }); - - await server.start(); + await server.register([Basic, Nes]); + + // Set up HTTP Basic authentication + + const users = { + john: { + username: 'john', + password: + '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' + name: 'John Doe', + id: '2133d32a', + }, + }; + + const validate = async (request, username, password) => { + const user = users[username]; + if (!user) { + return { isValid: false }; + } + + const isValid = await Bcrypt.compare(password, user.password); + const credentials = { id: user.id, name: user.name }; + return { isValid, credentials }; + }; + + server.auth.strategy('simple', 'basic', { validate }); + + // Configure route with authentication + + server.route({ + method: 'GET', + path: '/h', + config: { + id: 'hello', + handler: (request, h) => { + return `Hello ${request.auth.credentials.name}`; + }, + }, + }); + + await server.start(); }; start(); @@ -198,11 +199,11 @@ const Nes = require('@hapi/nes'); const client = new Nes.Client('ws://localhost'); const start = async () => { - await client.connect({ - auth: { headers: { authorization: 'Basic am9objpzZWNyZXQ=' } }, - }); - const payload = await client.request('hello'); // Can also request '/h' - // payload -> 'Hello John Doe' + await client.connect({ + auth: { headers: { authorization: 'Basic am9objpzZWNyZXQ=' } }, + }); + const payload = await client.request('hello'); // Can also request '/h' + // payload -> 'Hello John Doe' }; start(); @@ -221,43 +222,44 @@ const Nes = require('@hapi/nes'); const server = new Hapi.Server(); const start = async () => { - await server.register([Basic, Nes]); - - // Set up HTTP Basic authentication - - const users = { - john: { - username: 'john', - password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' - name: 'John Doe', - id: '2133d32a', - }, - }; - - const validate = async (request, username, password) => { - const user = users[username]; - if (!user) { - return { isValid: false }; - } - - const isValid = await Bcrypt.compare(password, user.password); - const credentials = { id: user.id, name: user.name }; - return { isValid, credentials }; - }; - - server.auth.strategy('simple', 'basic', 'required', { validate }); - - // Set up subscription - - server.subscription('/items', { - filter: (path, message, options) => { - return message.updater !== options.credentials.username; - }, - }); - - await server.start(); - server.publish('/items', { id: 5, status: 'complete', updater: 'john' }); - server.publish('/items', { id: 6, status: 'initial', updater: 'steve' }); + await server.register([Basic, Nes]); + + // Set up HTTP Basic authentication + + const users = { + john: { + username: 'john', + password: + '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', // 'secret' + name: 'John Doe', + id: '2133d32a', + }, + }; + + const validate = async (request, username, password) => { + const user = users[username]; + if (!user) { + return { isValid: false }; + } + + const isValid = await Bcrypt.compare(password, user.password); + const credentials = { id: user.id, name: user.name }; + return { isValid, credentials }; + }; + + server.auth.strategy('simple', 'basic', 'required', { validate }); + + // Set up subscription + + server.subscription('/items', { + filter: (path, message, options) => { + return message.updater !== options.credentials.username; + }, + }); + + await server.start(); + server.publish('/items', { id: 5, status: 'complete', updater: 'john' }); + server.publish('/items', { id: 6, status: 'initial', updater: 'steve' }); }; start(); @@ -273,15 +275,15 @@ const client = new Nes.Client('ws://localhost'); // Authenticate as 'john' const start = async () => { - await client.connect({ - auth: { headers: { authorization: 'Basic am9objpzZWNyZXQ=' } }, - }); - const handler = (update, flags) => { - // First publish is not received (filtered due to updater key) - // update -> { id: 6, status: 'initial', updater: 'steve' } - }; - - client.subscribe('/items', handler); + await client.connect({ + auth: { headers: { authorization: 'Basic am9objpzZWNyZXQ=' } }, + }); + const handler = (update, flags) => { + // First publish is not received (filtered due to updater key) + // update -> { id: 6, status: 'initial', updater: 'steve' } + }; + + client.subscribe('/items', handler); }; start(); @@ -300,93 +302,93 @@ method. The plugin accepts the following optional registration options: - `onConnection` - a function with the signature `function(socket)` invoked for each incoming client connection where: - - `socket` - the [`Socket`](#socket) object of the incoming connection. + - `socket` - the [`Socket`](#socket) object of the incoming connection. - `onDisconnection` - a function with the signature `function(socket)` invoked for each incoming client connection on disconnect where: - - `socket` - the [`Socket`](#socket) object of the connection. + - `socket` - the [`Socket`](#socket) object of the connection. - `onMessage` - a function with the signature `async function(socket, message)` used to receive custom client messages (when the client calls [`client.message()`](#clientmessagedata)) where: - - `socket` - the [`Socket`](#socket) object of the message source. - - `message` - the message sent by the client. - - the function may return a response to the client. + - `socket` - the [`Socket`](#socket) object of the message source. + - `message` - the message sent by the client. + - the function may return a response to the client. - `auth` - optional plugin authentication options with the following supported values: - - `false` - no client authentication supported. - - an object with the following optional keys: - - `type` - the type of authentication flow supported by the server. Each type has a very different - security profile. The following types are supported: - - `'direct'` - the plugin configures an internal authentication endpoint which is only called - internally by the plugin when the client provides its authentication credentials (or by - passing an `auth` option to [`client.connect()`](#await-clientconnectoptions)). The - endpoint returns a copy of the credentials object (along with any artifacts) to the plugin - which is then used for all subsequent client requests and subscriptions. This type requires - exposing the underlying credentials to the application. Note that if the authentication scheme - uses the HTTP request method (e.g. [hawk](https://github.com/hueniverse/hawk) or - [oz](https://github.com/hueniverse/oz)) you need to use `'auth'` as the value (and - not `'GET'`). This is the default value. - - `'cookie'` - the plugin configures a public authentication endpoint which must be called - by the client application manually before it calls [`client.connect()`](#await-clientconnectoptions). - When the endpoint is called with valid credentials, it sets a cookie with the provided - `name` which the browser then transmits back to the server when the WebSocket connection - is made. This type removes the need to expose the authentication credentials to the - JavaScript layer but requires an additional round trip before establishing a client - connection. - - `'token'` - the plugin configures a public authentication endpoint which must be called - by the client application manually before it calls [`client.connect()`](#await-clientconnectoptions). - When the endpoint is called with valid credentials, it returns an encrypted authentication - token which the client can use to authenticate the connection by passing an `auth` option - to [`client.connect()`](#await-clientconnectoptions) with the token. This type is useful - when the client-side application needs to manage its credentials differently than relying - on cookies (e.g. non-browser clients). - - `endpoint` - the HTTP path of the authentication endpoint. Note that even though the `'direct'` - type does not exposes the endpoint, it is still created internally and registered using the - provided path. Change it only if the default path creates a conflict. Defaults to `'/nes/auth'`. - - `id` - the authentication endpoint identifier. Change it only if the default id creates a conflict. - Defaults to `nes.auth`. - - `route` - the **hapi** route `config.auth` settings. The authentication endpoint must be - configured with at least one authentication strategy which the client is going to use to - authenticate. The `route` value must be set to a valid value supported by the **hapi** route - `auth` configuration. Defaults to the default authentication strategy if one is present, - otherwise no authentication will be possible (clients will fail to authenticate). - - `password` - the password used by the [**iron**](https://github.com/hueniverse/iron) module - to encrypt the cookie or token values. If no password is provided, one is automatically - generated. However, the password will change every time the process is restarted (as well - as generate different results on a distributed system). It is recommended that a password - is manually set and managed by the application. - - `iron` - the settings used by the [**iron**](https://github.com/hueniverse/iron) module. - Defaults to the **iron** defaults. - - `cookie` - the cookie name when using type `'cookie'`. Defaults to `'nes'`. - - `isSecure` - the cookie secure flag when using type `'cookie'`. Defaults to `true`. - - `isHttpOnly` - the cookie HTTP only flag when using type `'cookie'`. Defaults to `true`. - - `path` - the cookie path when using type `'cookie'`. Defaults to `'/'`. - - `domain` - the cookie domain when using type `'cookie'`. Defaults to no domain. - - `ttl` - the cookie expiration milliseconds when using type `'cookie'`. Defaults to current - session only. - - `index` - if `true`, authenticated socket with `user` property in `credentials` are mapped - for usage in [`server.broadcast()`](#serverbroadcastmessage-options) calls. Defaults to `false`. - - `timeout` - number of milliseconds after which a new connection is disconnected if authentication - is required but the connection has not yet sent a hello message. No timeout if set to `false`. - Defaults to `5000` (5 seconds). - - `maxConnectionsPerUser` - if specified, limits authenticated users to a maximum number of - client connections. Requires the `index` option enabled. Defaults to `false`. - - `minAuthVerifyInterval` - if specified, waits at least the specificed number of milliseconds - between calls to [`await server.auth.verify()`](https://hapijs.com/api#-await-serverauthverifyrequest) - to check if credentials are still valid. Cannot be shorter than `heartbeat.interval`. - Defaults to `heartbeat.interval` or `15000` if `heartbeat` is disabled. + - `false` - no client authentication supported. + - an object with the following optional keys: + - `type` - the type of authentication flow supported by the server. Each type has a very different + security profile. The following types are supported: + - `'direct'` - the plugin configures an internal authentication endpoint which is only called + internally by the plugin when the client provides its authentication credentials (or by + passing an `auth` option to [`client.connect()`](#await-clientconnectoptions)). The + endpoint returns a copy of the credentials object (along with any artifacts) to the plugin + which is then used for all subsequent client requests and subscriptions. This type requires + exposing the underlying credentials to the application. Note that if the authentication scheme + uses the HTTP request method (e.g. [hawk](https://github.com/hueniverse/hawk) or + [oz](https://github.com/hueniverse/oz)) you need to use `'auth'` as the value (and + not `'GET'`). This is the default value. + - `'cookie'` - the plugin configures a public authentication endpoint which must be called + by the client application manually before it calls [`client.connect()`](#await-clientconnectoptions). + When the endpoint is called with valid credentials, it sets a cookie with the provided + `name` which the browser then transmits back to the server when the WebSocket connection + is made. This type removes the need to expose the authentication credentials to the + JavaScript layer but requires an additional round trip before establishing a client + connection. + - `'token'` - the plugin configures a public authentication endpoint which must be called + by the client application manually before it calls [`client.connect()`](#await-clientconnectoptions). + When the endpoint is called with valid credentials, it returns an encrypted authentication + token which the client can use to authenticate the connection by passing an `auth` option + to [`client.connect()`](#await-clientconnectoptions) with the token. This type is useful + when the client-side application needs to manage its credentials differently than relying + on cookies (e.g. non-browser clients). + - `endpoint` - the HTTP path of the authentication endpoint. Note that even though the `'direct'` + type does not exposes the endpoint, it is still created internally and registered using the + provided path. Change it only if the default path creates a conflict. Defaults to `'/nes/auth'`. + - `id` - the authentication endpoint identifier. Change it only if the default id creates a conflict. + Defaults to `nes.auth`. + - `route` - the **hapi** route `config.auth` settings. The authentication endpoint must be + configured with at least one authentication strategy which the client is going to use to + authenticate. The `route` value must be set to a valid value supported by the **hapi** route + `auth` configuration. Defaults to the default authentication strategy if one is present, + otherwise no authentication will be possible (clients will fail to authenticate). + - `password` - the password used by the [**iron**](https://github.com/hueniverse/iron) module + to encrypt the cookie or token values. If no password is provided, one is automatically + generated. However, the password will change every time the process is restarted (as well + as generate different results on a distributed system). It is recommended that a password + is manually set and managed by the application. + - `iron` - the settings used by the [**iron**](https://github.com/hueniverse/iron) module. + Defaults to the **iron** defaults. + - `cookie` - the cookie name when using type `'cookie'`. Defaults to `'nes'`. + - `isSecure` - the cookie secure flag when using type `'cookie'`. Defaults to `true`. + - `isHttpOnly` - the cookie HTTP only flag when using type `'cookie'`. Defaults to `true`. + - `path` - the cookie path when using type `'cookie'`. Defaults to `'/'`. + - `domain` - the cookie domain when using type `'cookie'`. Defaults to no domain. + - `ttl` - the cookie expiration milliseconds when using type `'cookie'`. Defaults to current + session only. + - `index` - if `true`, authenticated socket with `user` property in `credentials` are mapped + for usage in [`server.broadcast()`](#serverbroadcastmessage-options) calls. Defaults to `false`. + - `timeout` - number of milliseconds after which a new connection is disconnected if authentication + is required but the connection has not yet sent a hello message. No timeout if set to `false`. + Defaults to `5000` (5 seconds). + - `maxConnectionsPerUser` - if specified, limits authenticated users to a maximum number of + client connections. Requires the `index` option enabled. Defaults to `false`. + - `minAuthVerifyInterval` - if specified, waits at least the specificed number of milliseconds + between calls to [`await server.auth.verify()`](https://hapijs.com/api#-await-serverauthverifyrequest) + to check if credentials are still valid. Cannot be shorter than `heartbeat.interval`. + Defaults to `heartbeat.interval` or `15000` if `heartbeat` is disabled. - `headers` - an optional array of header field names to include in server responses to the client. If set to `'*'` (without an array), allows all headers. Defaults to `null` (no headers). - `payload` - optional message payload settings where: - - `maxChunkChars` - the maximum number of characters (after the full protocol object is converted - to a string using `JSON.stringify()`) allowed in a single WebSocket message. This is important - when using the protocol over a slow network (e.g. mobile) with large updates as the transmission - time can exceed the timeout or heartbeat limits which will cause the client to disconnect. - Defaults to `false` (no limit). + - `maxChunkChars` - the maximum number of characters (after the full protocol object is converted + to a string using `JSON.stringify()`) allowed in a single WebSocket message. This is important + when using the protocol over a slow network (e.g. mobile) with large updates as the transmission + time can exceed the timeout or heartbeat limits which will cause the client to disconnect. + Defaults to `false` (no limit). - `heartbeat` - configures connection keep-alive settings where value can be: - - `false` - no heartbeats. - - an object with: - - `interval` - time interval between heartbeat messages in milliseconds. Defaults to `15000` - (15 seconds). - - `timeout` - timeout in milliseconds after a heartbeat is sent to the client and before the - client is considered disconnected by the server. Defaults to `5000` (5 seconds). + - `false` - no heartbeats. + - an object with: + - `interval` - time interval between heartbeat messages in milliseconds. Defaults to `15000` + (15 seconds). + - `timeout` - timeout in milliseconds after a heartbeat is sent to the client and before the + client is considered disconnected by the server. Defaults to `5000` (5 seconds). - `maxConnections` - if specified, limits the number of simultaneous client connections. Defaults to `false`. - `origin` - an origin string or an array of origin strings incoming client requests must match for @@ -404,9 +406,9 @@ Sends a message to all connected clients where: - `message` - the message sent to the clients. Can be any type which can be safely converted to string using `JSON.stringify()`. - `options` - optional object with the following: - - `user` - optional user filter. When provided, the message will be sent only to authenticated - sockets with `credentials.user` equal to `user`. Requires the `auth.index` options to be - configured to `true`. + - `user` - optional user filter. When provided, the message will be sent only to authenticated + sockets with `credentials.user` equal to `user`. Requires the `auth.index` options to be + configured to `true`. Note that in a multi server deployment, only the client connected to the current server will receive the message. @@ -418,52 +420,52 @@ Declares a subscription path client can subscribe to where: - `path` - an HTTP-like path. The path must begin with the `'/'` character. The path may contain path parameters as supported by the **hapi** route path parser. - `options` - an optional object where: - - `filter` - a publishing filter function for making per-client connection decisions about which - matching publication update should be sent to which client. The function uses the signature - `async function(path, message, options)` where: - - `path` - the path of the published update. The path is provided in case the subscription - contains path parameters. - - `message` - the message being published. - - `options` - additional information about the subscription and client: - - `socket` - the current socket being published to. - - `credentials` - the client credentials if authenticated. - - `params` - the parameters parsed from the publish message path if the subscription - path contains parameters. - - `internal` - the `internal` options data passed to the publish call, if defined. - - the function must return a value of (or a promise that resolves into): - - `true` - to proceed sending the message. - - `false` - to skip sending the message. - - `{ override }` - an override `message` to send to this `socket` instead of the - published one. Note that if you want to modify `message`, you must clone it first or - the changes will apply to all other sockets. - - `auth` - the subscription authentication options with the following supported values: - - `false` - no authentication required to subscribe. - - a configuration object with the following optional keys: - - `mode` - same as the **hapi** route auth modes: - - `'required'` - authentication is required. This is the default value. - - `'optional'` - authentication is optional. - - `scope` - a string or array of string of authentication scope as supported by the - **hapi** route authenticate configuration. - - `entity` - the required credentials type as supported by the **hapi** route - authentication configuration: - - `'user'` - - `'app'` - - `'any'` - - `index` - if `true`, authenticated socket with `user` property in `credentials` are - mapped for usage in [`server.publish()`](#await-socketpublishpath-message) calls. - Defaults to `false`. - - `onSubscribe` - a method called when a client subscribes to this subscription endpoint using - the signature `async function(socket, path, params)` where: - - `socket` - the [`Socket`](#socket) object of the incoming connection. - - `path` - the path the client subscribed to - - `params` - the parameters parsed from the subscription request path if the subscription - path definition contains parameters. - - `onUnsubscribe` - a method called when a client unsubscribes from this subscription endpoint - using the signature `async function(socket, path, params)` where: - - `socket` - the [`Socket`](#socket) object of the incoming connection. - - `path` - Path of the unsubscribed route. - - `params` - the parameters parsed from the subscription request path if the subscription - path definition contains parameters. + - `filter` - a publishing filter function for making per-client connection decisions about which + matching publication update should be sent to which client. The function uses the signature + `async function(path, message, options)` where: + - `path` - the path of the published update. The path is provided in case the subscription + contains path parameters. + - `message` - the message being published. + - `options` - additional information about the subscription and client: + - `socket` - the current socket being published to. + - `credentials` - the client credentials if authenticated. + - `params` - the parameters parsed from the publish message path if the subscription + path contains parameters. + - `internal` - the `internal` options data passed to the publish call, if defined. + - the function must return a value of (or a promise that resolves into): + - `true` - to proceed sending the message. + - `false` - to skip sending the message. + - `{ override }` - an override `message` to send to this `socket` instead of the + published one. Note that if you want to modify `message`, you must clone it first or + the changes will apply to all other sockets. + - `auth` - the subscription authentication options with the following supported values: + - `false` - no authentication required to subscribe. + - a configuration object with the following optional keys: + - `mode` - same as the **hapi** route auth modes: + - `'required'` - authentication is required. This is the default value. + - `'optional'` - authentication is optional. + - `scope` - a string or array of string of authentication scope as supported by the + **hapi** route authenticate configuration. + - `entity` - the required credentials type as supported by the **hapi** route + authentication configuration: + - `'user'` + - `'app'` + - `'any'` + - `index` - if `true`, authenticated socket with `user` property in `credentials` are + mapped for usage in [`server.publish()`](#await-socketpublishpath-message) calls. + Defaults to `false`. + - `onSubscribe` - a method called when a client subscribes to this subscription endpoint using + the signature `async function(socket, path, params)` where: + - `socket` - the [`Socket`](#socket) object of the incoming connection. + - `path` - the path the client subscribed to + - `params` - the parameters parsed from the subscription request path if the subscription + path definition contains parameters. + - `onUnsubscribe` - a method called when a client unsubscribes from this subscription endpoint + using the signature `async function(socket, path, params)` where: + - `socket` - the [`Socket`](#socket) object of the incoming connection. + - `path` - Path of the unsubscribed route. + - `params` - the parameters parsed from the subscription request path if the subscription + path definition contains parameters. ### `await server.publish(path, message, [options])` @@ -477,11 +479,11 @@ Sends a message to all the subscribed clients where: - `message` - the message sent to the clients. Can be any type which can be safely converted to string using `JSON.stringify()`. - `options` - optional object that may include - - `internal` - Internal data that is passed to `filter` and may be used to filter messages - on data that is not sent to the client. - - `user` - optional user filter. When provided, the message will be sent only to authenticated - sockets with `credentials.user` equal to `user`. Requires the subscription `auth.index` - options to be configured to `true`. + - `internal` - Internal data that is passed to `filter` and may be used to filter messages + on data that is not sent to the client. + - `user` - optional user filter. When provided, the message will be sent only to authenticated + sockets with `credentials.user` equal to `user`. Requires the subscription `auth.index` + options to be configured to `true`. ### `await server.eachSocket(each, [options])` @@ -490,11 +492,11 @@ a given subscription. This operation is synchronous. - `each` - Iteration method in the form `async function(socket)`. - `options` - Optional options object - - `subscription` - When set to a string path, limits the results to sockets that are - subscribed to that path. - - `user` - optional user filter. When provided, the `each` method will be invoked with - authenticated sockets with `credentials.user` equal to `user`. Requires the subscription - `auth.index` options to be configured to `true`. + - `subscription` - When set to a string path, limits the results to sockets that are + subscribed to that path. + - `user` - optional user filter. When provided, the `each` method will be invoked with + authenticated sockets with `credentials.user` equal to `user`. Requires the subscription + `auth.index` options to be configured to `true`. ## Socket @@ -559,7 +561,7 @@ Revokes a subscription and optionally includes a last update where: safely converted to string using `JSON.stringify()`. Pass `null` to revoke the subscription without sending a last update. - `options` - optional settings: - - `ignoreClosed` - ignore errors if the underlying websocket has been closed. Defaults to `false`. + - `ignoreClosed` - ignore errors if the underlying websocket has been closed. Defaults to `false`. ## Request @@ -580,9 +582,9 @@ Creates a new client object where: - `url` - the WebSocket address to connect to (e.g. `'wss://localhost:8000'`). - `option` - optional configuration object where: - - `ws` - available only when the client is used in node.js and passed as-is to the - [**ws** module](https://www.npmjs.com/package/ws). - - `timeout` - server response timeout in milliseconds. Defaults to `false` (no timeout). + - `ws` - available only when the client is used in node.js and passed as-is to the + [**ws** module](https://www.npmjs.com/package/ws). + - `timeout` - server response timeout in milliseconds. Defaults to `false` (no timeout). ### `client.onError` @@ -601,11 +603,11 @@ where: - `willReconnect` - a boolean indicating if the client will automatically attempt to reconnect. - `log` - an object with the following optional keys: - - `code` - the [RFC6455](https://tools.ietf.org/html/rfc6455#section-7.4.1) status code. - - `explanation` - the [RFC6455](https://tools.ietf.org/html/rfc6455#section-7.4.1) explanation for the - `code`. - - `reason` - a human-readable text explaining the reason for closing. - - `wasClean` - if `false`, the socket was closed abnormally. + - `code` - the [RFC6455](https://tools.ietf.org/html/rfc6455#section-7.4.1) status code. + - `explanation` - the [RFC6455](https://tools.ietf.org/html/rfc6455#section-7.4.1) explanation for the + `code`. + - `reason` - a human-readable text explaining the reason for closing. + - `wasClean` - if `false`, the socket was closed abnormally. ### `client.onHeartbeatTimeout` @@ -626,21 +628,21 @@ the server calls `server.broadcast()` or `socket.send()`. Connects the client to the server where: - `options` - an optional configuration object with the following options: - - `auth` - sets the credentials used to authenticate. when the server is configured for - `'token'` type authentication, the value is the token response received from the - authentication endpoint (called manually by the application). When the server is - configured for `'direct'` type authentication, the value is the credentials expected - by the server for the specified authentication strategy used which typically means an - object with headers (e.g. `{ headers: { authorization: 'Basic am9objpzZWNyZXQ=' } }`). - - `reconnect` - a boolean that indicates whether the client should try to reconnect. Defaults to `true`. - - `delay` - time in milliseconds to wait between each reconnection attempt. The delay time - is cumulative, meaning that if the value is set to `1000` (1 second), the first wait will - be 1 seconds, then 2 seconds, 3 seconds, until the `maxDelay` value is reached and then - `maxDelay` is used. - - `maxDelay` - the maximum delay time in milliseconds between reconnections. - - `retries` - number of reconnection attempts. Defaults to `Infinity` (unlimited). - - `timeout` - socket connection timeout in milliseconds. Defaults to the WebSocket - implementation timeout default. + - `auth` - sets the credentials used to authenticate. when the server is configured for + `'token'` type authentication, the value is the token response received from the + authentication endpoint (called manually by the application). When the server is + configured for `'direct'` type authentication, the value is the credentials expected + by the server for the specified authentication strategy used which typically means an + object with headers (e.g. `{ headers: { authorization: 'Basic am9objpzZWNyZXQ=' } }`). + - `reconnect` - a boolean that indicates whether the client should try to reconnect. Defaults to `true`. + - `delay` - time in milliseconds to wait between each reconnection attempt. The delay time + is cumulative, meaning that if the value is set to `1000` (1 second), the first wait will + be 1 seconds, then 2 seconds, 3 seconds, until the `maxDelay` value is reached and then + `maxDelay` is used. + - `maxDelay` - the maximum delay time in milliseconds between reconnections. + - `retries` - number of reconnection attempts. Defaults to `Infinity` (unlimited). + - `timeout` - socket connection timeout in milliseconds. Defaults to the WebSocket + implementation timeout default. ### `await client.disconnect()` @@ -656,14 +658,14 @@ established. Sends an endpoint request to the server where: - `options` - value can be one of: - - a string with the requested endpoint path or route id (defaults to a GET method). - - an object with the following keys: - - `path` - the requested endpoint path or route id. - - `method` - the requested HTTP method (can also be any method string supported by the - server). Defaults to `'GET'`. - - `headers` - an object where each key is a request header and the value the header - content. Cannot include an Authorization header. Defaults to no headers. - - `payload` - the request payload sent to the server. + - a string with the requested endpoint path or route id (defaults to a GET method). + - an object with the following keys: + - `path` - the requested endpoint path or route id. + - `method` - the requested HTTP method (can also be any method string supported by the + server). Defaults to `'GET'`. + - `headers` - an object where each key is a request header and the value the header + content. Cannot include an Authorization header. Defaults to no headers. + - `payload` - the request payload sent to the server. Rejects with `Error` if the request failed. @@ -689,10 +691,10 @@ Subscribes to a server subscription where: `'/item/5'` or `'/updates'` based on the paths supported by the server). - `handler` - the function used to receive subscription updates using the signature `function(message, flags)` where: - - `message` - the subscription update sent by the server. - - `flags` - an object with the following optional flags: - - `revoked` - set to `true` when the message is the last update from the server due to - a subscription revocation. + - `message` - the subscription update sent by the server. + - `flags` - an object with the following optional flags: + - `revoked` - set to `true` when the message is the last update from the server due to + a subscription revocation. Note that when `subscribe()` is called before the client connects, any server errors will be throw by `connect()`. @@ -740,9 +742,9 @@ the server dropping the connection. When a client method returns or throws an error, the error is decorated with: - `type` - a string indicating the source of the error where: - - `'disconnect'` - the socket disconnected before the request completed. - - `'protocol'` - the client received an invalid message from the server violating the protocol. - - `'server'` - an error response sent from the server. - - `'timeout'` - a timeout event. - - `'user'` - user error (e.g. incorrect use of the API). - - `'ws'` - a socket error. + - `'disconnect'` - the socket disconnected before the request completed. + - `'protocol'` - the client received an invalid message from the server violating the protocol. + - `'server'` - an error response sent from the server. + - `'timeout'` - a timeout event. + - `'user'` - user error (e.g. incorrect use of the API). + - `'ws'` - a socket error. diff --git a/generated/markdown/oppsy/3/api.md b/generated/markdown/oppsy/3/api.md index 22a206de..12a609e6 100644 --- a/generated/markdown/oppsy/3/api.md +++ b/generated/markdown/oppsy/3/api.md @@ -7,7 +7,7 @@ const Oppsy = require('@hapi/oppsy'); const server = new Hapi.Server(); const oppsy = new Oppsy(server); oppsy.on('ops', (data) => { - console.log(data); + console.log(data); }); await server.start(); @@ -23,8 +23,8 @@ Creates a new Oppsy object. - `server` - the hapi server to collect information about. - `[config]` - optional configuration object - - `httpAgents` - the list of httpAgents to report socket information about. Can be a single http.Agent or an array of agents objects. Defaults to Http.globalAgent. - - `httpsAgents` - the list of httpsAgents to report socket information about. Can be a single https.Agent or an array of agents. Defaults to Https.globalAgent. + - `httpAgents` - the list of httpAgents to report socket information about. Can be a single http.Agent or an array of agents objects. Defaults to Http.globalAgent. + - `httpsAgents` - the list of httpsAgents to report socket information about. Can be a single https.Agent or an array of agents. Defaults to Https.globalAgent. The oppsy object is an EventEmitter so it exposes the same API(`.on` and `.emit`) as the Node EventEmitter object. After it is started, it emits an "ops" event after a set interval with the collected ops information as the event payload. diff --git a/generated/markdown/oxc-plugin/1/api.md b/generated/markdown/oxc-plugin/1/api.md new file mode 100644 index 00000000..5a339302 --- /dev/null +++ b/generated/markdown/oxc-plugin/1/api.md @@ -0,0 +1,122 @@ +## Configurations + +### `@hapi/oxc-plugin/oxlint` + +The oxlint configuration containing hapi style guide rules and config. To use in your project, add +[`@hapi/oxc-plugin`](https://github.com/hapijs/oxc-plugin) to your `package.json`, then in your `oxlint.config.ts` add: + +```ts +import { defineConfig } from 'oxlint'; +import DefaultOxlintConfig from '@hapi/oxc-plugin/oxlint'; + +export default defineConfig({ + extends: [DefaultOxlintConfig], + env: { + ...DefaultOxlintConfig.env, + }, +}); +``` + +### `@hapi/oxc-plugin/oxfmt` + +The [oxfmt](https://oxc.rs/docs/guide/usage/formatter/oxfmt.html) configuration containing hapi style guide formatting rules. To use in your project, add +[`@hapi/oxc-plugin`](https://github.com/hapijs/oxc-plugin) to your `package.json`, then in your `oxfmt.config.ts` add: + +```ts +import { defineConfig } from 'oxfmt'; +import DefaultOxfmtConfig from '@hapi/oxc-plugin/oxfmt'; + +export default defineConfig({ + ...DefaultOxfmtConfig, +}); +``` + +## Rules + +This plugin includes the following Oxlint rules: + +### capitalize-modules + +Enforces capitalization of imported module variables. + +#### `global-scope-only` + +If the string `'global-scope-only'` is passed as the first option to this rule, +then it will only be enforced on assignments in the module's top level scope. + +### for-loop + +Enforces `for` loop iterator variable rules and restricts loop nesting depth. + +This rule enforces the following: + +- Restrict iterator variable names. `for` loop iterator variables should be named `i`. Nested loops should use the variables `j`, `k`, and so on. +- Restrict loop nesting. You can restrict the maximum nesting of `for` loops. By default, this limit is three. +- Prevent postfix increment and decrement operators. The hapi style guide does not allow postfix increment and decrement operators in `for` loop updates. The prefix version of these operators should be used instead. +- Single variable declaration in initialization section. A single `var i = 0;` is allowed in the initialization section. This only applies to variable declarations, not assignments to existing variables. This means that `for (i = 0, j = 0)` is allowed if `i` and `j` are existing variables. Variable declarations involving destructuring are not allowed. + +#### Rule options + +This rule can be configured by providing a single options object. The object supports the following keys. + +##### `maxDepth` + +A number representing the maximum allowed nesting of `for` loops. Defaults to three. + +##### `startIterator` + +The first variable iterator name to use. This defaults to `'i'`. + +### no-var + +Enforces the usage of var declarations only in try-catch scope. + +### no-arrowception + +Prevents arrow functions that implicitly create additional arrow functions. + +This rule prevents the pattern () => () => () => ...;. + +Functions can still be returned by arrow functions whose bodies use curly braces and an explicit return. + +This rule does not accept any configuration options. + +## Vitest plugin + +This plugin also exposes a [Vitest](https://vitest.dev) plugin at `@hapi/oxc-plugin/vitest`. It runs +the oxlint and oxfmt checks as a dedicated test project, so linting and formatting violations surface +as failing tests in your existing test run. + +The Vitest plugin requires `vitest` >= 4 in your project. It is an optional part of this package, so `vitest` +is not declared as a peer dependency. + +To use it, add [`@hapi/oxc-plugin`](https://github.com/hapijs/oxc-plugin) to your `package.json`, then +in your `vitest.config.js` add: + +```js +import { defineConfig } from 'vitest/config'; +import oxc from '@hapi/oxc-plugin/vitest'; + +export default defineConfig({ + plugins: [oxc()], +}); +``` + +When run, the plugin checks for an existing oxlint or oxfmt configuration in the working directory. If +none is found, it falls back to the configurations shipped by this plugin. + +### Options + +The plugin accepts a single options object with the following keys. + +#### `oxlint` + +A boolean controlling whether the oxlint check runs. Defaults to `true`. + +#### `oxfmt` + +A boolean controlling whether the oxfmt check runs. Defaults to `true`. + +#### `cwd` + +The working directory the checks run against. Defaults to `process.cwd()`. diff --git a/generated/markdown/oxc-plugin/changelog.md b/generated/markdown/oxc-plugin/changelog.md new file mode 100644 index 00000000..41f66c59 --- /dev/null +++ b/generated/markdown/oxc-plugin/changelog.md @@ -0,0 +1,9 @@ +## Version 1 {#v1} + +### [1.0.1](https://github.com/hapijs/oxc-plugin/milestone/2) {#1.0.1} + +- [#4](https://github.com/hapijs/oxc-plugin/pull/4) fix: vitest's oxc plugin default exclude + +### [1.0.0](https://github.com/hapijs/oxc-plugin/milestone/1) {#1.0.0} + +- [#3](https://github.com/hapijs/oxc-plugin/pull/3) feat: initial implementation of oxc rules diff --git a/generated/markdown/podium/5/api.md b/generated/markdown/podium/5/api.md index 931bb9e7..186f101d 100644 --- a/generated/markdown/podium/5/api.md +++ b/generated/markdown/podium/5/api.md @@ -17,46 +17,46 @@ const emitter = new Podium.Podium(); const context = { count: 0 }; emitter.registerEvent({ - name: 'event', - channels: ['ch1', 'ch2'], + name: 'event', + channels: ['ch1', 'ch2'], }); const handler1 = function () { - ++this.count; - console.log(this.count); + ++this.count; + console.log(this.count); }; const handler2 = function () { - this.count = this.count + 2; - console.log(this.count); + this.count = this.count + 2; + console.log(this.count); }; emitter.on( - { - name: 'event', - channels: ['ch1'], - }, - handler1, - context, + { + name: 'event', + channels: ['ch1'], + }, + handler1, + context, ); emitter.on( - { - name: 'event', - channels: ['ch2'], - }, - handler2, - context, + { + name: 'event', + channels: ['ch2'], + }, + handler2, + context, ); emitter.emit({ - name: 'event', - channel: 'ch1', + name: 'event', + channel: 'ch1', }); emitter.emit({ - name: 'event', - channel: 'ch2', + name: 'event', + channel: 'ch2', }); emitter.hasListeners('event'); // true @@ -93,49 +93,49 @@ const Podium = require('@hapi/podium'); const podiumObject = new Podium.Podium(); podiumObject.registerEvent([ - { - name: 'event1', - channels: ['ch1', 'ch2', 'ch3', 'ch4'], - }, - { - name: 'event2', - channels: ['ch1', 'ch2'], - }, + { + name: 'event1', + channels: ['ch1', 'ch2', 'ch3', 'ch4'], + }, + { + name: 'event2', + channels: ['ch1', 'ch2'], + }, ]); const listener1 = (data) => { - console.log('listener1 called', data); + console.log('listener1 called', data); }; const listener2 = (data) => { - console.log('listener2 called', data); + console.log('listener2 called', data); }; podiumObject.on( - { - name: 'event1', - channels: ['ch1'], - }, - listener1, + { + name: 'event1', + channels: ['ch1'], + }, + listener1, ); podiumObject.on( - { - name: 'event1', - channels: ['ch3', 'ch4'], - }, - listener2, + { + name: 'event1', + channels: ['ch3', 'ch4'], + }, + listener2, ); podiumObject.on({ name: 'event1', channels: 'ch2' }, (data) => { - // autonomous function + // autonomous function - console.log('auto', data); + console.log('auto', data); }); var arr = [0, 1, 2, 3, 4, 4, 5]; podiumObject.emit({ - name: 'event1', - channel: 'ch3', + name: 'event1', + channel: 'ch3', }); ``` @@ -146,40 +146,40 @@ const Podium = require('@hapi/podium'); const podiumObject = new Podium.Podium(); podiumObject.registerEvent([ - { - name: 'event1', - channels: ['ch1', 'ch2'], - clone: true, - }, - { - name: 'event2', - channels: ['ch1', 'ch2'], - }, + { + name: 'event1', + channels: ['ch1', 'ch2'], + clone: true, + }, + { + name: 'event2', + channels: ['ch1', 'ch2'], + }, ]); const listener1 = (data) => { - data[0] = 55; - console.log('listener1 called', data); + data[0] = 55; + console.log('listener1 called', data); }; const listener2 = (data) => { - data[0] = 100; - console.log('listener2 called', data); + data[0] = 100; + console.log('listener2 called', data); }; podiumObject.on( - { - name: 'event1', - channels: ['ch1'], - }, - listener1, + { + name: 'event1', + channels: ['ch1'], + }, + listener1, ); podiumObject.on( - { - name: 'event2', - channels: ['ch1'], - }, - listener2, + { + name: 'event2', + channels: ['ch1'], + }, + listener2, ); var arr = [0, 1, 2, 3, 4, 4, 5]; @@ -187,15 +187,15 @@ var arr = [0, 1, 2, 3, 4, 4, 5]; console.log('initially: ', arr); podiumObject.emit({ - name: 'event1', - channel: 'ch1', + name: 'event1', + channel: 'ch1', }); console.log('after event1, ch1: ', arr); podiumObject.emit({ - name: 'event2', - channel: 'ch1', + name: 'event2', + channel: 'ch1', }); console.log('after event2, ch1: ', arr); @@ -208,40 +208,40 @@ const Podium = require('@hapi/podium'); const podiumObject = new Podium.Podium(); podiumObject.registerEvent([ - { - name: 'event1', - channels: ['ch1', 'ch2'], - spread: true, - }, - { - name: 'event2', - channels: ['ch1', 'ch2'], - }, + { + name: 'event1', + channels: ['ch1', 'ch2'], + spread: true, + }, + { + name: 'event2', + channels: ['ch1', 'ch2'], + }, ]); const listener1 = (data1, data2, data3, data4) => { - console.log('listener1 called', data1, data2, data3, data4); + console.log('listener1 called', data1, data2, data3, data4); }; const listener2 = (data) => { - data[0] = 100; - console.log('listener2 called', data); + data[0] = 100; + console.log('listener2 called', data); }; podiumObject.on( - { - name: 'event1', - channels: ['ch1'], - }, - listener1, + { + name: 'event1', + channels: ['ch1'], + }, + listener1, ); podiumObject.on( - { - name: 'event2', - channels: ['ch1'], - }, - listener2, + { + name: 'event2', + channels: ['ch1'], + }, + listener2, ); var arr = [0, 1, 2, 3, 4, 4, 5]; @@ -249,15 +249,15 @@ var arr = [0, 1, 2, 3, 4, 4, 5]; console.log('initially: ', arr); podiumObject.emit({ - name: 'event1', - channel: 'ch1', + name: 'event1', + channel: 'ch1', }); console.log('after event1, ch1: ', arr); podiumObject.emit({ - name: 'event2', - channel: 'ch1', + name: 'event2', + channel: 'ch1', }); console.log('after event2, ch1: ', arr); ``` @@ -269,35 +269,35 @@ const Podium = require('@hapi/podium'); const podiumObject = new Podium.Podium(); podiumObject.registerEvent([ - { - name: 'event1', - channels: ['ch1', 'ch2'], - }, + { + name: 'event1', + channels: ['ch1', 'ch2'], + }, ]); podiumObject.registerEvent([ - { - name: 'event1', - channels: ['ch1', 'ch2'], - shared: true, - }, + { + name: 'event1', + channels: ['ch1', 'ch2'], + shared: true, + }, ]); const listener2 = (data) => { - console.log('listener2 called', data); + console.log('listener2 called', data); }; podiumObject.on( - { - name: 'event1', - channels: ['ch1'], - }, - listener2, + { + name: 'event1', + channels: ['ch1'], + }, + listener2, ); var arr = [0, 1, 2, 3, 4, 4, 5]; podiumObject.emit({ - name: 'event1', - channel: 'ch1', + name: 'event1', + channel: 'ch1', }); ``` @@ -310,16 +310,16 @@ const emitter = new Podium.Podium('test'); const updates = []; emitter.on('test', (data) => updates.push({ id: 1, data })); emitter.on({ name: 'test', filter: ['a', 'b'] }, (data) => - updates.push({ id: 2, data }), + updates.push({ id: 2, data }), ); emitter.on({ name: 'test', filter: 'b' }, (data) => - updates.push({ id: 3, data }), + updates.push({ id: 3, data }), ); emitter.on({ name: 'test', filter: ['c'] }, (data) => - updates.push({ id: 4, data }), + updates.push({ id: 4, data }), ); emitter.on({ name: 'test', filter: { tags: ['a', 'b'], all: true } }, (data) => - updates.push({ id: 5, data }), + updates.push({ id: 5, data }), ); emitter.emit({ name: 'test', tags: 'a' }, 1); @@ -329,7 +329,7 @@ emitter.emit({ name: 'test', tags: ['a'] }, 4); emitter.emit({ name: 'test', tags: ['a', 'b'] }, 5); emitter.emit('test', 6, () => { - console.log(updates); + console.log(updates); }); ``` @@ -342,15 +342,15 @@ const podiumObject = new Podium(); podiumObject.registerEvent('event1'); const listener1 = function (data) { - console.log('listener1 called', data); + console.log('listener1 called', data); }; podiumObject.on( - { - name: 'event1', - count: 2, - }, - listener1, + { + name: 'event1', + count: 2, + }, + listener1, ); podiumObject.emit('event1', 'emit 1'); @@ -375,25 +375,25 @@ event activities. The `events` argument can be: - an event **string**. - an event options object with the following optional keys (unless noted otherwise): - - `name` - the event name **string (required)**. - - `channels` - a **string** or **array of strings** specifying the event channels available. **Defaults - to no channel restrictions (event updates can specify a channel or not).** - - `clone` - if `true`, the `data` object passed to [`podium.emit()`](#podiumemitcriteria-data) - is cloned before it is passed to the listeners (unless an override specified by each listener). - **Defaults to `false` (`data` is passed as-is).** - - `spread` - if `true`, the `data` object passed to [`podium.emit()`](#podiumemitcriteria-data) - **must be an array** and the `listener` method is called with each array element passed as a separate - argument (unless an override specified by each listener). **This should only be used when the emitted - data structure is known and predictable.** - **Defaults to `false` (`data` is emitted as a single argument regardless of its type).** - - `tags` - if `true` and the `criteria` object passed to [`podium.emit()`](#podiumemitcriteria-data) - includes `tags`, the tags are mapped to an object (where each tag string is the key and - the value is `true`) which is appended to the arguments list at the end. A configuration override can be set by each - listener. **Defaults to `false`.** - - `shared` - if `true`, the same event `name` can be registered multiple times where the second - registration is ignored. **Note that if the registration config is changed between registrations, - only the first configuration is used. Defaults to `false` (a duplicate registration will throw an - error).** For detailed examples of event parameters [see here](#parameters) + - `name` - the event name **string (required)**. + - `channels` - a **string** or **array of strings** specifying the event channels available. **Defaults + to no channel restrictions (event updates can specify a channel or not).** + - `clone` - if `true`, the `data` object passed to [`podium.emit()`](#podiumemitcriteria-data) + is cloned before it is passed to the listeners (unless an override specified by each listener). + **Defaults to `false` (`data` is passed as-is).** + - `spread` - if `true`, the `data` object passed to [`podium.emit()`](#podiumemitcriteria-data) + **must be an array** and the `listener` method is called with each array element passed as a separate + argument (unless an override specified by each listener). **This should only be used when the emitted + data structure is known and predictable.** + **Defaults to `false` (`data` is emitted as a single argument regardless of its type).** + - `tags` - if `true` and the `criteria` object passed to [`podium.emit()`](#podiumemitcriteria-data) + includes `tags`, the tags are mapped to an object (where each tag string is the key and + the value is `true`) which is appended to the arguments list at the end. A configuration override can be set by each + listener. **Defaults to `false`.** + - `shared` - if `true`, the same event `name` can be registered multiple times where the second + registration is ignored. **Note that if the registration config is changed between registrations, + only the first configuration is used. Defaults to `false` (a duplicate registration will throw an + error).** For detailed examples of event parameters [see here](#parameters) - an array containing any of the above. The `options` argument is an object with the following optional properties: @@ -406,11 +406,11 @@ The `options` argument is an object with the following optional properties: Emits an event update to all the subscribed listeners where: - `criteria` - the event update criteria which must be one of: - - the event name string. - - an object with the following optional keys (unless noted otherwise): - - `name` - the event name string (required). - - `channel` - the channel name string. - - `tags` - a tag string or array of tag strings. + - the event name string. + - an object with the following optional keys (unless noted otherwise): + - `name` - the event name string (required). + - `channel` - the channel name string. + - `tags` - a tag string or array of tag strings. - `data` - the value emitted to the subscribers. ## `await podium.gauge(criteria, data)` @@ -424,35 +424,35 @@ Please note that system errors such as a `TypeError` are not handled specially, Subscribe a handler to an event where: - `criteria` - the subscription criteria which must be one of the following: - - event name **string**. - - a criteria object with the following optional keys (unless noted otherwise): - - `name` - the event name **string (required)**. - - `channels` - a **string** or **array of strings** specifying the event channels to subscribe to. - If the event registration specified a list of allowed channels, the `channels` array must - match the allowed channels. If `channels` are specified, event updates without any - channel designation will not be included in the subscription. **Defaults to no channels - filter.** - - `clone` - if `true`, the `data` object passed to [`podium.emit()`](#podiumemitcriteria-data) - is cloned before it is passed to the `listener` method. **Defaults to the event - registration option (which defaults to `false`).** - - `count` - a positive **integer** indicating the number of times the `listener` can be called - after which the subscription is automatically removed. A count of `1` is the same as - calling `podium.once()`. **Defaults to no limit.** - - `filter` - the event tags (if present) to subscribe to which can be one of the following: - - a tag **string**. - - an **array** of tag **strings**. - - an object with the following: - - `tags` - a tag **string** or **array** of tag **strings**. - - `all` - if `true`, all `tags` must be present for the event update to match the - subscription. **Defaults to `false` (at least one matching tag).** - - `spread` - if `true`, and the `data` object passed to [`podium.emit()`](#podiumemitcriteria-data) - is an **array**, the `listener` method is called with each **array element** passed as a separate - argument. **This should only be used when the emitted data structure is known and predictable. - Defaults to the event registration option (which defaults to `false`).** - - `tags` - if `true` and the `criteria` object passed to [`podium.emit()`](#podiumemitcriteria-data) - includes `tags`, the tags are mapped to an object (where each tag string is the key and - the value is `true`) which is appended to the arguments list at the end. **Defaults to the event registration option - (which defaults to `false`).** + - event name **string**. + - a criteria object with the following optional keys (unless noted otherwise): + - `name` - the event name **string (required)**. + - `channels` - a **string** or **array of strings** specifying the event channels to subscribe to. + If the event registration specified a list of allowed channels, the `channels` array must + match the allowed channels. If `channels` are specified, event updates without any + channel designation will not be included in the subscription. **Defaults to no channels + filter.** + - `clone` - if `true`, the `data` object passed to [`podium.emit()`](#podiumemitcriteria-data) + is cloned before it is passed to the `listener` method. **Defaults to the event + registration option (which defaults to `false`).** + - `count` - a positive **integer** indicating the number of times the `listener` can be called + after which the subscription is automatically removed. A count of `1` is the same as + calling `podium.once()`. **Defaults to no limit.** + - `filter` - the event tags (if present) to subscribe to which can be one of the following: + - a tag **string**. + - an **array** of tag **strings**. + - an object with the following: + - `tags` - a tag **string** or **array** of tag **strings**. + - `all` - if `true`, all `tags` must be present for the event update to match the + subscription. **Defaults to `false` (at least one matching tag).** + - `spread` - if `true`, and the `data` object passed to [`podium.emit()`](#podiumemitcriteria-data) + is an **array**, the `listener` method is called with each **array element** passed as a separate + argument. **This should only be used when the emitted data structure is known and predictable. + Defaults to the event registration option (which defaults to `false`).** + - `tags` - if `true` and the `criteria` object passed to [`podium.emit()`](#podiumemitcriteria-data) + includes `tags`, the tags are mapped to an object (where each tag string is the key and + the value is `true`) which is appended to the arguments list at the end. **Defaults to the event registration option + (which defaults to `false`).** - `listener` - the handler method set to receive event updates. The function signature depends on the `spread`, and `tags` options. - `context` - an **object** that binds to the listener handler. diff --git a/generated/markdown/policies/styleguide.md b/generated/markdown/policies/styleguide.md index 13428328..32e264cd 100644 --- a/generated/markdown/policies/styleguide.md +++ b/generated/markdown/policies/styleguide.md @@ -46,10 +46,10 @@ console.log('even when not required'); - Declare on first use, not at top of function; [self](#prototype-members) being an exception - Do not chain declarations unless inside `for` parentheses (repeat `const` or `let` for each variable in a separate statement) - Give descriptive names - - Do not use similar names or synonyms for different variables unless following a convention - - `for...in` iterators should use descriptive names - - `for` iterators should use single character names - - Use combination of plural for array and singular for each item in the array + - Do not use similar names or synonyms for different variables unless following a convention + - `for...in` iterators should use descriptive names + - `for` iterators should use single character names + - Use combination of plural for array and singular for each item in the array - Use camelCase, never underscores - Avoid using numbered variables (e.g. i1, i2, i3) @@ -62,7 +62,7 @@ console.log('even when not required'); // Right if (condition) { - return; + return; } // Wrong @@ -85,7 +85,7 @@ if (condition) return; const name = 'john'; for (let i = 0; i < name.length; ++i) { - console.log(name[i]); + console.log(name[i]); } // Wrong @@ -95,7 +95,7 @@ const name = 'john'; const len = name.length; for (position = 0; position < len; position++) { - console.log(name[position]); + console.log(name[position]); } ``` @@ -105,8 +105,8 @@ for (position = 0; position < len; position++) { ```javascript Example.prototype.method = function () { - this.public = 'external'; - this._private = 'internal'; + this.public = 'external'; + this._private = 'internal'; }; ``` @@ -114,11 +114,11 @@ Example.prototype.method = function () { ```javascript Example.prototype.method = function () { - const self = this; + const self = this; - call(123, function (err) { - self.display(err); - }); + call(123, function (err) { + self.display(err); + }); }; ``` @@ -134,7 +134,7 @@ Example.prototype.method = function () { const method = function () {}; const arrow = (foo) => { - return bar; + return bar; }; // Wrong @@ -164,17 +164,17 @@ Hoek.assert(this instanceof Server, 'Server must be instantiated using new'); // Right if (test) { - if (value === 12) { - console.log('result'); - } + if (value === 12) { + console.log('result'); + } } // Wrong if (test) { - if (value === 12) { - console.log('result'); - } + if (value === 12) { + console.log('result'); + } } ``` @@ -198,7 +198,7 @@ const string = 'text in single quotes'; ```javascript exports.get = function () { - // Some code + // Some code }; // 1 // 2 @@ -206,26 +206,26 @@ exports.get = function () { * jsDoc comment */ internals.utility = function () { - //Some code + //Some code }; ``` - Newline after `{` except for inlined or empty objects - - Inline an object when it improves readability and unlikely to change often - - No inline object in assignment unless empty + - Inline an object when it improves readability and unlikely to change often + - No inline object in assignment unless empty ```javascript // Right if (condition) { - execute(value, { strict: true }); + execute(value, { strict: true }); } if (condition) { - const options = { - strict: true, - }; - execute(value, options); + const options = { + strict: true, + }; + execute(value, options); } const empty = {}; @@ -233,105 +233,105 @@ const empty = {}; // Wrong if (condition) { - execute(value, { strict: true }); + execute(value, { strict: true }); } if (condition) { - const options = { strict: true }; - execute(value, options); + const options = { strict: true }; + execute(value, options); } const empty = {}; ``` - Newline after `}` - - Only exception is when followed by `,`, `;`, `);` which must be followed by a newline - - Includes before `else`, `catch`, etc. - - Empty line after `}` if not last statement in scope + - Only exception is when followed by `,`, `;`, `);` which must be followed by a newline + - Includes before `else`, `catch`, etc. + - Empty line after `}` if not last statement in scope ```javascript // Right if (condition) { - value = { - func: () => { - console.log('example'); - }, - message: 'hello', - }; - - execute(value, (err) => { - console.log(err); - }); + value = { + func: () => { + console.log('example'); + }, + message: 'hello', + }; + + execute(value, (err) => { + console.log(err); + }); } else { - console.log('otherwise'); + console.log('otherwise'); } // Wrong if (condition) { - value = { - func: () => { - console.log('example'); - }, - message: 'hello', - }; - execute(value, (err) => { - console.log(err); - }); + value = { + func: () => { + console.log('example'); + }, + message: 'hello', + }; + execute(value, (err) => { + console.log(err); + }); } else { - console.log('otherwise'); + console.log('otherwise'); } ``` - Empty line after `{` - - Following a multi-line condition - - In function scope declarations - - In arrow function declarations using curly braces + - Following a multi-line condition + - In function scope declarations + - In arrow function declarations using curly braces ```javascript // Right exports.method = function () { - if (condition) { - if (otherCondition) { - console.log('sometimes'); - } + if (condition) { + if (otherCondition) { + console.log('sometimes'); + } - if (result && result.statusCode === 200) { - console.log('special case'); - } + if (result && result.statusCode === 200) { + console.log('special case'); + } - console.log('always'); - } + console.log('always'); + } - execute(123, (err) => { - console.log(err); - }); + execute(123, (err) => { + console.log(err); + }); - const empty = {}; + const empty = {}; }; // Wrong exports.method = function () { - if (condition) { - if (otherCondition) { - console.log('sometimes'); - } + if (condition) { + if (otherCondition) { + console.log('sometimes'); + } - if (result && result.statusCode === 200) { - console.log('special case'); - } + if (result && result.statusCode === 200) { + console.log('special case'); + } - console.log('always'); - } + console.log('always'); + } - execute(123, (err) => { - console.log(err); - }); + execute(123, (err) => { + console.log(err); + }); - const empty = {}; + const empty = {}; }; ``` @@ -341,17 +341,17 @@ exports.method = function () { // Right if (condition) { - if (otherCondition) { - console.log('done'); - } + if (otherCondition) { + console.log('done'); + } } // Wrong if (condition) { - if (otherCondition) { - console.log('done'); - } + if (otherCondition) { + console.log('done'); + } } ``` @@ -373,13 +373,13 @@ const value = calculate(1, 3); // Right const example = function () { - return value; + return value; }; // Wrong const example = function () { - return value; + return value; }; ``` @@ -403,7 +403,7 @@ const key = example(); execute('order', 34); if (result === 'ok') { - console.log('success'); + console.log('success'); } // Wrong @@ -411,7 +411,7 @@ if (result === 'ok') { execute('order', 34); if (result === 'ok') { - console.log('success'); + console.log('success'); } ``` @@ -421,17 +421,17 @@ if (result === 'ok') { // Right const obj = { - a: 1, - b: 2, - c: 3, + a: 1, + b: 2, + c: 3, }; // Wrong const obj = { - a: 1, - b: 2, - c: 3, + a: 1, + b: 2, + c: 3, }; ``` @@ -443,7 +443,7 @@ const obj = { const name = 'john'; for (let i = 0; i < name.length; ++i) { - console.log(name[i]); + console.log(name[i]); } // Wrong @@ -451,7 +451,7 @@ for (let i = 0; i < name.length; ++i) { const name = 'john'; for (let i = 0; i < name.length; ++i) { - console.log(name[i]); + console.log(name[i]); } ``` @@ -461,23 +461,23 @@ for (let i = 0; i < name.length; ++i) { // Right for (let book in books) { - if (books.hasOwnProperty(book)) { - console.log(book.name); - } + if (books.hasOwnProperty(book)) { + console.log(book.name); + } } // Wrong for (let book in books) { - if (books.hasOwnProperty(book)) { - console.log(book.name); - } + if (books.hasOwnProperty(book)) { + console.log(book.name); + } } ``` - Always space after `{` and before `}` in inlined object - - No space for empty objects `{}` - - One space for empty functions `{ }` + - No space for empty objects `{}` + - One space for empty functions `{ }` ```javascript // Right @@ -522,7 +522,7 @@ const numbers = [1, 2, 3]; execute({ name: 'john', email: 'john@example.com' }); for (let i = 0; i < name.length; ++i) { - console.log(name[i]); + console.log(name[i]); } // Wrong @@ -532,7 +532,7 @@ execute({ name: 'john', email: 'john@example.com' }); // This for loop violates the style guide, but illustrates incorrect spacing around a comma for (let i = 0, il = name.length; i < il; ++i) { - console.log(name[i]); + console.log(name[i]); } ``` @@ -572,7 +572,7 @@ execute('some error message', 12345, this); const message = 'Hello ' + 'Steve, ' + 'How are you?'; if (value === 'hello' && result === 'ok') { - console.log('yes'); + console.log('yes'); } // Wrong @@ -580,7 +580,7 @@ if (value === 'hello' && result === 'ok') { const message = 'Hello ' + 'Steve, ' + 'How are you?'; if (value === 'hello' && result === 'ok') { - console.log('yes'); + console.log('yes'); } ``` @@ -612,54 +612,54 @@ const message = foo === bar ? foo : bar; - No TODOs - Line - - Provides narrative for the following single code line (or single statement broken for readability) - - One line of comment only - - One empty line before and none after the comment line - - No empty line before when following `{` unless other rules require it + - Provides narrative for the following single code line (or single statement broken for readability) + - One line of comment only + - One empty line before and none after the comment line + - No empty line before when following `{` unless other rules require it ```javascript function execute() { - // Initialize state - const position = 0; + // Initialize state + const position = 0; - if (condition) { - // Return message - return 'hello'; - } + if (condition) { + // Return message + return 'hello'; + } } ``` - Segment - - Provides narrative for the following code section (one or more lines of code, with or without line breaks) - - One or more lines of comments - - One empty line before and one after comments block + - Provides narrative for the following code section (one or more lines of code, with or without line breaks) + - One or more lines of comments + - One empty line before and one after comments block ```javascript function execute() { - // Print each book's name + // Print each book's name - for (let book in books) { - // Check for valid properties + for (let book in books) { + // Check for valid properties - if (books.hasOwnProperty(book)) { - console.log(book.name); + if (books.hasOwnProperty(book)) { + console.log(book.name); + } } - } } ``` - Note - - Explains the behaviour of a single code statement (can be broken into multiple lines) - - Used to document unexpected behaviour or non-standard practice - - Appears immediately at the end of the line (or statement) it describes, following whitespace to separate it from code block + - Explains the behaviour of a single code statement (can be broken into multiple lines) + - Used to document unexpected behaviour or non-standard practice + - Appears immediately at the end of the line (or statement) it describes, following whitespace to separate it from code block ```javascript function execute(value) { - if (value !== null && value !== undefined) { - // Explicit check as 'value' can be 0 + if (value !== null && value !== undefined) { + // Explicit check as 'value' can be 0 - console.log(value); - } + console.log(value); + } } ``` @@ -674,7 +674,7 @@ function execute(value) { ```javascript if (result && result.status && result.status.statusCode === 200) { - console.log('success'); + console.log('success'); } ``` @@ -695,8 +695,8 @@ const message = 'hello' + ' and welcome'; ### Module globals - Every module can only have two top level globals (except for imported modules): - - `exports` - defined automatically by node - - `internals` - must be declared as an object at the top of each module immediate following the `require` section + - `exports` - defined automatically by node + - `internals` - must be declared as an object at the top of each module immediate following the `require` section - Any variable global to the module must be a property of `internals`, including constants - If a module has automatically executing code, it must be contained within a function (using the `internals` namespace) and called at the top of the module after the `internals` declaration. diff --git a/generated/markdown/scooter/7/api.md b/generated/markdown/scooter/7/api.md index 0644c6b0..92ee7a01 100644 --- a/generated/markdown/scooter/7/api.md +++ b/generated/markdown/scooter/7/api.md @@ -8,19 +8,19 @@ const Hapi = require('@hapi/hapi'); const Scooter = require('@hapi/scooter'); const start = async () => { - const server = new Hapi.Server(); + const server = new Hapi.Server(); - server.route({ - method: 'GET', - path: '/user-agent', - handler: (request, h) => { - return request.plugins.scooter; - }, - }); + server.route({ + method: 'GET', + path: '/user-agent', + handler: (request, h) => { + return request.plugins.scooter; + }, + }); - await server.register(Scooter); - await server.start(); - console.log(server.info.uri + '/user-agent'); + await server.register(Scooter); + await server.start(); + console.log(server.info.uri + '/user-agent'); }; start(); diff --git a/generated/markdown/scooter/8/api.md b/generated/markdown/scooter/8/api.md index 9746eb2c..7bf0c012 100644 --- a/generated/markdown/scooter/8/api.md +++ b/generated/markdown/scooter/8/api.md @@ -8,19 +8,19 @@ const Hapi = require('@hapi/hapi'); const Scooter = require('@hapi/scooter'); const start = async () => { - const server = new Hapi.Server(); - - server.route({ - method: 'GET', - path: '/user-agent', - handler: (request, h) => { - return request.userAgent(); - }, - }); - - await server.register(Scooter); - await server.start(); - console.log(server.info.uri + '/user-agent'); + const server = new Hapi.Server(); + + server.route({ + method: 'GET', + path: '/user-agent', + handler: (request, h) => { + return request.userAgent(); + }, + }); + + await server.register(Scooter); + await server.start(); + console.log(server.info.uri + '/user-agent'); }; start(); diff --git a/generated/markdown/shot/6/api.md b/generated/markdown/shot/6/api.md index 13c50c11..72a67d10 100644 --- a/generated/markdown/shot/6/api.md +++ b/generated/markdown/shot/6/api.md @@ -12,19 +12,19 @@ const Shot = require('@hapi/shot'); const internals = {}; internals.main = async function () { - const dispatch = function (req, res) { - const reply = 'Hello World'; - res.writeHead(200, { - 'Content-Type': 'text/plain', - 'Content-Length': reply.length, - }); - res.end(reply); - }; - - const server = Http.createServer(dispatch); - - const res = await Shot.inject(dispatch, { method: 'get', url: '/' }); - console.log(res.payload); + const dispatch = function (req, res) { + const reply = 'Hello World'; + res.writeHead(200, { + 'Content-Type': 'text/plain', + 'Content-Length': reply.length, + }); + res.end(reply); + }; + + const server = Http.createServer(dispatch); + + const res = await Shot.inject(dispatch, { method: 'get', url: '/' }); + console.log(res.payload); }; internals.main(); @@ -39,28 +39,28 @@ Note how `server.listen` is never called. Injects a fake request into an HTTP server. - `dispatchFunc` - listener function. The same as you would pass to `Http.createServer` when making a node HTTP server. Has the signature `function (req, res)` where: - - `req` - a simulated request object. Inherits from `Stream.Readable`. - - `res` - a simulated response object. Inherits from node's `Http.ServerResponse`. + - `req` - a simulated request object. Inherits from `Stream.Readable`. + - `res` - a simulated response object. Inherits from node's `Http.ServerResponse`. - `options` - request options object where: - - `url` - a string specifying the request URL. - - `method` - a string specifying the HTTP request method, defaulting to `'GET'`. - - `authority` - a string specifying the HTTP HOST header value to be used if no header is provided, and the `url` - does not include an authority component. Defaults to `'localhost'`. - - `headers` - an optional object containing request headers. - - `remoteAddress` - an optional string specifying the client remote address. Defaults to `'127.0.0.1'`. - - `payload` - an optional request payload. Can be a string, Buffer, Stream or object. - - `simulate` - an object containing flags to simulate various conditions: - - `end` - indicates whether the request will fire an `end` event. Defaults to `undefined`, meaning an `end` event will fire. - - `split` - indicates whether the request payload will be split into chunks. Defaults to `undefined`, meaning payload will not be chunked. - - `error` - whether the request will emit an `error` event. Defaults to `undefined`, meaning no `error` event will be emitted. If set to `true`, the emitted error will have a message of `'Simulated'`. - - `close` - whether the request will emit a `close` event. Defaults to `undefined`, meaning no `close` event will be emitted. - - `validate` - Optional flag to validate this options object. Defaults to `true`. + - `url` - a string specifying the request URL. + - `method` - a string specifying the HTTP request method, defaulting to `'GET'`. + - `authority` - a string specifying the HTTP HOST header value to be used if no header is provided, and the `url` + does not include an authority component. Defaults to `'localhost'`. + - `headers` - an optional object containing request headers. + - `remoteAddress` - an optional string specifying the client remote address. Defaults to `'127.0.0.1'`. + - `payload` - an optional request payload. Can be a string, Buffer, Stream or object. + - `simulate` - an object containing flags to simulate various conditions: + - `end` - indicates whether the request will fire an `end` event. Defaults to `true`, meaning an `end` event will fire. + - `split` - indicates whether the request payload will be split into chunks. Defaults to `undefined`, meaning payload will not be chunked. + - `error` - whether the request will emit an `error` event. Defaults to `undefined`, meaning no `error` event will be emitted. If set to `true`, the emitted error will have a message of `'Simulated'`. + - `close` - whether the request will emit a `close` event. Defaults to `true`, meaning a `close` event will be emitted. + - `validate` - Optional flag to validate this options object. Defaults to `true`. Returns a response object where: - `raw` - an object containing the raw request and response objects where: - - `req` - the simulated request object. - - `res` - the simulated response object. + - `req` - the simulated request object. + - `res` - the simulated response object. - `headers` - an object containing the response headers. - `statusCode` - the HTTP status code. If response is aborted before headers are sent, the code is `499`. - `statusMessage` - the HTTP status message. diff --git a/generated/markdown/shot/changelog.md b/generated/markdown/shot/changelog.md index efdcad91..785fcd68 100644 --- a/generated/markdown/shot/changelog.md +++ b/generated/markdown/shot/changelog.md @@ -1,5 +1,10 @@ ## Version 6 {#v6} +### [6.0.3](https://github.com/hapijs/shot/milestone/56) {#6.0.3} + +- [#153](https://github.com/hapijs/shot/pull/153) Fix stream payload error handling +- [#152](https://github.com/hapijs/shot/pull/152) Fix missing close emits + ### [6.0.2](https://github.com/hapijs/shot/milestone/55) {#6.0.2} - [#151](https://github.com/hapijs/shot/pull/151) Improve argument validation and messaging diff --git a/generated/markdown/sse/1/api.md b/generated/markdown/sse/1/api.md index 2a8db8ca..dce48799 100644 --- a/generated/markdown/sse/1/api.md +++ b/generated/markdown/sse/1/api.md @@ -26,9 +26,9 @@ await server.start(); // Publish from anywhere await server.sse.publish( - '/chat/general', - { text: 'hello', user: 'alice' }, - { event: 'message' }, + '/chat/general', + { text: 'hello', user: 'alice' }, + { event: 'message' }, ); ``` @@ -43,6 +43,11 @@ await server.register({ headers: { 'X-Custom': 'value' }, // extra headers on every SSE response backpressure: { maxBytes: 65536, strategy: 'drop' }, // optional hooks: { ... }, // optional, see Hooks section + completion: { // optional, see Stream completion section + cache: 'my-redis-cache', // named cache engine (default: hapi default) + segment: 'completed-sessions', // segment name + expiresIn: 5 * 60 * 1000, // TTL for completion tokens (default: 5 min) + }, }, }); ``` @@ -55,19 +60,20 @@ Registers a subscription route. Clients connect via `GET `. ```typescript server.sse.subscription('/chat/{room}', { - auth: 'jwt', - retry: 5000, - keepAlive: { interval: 10_000 }, - filter: async (path, message, { credentials, params, internal }) => { - if (params.room !== internal.targetRoom) { - return false; // don't deliver - } - return { override: { ...message, filtered: true } }; // or transform - }, - onSubscribe: async (session, path, params) => {}, - onUnsubscribe: (session, path, params) => {}, - onReconnect: async (session, path, params) => {}, - replay: new FiniteReplayer({ size: 100 }), // optional, see Replay section + auth: 'jwt', + retry: 5000, + keepAlive: { interval: 10_000 }, + refuse: (request) => server.app.shuttingDown || circuitBreaker.isOpen(), + filter: async (path, message, { credentials, params, internal }) => { + if (params.room !== internal.targetRoom) { + return false; // don't deliver + } + return { override: { ...message, filtered: true } }; // or transform + }, + onSubscribe: async (session, path, params) => {}, + onUnsubscribe: (session, path, params) => {}, + onReconnect: async (session, path, params) => {}, + replay: new FiniteReplayer({ size: 100 }), // optional, see Replay section }); ``` @@ -78,6 +84,7 @@ server.sse.subscription('/chat/{room}', { | `auth` | `RouteOptions['auth']` | hapi auth config for the route | | `retry` | `number \| null` | Override plugin-level retry | | `keepAlive` | `{ interval: number } \| false` | Override plugin-level keep-alive | +| `refuse` | `(request) => boolean \| Promise` | Server-state predicate. Runs before the session is created. Returning `true` responds with `204 No Content`, telling the EventSource not to reconnect. | | `filter` | `(path, message, opts) => boolean \| { override } \| Promise<...>` | Per-session delivery filter | | `onSubscribe` | `(session, path, params) => void \| Promise` | Fires before SSE headers are sent. Throwing a Boom error returns that HTTP error to the client. | | `onUnsubscribe` | `(session, path, params) => void` | Fires on client disconnect | @@ -92,14 +99,14 @@ Publishes an event to all matching subscribers. Returns the number of sessions t ```typescript const delivered = await server.sse.publish( - '/chat/general', - { text: 'hello everyone', user: 'alice' }, - { - event: 'message', - id: 'msg-42', - internal: { targetRoom: 'general' }, // passed to filter - matchMode: 'literal', // 'pattern' (default) or 'literal' - }, + '/chat/general', + { text: 'hello everyone', user: 'alice' }, + { + event: 'message', + id: 'msg-42', + internal: { targetRoom: 'general' }, // passed to filter + matchMode: 'literal', // 'pattern' (default) or 'literal' + }, ); console.log(`Delivered to ${delivered} sessions`); @@ -118,8 +125,8 @@ Sends an event to every connected session across all subscriptions. Returns the ```typescript const count = await server.sse.broadcast( - { text: 'Server restarting in 5 minutes', user: 'system' }, - { event: 'system' }, + { text: 'Server restarting in 5 minutes', user: 'system' }, + { event: 'system' }, ); ``` @@ -129,10 +136,10 @@ Iterates over connected sessions. Optionally filter by subscription pattern. ```typescript await server.sse.eachSession( - async (session) => { - session.push({ text: 'ping', user: 'system' }); - }, - { subscription: '/chat/{room}' }, + async (session) => { + session.push({ text: 'ping', user: 'system' }); + }, + { subscription: '/chat/{room}' }, ); ``` @@ -193,13 +200,66 @@ The `Session` object represents a single SSE connection. ```typescript session.push(data, event?, id?) // Send an event. Returns boolean (false if dropped/closed). session.comment(text?) // Send a comment (invisible to EventSource) -session.close() // End the connection +session.close() // End the connection (client will reconnect) +session.complete() // Mark the stream as done; next reconnect gets HTTP 204 +session.id // UUID generated at construction; used as the completion token session.isOpen // true if connection is still active session.connectedAt // Unix timestamp (ms) when the session was created session.lastEventId // Value of Last-Event-ID header (empty string if absent) session.request // The original hapi Request object ``` +**Stream completion** — when the stream has done its work and the client should not reconnect, call `session.complete()` instead of `session.close()`: + +```typescript +server.route({ + method: 'GET', + path: '/jobs/{id}/progress', + handler: { + sse: { + stream: async (request, session) => { + for await (const update of jobProgress(request.params.id)) { + session.push(update, 'progress', update.eventId); + } + await session.complete(); // emits a final event with a token id, closes the stream + }, + }, + }, +}); +``` + +`complete()` writes a final SSE event of type `complete` with `session.id` as its `id` field. The browser saves that UUID as its `Last-Event-ID`. If the EventSource reconnects, the plugin sees the token in the `Last-Event-ID` header and responds `204 No Content`. Per the [WHATWG SSE spec](https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events-intro), a 204 response makes the EventSource stop reconnecting. + +Clients can react to completion via `eventSource.addEventListener('complete', handler)`. + +**Completion cache** — tokens live in a hapi server cache (default: in-process catbox-memory, 5 minute TTL). Each token is consumed on first redemption. Use the `completion` plugin option to customize: + +```typescript +const server = Hapi.server({ + port: 3000, + cache: [ + { + name: 'redis-cache', + provider: { + constructor: require('@hapi/catbox-redis'), + options: { host: '127.0.0.1' }, + }, + }, + ], +}); + +await server.register({ + plugin: SsePlugin, + options: { + completion: { + cache: 'redis-cache', // share completion state across processes + segment: 'sse-completions', + expiresIn: 10 * 60 * 1000, // 10 minutes + }, + }, +}); +``` + **Metadata** — attach arbitrary key-value data to a session: ```typescript @@ -217,22 +277,22 @@ For full control over the stream (e.g. AI-assisted chat responses), use the hand ```typescript server.route({ - method: 'GET', - path: '/chat/{room}/ai', - handler: { - sse: { - stream: async (request, session) => { - for (const token of tokens) { - session.push({ token, user: 'assistant' }, 'token'); - } - session.close(); - }, - retry: 3000, // override plugin-level retry - keepAlive: { interval: 10_000 }, // override plugin-level keep-alive - headers: { 'X-Chat-Bot': 'true' }, // override plugin-level headers - backpressure: { maxBytes: 32768, strategy: 'close' }, + method: 'GET', + path: '/chat/{room}/ai', + handler: { + sse: { + stream: async (request, session) => { + for (const token of tokens) { + session.push({ token, user: 'assistant' }, 'token'); + } + session.close(); + }, + retry: 3000, // override plugin-level retry + keepAlive: { interval: 10_000 }, // override plugin-level keep-alive + headers: { 'X-Chat-Bot': 'true' }, // override plugin-level headers + backpressure: { maxBytes: 32768, strategy: 'close' }, + }, }, - }, }); ``` @@ -295,15 +355,15 @@ Call `replayer.stop()` to clear the cleanup timer (handled automatically on serv import type { Replayer, ReplayEntry } from '@hapi/sse'; class RedisReplayer implements Replayer { - record(entry: ReplayEntry): void { - /* store to Redis stream */ - } - replay(lastEventId: string): ReplayEntry[] { - /* read from Redis */ - } - stop?(): void { - /* cleanup */ - } + record(entry: ReplayEntry): void { + /* store to Redis stream */ + } + replay(lastEventId: string): ReplayEntry[] { + /* read from Redis */ + } + stop?(): void { + /* cleanup */ + } } ``` @@ -348,20 +408,20 @@ Optional lifecycle hooks for side effects (logging, external telemetry). All hoo ```typescript await server.register({ - plugin: SsePlugin, - options: { - hooks: { - onSession: (session, path, params) => { - console.log(`Joined: ${path}`); - }, - onSessionClose: (session, path, params) => { - console.log(`Left: ${path}`); - }, - onPublish: (path, data, deliveryCount) => { - console.log(`Message in ${path}: ${deliveryCount} recipients`); - }, + plugin: SsePlugin, + options: { + hooks: { + onSession: (session, path, params) => { + console.log(`Joined: ${path}`); + }, + onSessionClose: (session, path, params) => { + console.log(`Left: ${path}`); + }, + onPublish: (path, data, deliveryCount) => { + console.log(`Message in ${path}: ${deliveryCount} recipients`); + }, + }, }, - }, }); ``` @@ -373,20 +433,20 @@ Subscription config and publish are generic for type-safe event payloads: ```typescript interface ChatMessage { - text: string; - user: string; + text: string; + user: string; } server.sse.subscription('/chat/{room}', { - filter: (path, message) => { - // message is typed as ChatMessage - return message.user !== 'blocked'; - }, + filter: (path, message) => { + // message is typed as ChatMessage + return message.user !== 'blocked'; + }, }); await server.sse.publish('/chat/general', { - text: 'hello', - user: 'alice', + text: 'hello', + user: 'alice', }); ``` @@ -416,16 +476,16 @@ export { EventBuffer, Session, SsePlugin, FiniteReplayer, ValidReplayer }; // Types export type { - SsePluginOptions, - SseApi, - SseHandlerOptions, - SseHooks, - SseStats, - SubscriptionConfig, - SubscriptionInfo, - FilterOptions, - BackpressureOptions, - Replayer, - ReplayEntry, + SsePluginOptions, + SseApi, + SseHandlerOptions, + SseHooks, + SseStats, + SubscriptionConfig, + SubscriptionInfo, + FilterOptions, + BackpressureOptions, + Replayer, + ReplayEntry, }; ``` diff --git a/generated/markdown/sse/changelog.md b/generated/markdown/sse/changelog.md index aabf60ad..5f70cf51 100644 --- a/generated/markdown/sse/changelog.md +++ b/generated/markdown/sse/changelog.md @@ -1,5 +1,9 @@ ## Version 1 {#v1} +### [1.1.0](https://github.com/hapijs/sse/milestone/2) {#1.1.0} + +- [#5](https://github.com/hapijs/sse/pull/5) feat: add refuse() calculator and session.complete() + ### [1.0.0](https://github.com/hapijs/sse/milestone/1) {#1.0.0} - [#3](https://github.com/hapijs/sse/issues/3) Initial release diff --git a/generated/markdown/subtext/8/api.md b/generated/markdown/subtext/8/api.md index c5fc6ffe..60b7eb64 100644 --- a/generated/markdown/subtext/8/api.md +++ b/generated/markdown/subtext/8/api.md @@ -9,13 +9,13 @@ const Http = require('http'); const Subtext = require('@hapi/subtext'); Http.createServer(async (request, response) => { - const { payload, mime } = await Subtext.parse(request, null, { - parse: true, - output: 'data', - }); + const { payload, mime } = await Subtext.parse(request, null, { + parse: true, + output: 'data', + }); - response.writeHead(200, { 'Content-Type': 'text/plain' }); - response.end(`Payload contains: ${JSON.stringify(payload)}`); + response.writeHead(200, { 'Content-Type': 'text/plain' }); + response.end(`Payload contains: ${JSON.stringify(payload)}`); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); diff --git a/generated/markdown/subtext/changelog.md b/generated/markdown/subtext/changelog.md index dbd55edd..51d693ad 100644 --- a/generated/markdown/subtext/changelog.md +++ b/generated/markdown/subtext/changelog.md @@ -1,5 +1,9 @@ ## Version 8 {#v8} +### [8.1.3](https://github.com/hapijs/subtext/milestone/59) {#8.1.3} + +- [#106](https://github.com/hapijs/subtext/pull/106) chore: bump dependencies + ### [8.1.2](https://github.com/hapijs/subtext/milestone/58) {#8.1.2} - [#105](https://github.com/hapijs/subtext/pull/105) chore: bump deps diff --git a/generated/markdown/topo/6/api.md b/generated/markdown/topo/6/api.md index 501100bc..6bf4adce 100644 --- a/generated/markdown/topo/6/api.md +++ b/generated/markdown/topo/6/api.md @@ -12,8 +12,8 @@ const morning = new Topo.Sorter(); morning.add('Nap', { after: ['breakfast', 'prep'] }); morning.add(['Make toast', 'Pour juice'], { - before: 'breakfast', - group: 'prep', + before: 'breakfast', + group: 'prep', }); morning.add('Eat breakfast', { group: 'breakfast' }); @@ -33,11 +33,11 @@ Specifies an additional node or list of nodes to be topologically sorted where: - `nodes` - a mixed value or array of mixed values to be added as nodes to the topologically sorted list. - `options` - optional sorting information about the `nodes`: - - `group` - a string naming the group to which `nodes` should be assigned. The group name `'?'` is reserved. - - `before` - a string or array of strings specifying the groups that `nodes` must precede in the topological sort. - - `after` - a string or array of strings specifying the groups that `nodes` must succeed in the topological sort. - - `sort` - a numerical value used to sort items when performing a `sorter.merge()`. - - `manual` - if `true`, the array is not sorted automatically and `sorter.sort()` must be called when done adding items. + - `group` - a string naming the group to which `nodes` should be assigned. The group name `'?'` is reserved. + - `before` - a string or array of strings specifying the groups that `nodes` must precede in the topological sort. + - `after` - a string or array of strings specifying the groups that `nodes` must succeed in the topological sort. + - `sort` - a numerical value used to sort items when performing a `sorter.merge()`. + - `manual` - if `true`, the array is not sorted automatically and `sorter.sort()` must be called when done adding items. Returns an array of the topologically sorted nodes (unless `manual` is used in which case the array is left unchanged). diff --git a/generated/markdown/vision/7/api.md b/generated/markdown/vision/7/api.md index 148844cf..5d6e47cf 100644 --- a/generated/markdown/vision/7/api.md +++ b/generated/markdown/vision/7/api.md @@ -19,10 +19,10 @@ const Vision = require('@hapi/vision'); const server = Hapi.Server({ port: 3000 }); const provision = async () => { - await server.register(Vision); - await server.start(); + await server.register(Vision); + await server.start(); - console.log('Server running at:', server.info.uri); + console.log('Server running at:', server.info.uri); }; provision(); @@ -80,25 +80,25 @@ const Vision = require('@hapi/vision'); const server = Hapi.Server({ port: 3000 }); const rootHandler = (request, h) => { - return h.view('index', { - title: 'examples/ejs/templates/basic | Hapi ' + request.server.version, - message: 'Hello Ejs!', - }); + return h.view('index', { + title: 'examples/ejs/templates/basic | Hapi ' + request.server.version, + message: 'Hello Ejs!', + }); }; const provision = async () => { - await server.register(Vision); + await server.register(Vision); - server.views({ - engines: { ejs: Ejs }, - relativeTo: __dirname, - path: 'examples/ejs/templates/basic', - }); + server.views({ + engines: { ejs: Ejs }, + relativeTo: __dirname, + path: 'examples/ejs/templates/basic', + }); - server.route({ method: 'GET', path: '/', handler: rootHandler }); + server.route({ method: 'GET', path: '/', handler: rootHandler }); - await server.start(); - console.log('Server running at:', server.info.uri); + await server.start(); + console.log('Server running at:', server.info.uri); }; provision(); @@ -114,26 +114,27 @@ const Vision = require('@hapi/vision'); const server = Hapi.Server({ port: 3000 }); const rootHandler = (request, h) => { - return h.view('index', { - title: - 'examples/handlebars/templates/basic | hapi ' + request.server.version, - message: 'Hello Handlebars!', - }); + return h.view('index', { + title: + 'examples/handlebars/templates/basic | hapi ' + + request.server.version, + message: 'Hello Handlebars!', + }); }; const provision = async () => { - await server.register(Vision); + await server.register(Vision); - server.views({ - engines: { html: Handlebars }, - relativeTo: __dirname, - path: 'examples/handlebars/templates/basic', - }); + server.views({ + engines: { html: Handlebars }, + relativeTo: __dirname, + path: 'examples/handlebars/templates/basic', + }); - server.route({ method: 'GET', path: '/', handler: rootHandler }); + server.route({ method: 'GET', path: '/', handler: rootHandler }); - await server.start(); - console.log('Server running at:', server.info.uri); + await server.start(); + console.log('Server running at:', server.info.uri); }; provision(); @@ -151,30 +152,30 @@ const Vision = require('@hapi/vision'); const server = Hapi.Server({ port: 3000 }); const rootHandler = (request, h) => { - return h.view('index', { - title: 'examples/pug/templates | Hapi ' + request.server.version, - message: 'Hello Pug!', - }); + return h.view('index', { + title: 'examples/pug/templates | Hapi ' + request.server.version, + message: 'Hello Pug!', + }); }; const provision = async () => { - await server.register(Vision); - - server.views({ - engines: { pug: Pug }, - relativeTo: __dirname, - path: 'examples/pug/templates', - compileOptions: { - // By default Pug uses relative paths (e.g. ../root.pug), when using absolute paths (e.g. include /root.pug), basedir is prepended. - // https://pugjs.org/language/includes.html - basedir: Path.join(__dirname, 'examples/pug/templates'), - }, - }); - - server.route({ method: 'GET', path: '/', handler: rootHandler }); - - await server.start(); - console.log('Server running at:', server.info.uri); + await server.register(Vision); + + server.views({ + engines: { pug: Pug }, + relativeTo: __dirname, + path: 'examples/pug/templates', + compileOptions: { + // By default Pug uses relative paths (e.g. ../root.pug), when using absolute paths (e.g. include /root.pug), basedir is prepended. + // https://pugjs.org/language/includes.html + basedir: Path.join(__dirname, 'examples/pug/templates'), + }, + }); + + server.route({ method: 'GET', path: '/', handler: rootHandler }); + + await server.start(); + console.log('Server running at:', server.info.uri); }; provision(); @@ -190,37 +191,40 @@ const Vision = require('@hapi/vision'); const server = Hapi.Server({ port: 3000 }); const rootHandler = (request, h) => { - return h.view('index', { - title: 'examples/marko/templates | Hapi ' + request.server.version, - message: 'Hello Marko!', - }); + return h.view('index', { + title: 'examples/marko/templates | Hapi ' + request.server.version, + message: 'Hello Marko!', + }); }; const provision = async () => { - await server.register(Vision); - - server.views({ - engines: { - marko: { - compile: (src, options) => { - const opts = { preserveWhitespace: true, writeToDisk: false }; - - const template = Marko.load(options.filename, opts); - - return (context) => { - return template.renderToString(context); - }; + await server.register(Vision); + + server.views({ + engines: { + marko: { + compile: (src, options) => { + const opts = { + preserveWhitespace: true, + writeToDisk: false, + }; + + const template = Marko.load(options.filename, opts); + + return (context) => { + return template.renderToString(context); + }; + }, + }, }, - }, - }, - relativeTo: __dirname, - path: 'examples/marko/templates', - }); + relativeTo: __dirname, + path: 'examples/marko/templates', + }); - server.route({ method: 'GET', path: '/', handler: rootHandler }); + server.route({ method: 'GET', path: '/', handler: rootHandler }); - await server.start(); - console.log('Server running at:', server.info.uri); + await server.start(); + console.log('Server running at:', server.info.uri); }; provision(); @@ -236,35 +240,37 @@ const Vision = require('@hapi/vision'); const server = Hapi.Server({ port: 3000 }); const rootHandler = (request, h) => { - return h.view('index', { - title: 'examples/mustache/templates/basic | Hapi ' + request.server.version, - message: 'Hello Mustache!', - }); + return h.view('index', { + title: + 'examples/mustache/templates/basic | Hapi ' + + request.server.version, + message: 'Hello Mustache!', + }); }; const provision = async () => { - await server.register(Vision); - - server.views({ - engines: { - html: { - compile: (template) => { - Mustache.parse(template); - - return (context) => { - return Mustache.render(template, context); - }; + await server.register(Vision); + + server.views({ + engines: { + html: { + compile: (template) => { + Mustache.parse(template); + + return (context) => { + return Mustache.render(template, context); + }; + }, + }, }, - }, - }, - relativeTo: __dirname, - path: 'examples/mustache/templates/basic', - }); + relativeTo: __dirname, + path: 'examples/mustache/templates/basic', + }); - server.route({ method: 'GET', path: '/', handler: rootHandler }); + server.route({ method: 'GET', path: '/', handler: rootHandler }); - await server.start(); - console.log('Server running at:', server.info.uri); + await server.start(); + console.log('Server running at:', server.info.uri); }; provision(); @@ -280,44 +286,44 @@ const Vision = require('@hapi/vision'); const server = Hapi.Server({ port: 3000 }); const rootHandler = (request, h) => { - return h.view('index', { - title: 'examples/nunjucks/templates | Hapi ' + request.server.version, - message: 'Hello Nunjucks!', - }); + return h.view('index', { + title: 'examples/nunjucks/templates | Hapi ' + request.server.version, + message: 'Hello Nunjucks!', + }); }; const provision = async () => { - await server.register(Vision); - - server.views({ - engines: { - html: { - compile: (src, options) => { - const template = Nunjucks.compile(src, options.environment); - - return (context) => { - return template.render(context); - }; + await server.register(Vision); + + server.views({ + engines: { + html: { + compile: (src, options) => { + const template = Nunjucks.compile(src, options.environment); + + return (context) => { + return template.render(context); + }; + }, + + prepare: (options, next) => { + options.compileOptions.environment = Nunjucks.configure( + options.path, + { watch: false }, + ); + + return next(); + }, + }, }, + relativeTo: __dirname, + path: 'examples/nunjucks/templates', + }); - prepare: (options, next) => { - options.compileOptions.environment = Nunjucks.configure( - options.path, - { watch: false }, - ); - - return next(); - }, - }, - }, - relativeTo: __dirname, - path: 'examples/nunjucks/templates', - }); + server.route({ method: 'GET', path: '/', handler: rootHandler }); - server.route({ method: 'GET', path: '/', handler: rootHandler }); - - await server.start(); - console.log('Server running at:', server.info.uri); + await server.start(); + console.log('Server running at:', server.info.uri); }; provision(); @@ -333,35 +339,38 @@ const Vision = require('@hapi/vision'); const server = Hapi.Server({ port: 3000 }); const rootHandler = (request, h) => { - return h.view('index', { - title: 'examples/twig/templates | Hapi ' + request.server.version, - message: 'Hello Twig!', - }); + return h.view('index', { + title: 'examples/twig/templates | Hapi ' + request.server.version, + message: 'Hello Twig!', + }); }; const provision = async () => { - await server.register(Vision); - - server.views({ - engines: { - twig: { - compile: (src, options) => { - const template = Twig.twig({ id: options.filename, data: src }); - - return (context) => { - return template.render(context); - }; + await server.register(Vision); + + server.views({ + engines: { + twig: { + compile: (src, options) => { + const template = Twig.twig({ + id: options.filename, + data: src, + }); + + return (context) => { + return template.render(context); + }; + }, + }, }, - }, - }, - relativeTo: __dirname, - path: 'examples/twig/templates', - }); + relativeTo: __dirname, + path: 'examples/twig/templates', + }); - server.route({ method: 'GET', path: '/', handler: rootHandler }); + server.route({ method: 'GET', path: '/', handler: rootHandler }); - await server.start(); - console.log('Server running at:', server.info.uri); + await server.start(); + console.log('Server running at:', server.info.uri); }; provision(); @@ -377,45 +386,45 @@ const Vision = require('@hapi/vision'); const server = Hapi.Server({ port: 3000 }); const rootHandler = (request, h) => { - return h.view('index', { - title: 'examples/eta/templates | Hapi ' + request.server.version, - message: 'Hello Eta!', - }); + return h.view('index', { + title: 'examples/eta/templates | Hapi ' + request.server.version, + message: 'Hello Eta!', + }); }; const provision = async () => { - await server.register(Vision); + await server.register(Vision); + + server.views({ + engines: { + eta: { + compile: (src, options) => { + const compiled = Eta.compile(src, options); + + return (context) => { + return Eta.render(compiled, context); + }; + }, + }, + }, + /** + * This is the config object that gets passed to the compile function + * defined above. This should contain the eta configuration object + * described at https://eta.js.org/docs/api/configuration Only some of + * the configuration are relevant when using with hapijs. + */ + compileOptions: { + autoEscape: true, + tags: ['{{', '}}'], + }, + relativeTo: __dirname, + path: 'examples/eta/templates', + }); - server.views({ - engines: { - eta: { - compile: (src, options) => { - const compiled = Eta.compile(src, options); + server.route({ method: 'GET', path: '/', handler: rootHandler }); - return (context) => { - return Eta.render(compiled, context); - }; - }, - }, - }, - /** - * This is the config object that gets passed to the compile function - * defined above. This should contain the eta configuration object - * described at https://eta.js.org/docs/api/configuration Only some of - * the configuration are relevant when using with hapijs. - */ - compileOptions: { - autoEscape: true, - tags: ['{{', '}}'], - }, - relativeTo: __dirname, - path: 'examples/eta/templates', - }); - - server.route({ method: 'GET', path: '/', handler: rootHandler }); - - await server.start(); - console.log('Server running at:', server.info.uri); + await server.start(); + console.log('Server running at:', server.info.uri); }; provision(); @@ -458,28 +467,28 @@ The Views Manager is configured with [`registration options`](#registration) or - `engines` - required object where each key is a file extension (e.g. 'html', 'hbr'), mapped to the npm module used for rendering the templates. Alternatively, the extension can be mapped to an object with the following options: - - `module` - the npm module used for rendering the templates. The module object must - contain the `compile()` function: - - `compile()` - the rendering function. The required function signature depends on the - `compileMode` settings (see below). If `compileMode` is `'sync'`, the signature is - `compile(template, options)`, the return value is a function with signature - `function(context, options)` (the compiled sync template), and the method is allowed to throw errors. If - `compileMode` is `'async'`, the signature is `compile(template, options, next)` - where `next` has the signature `function(err, compiled)`, `compiled` is a - function with signature `function(context, options, callback)` (the compiled async template) and `callback` has the - signature `function(err, rendered)`. - - `prepare(config, next)` - initializes additional engine state. - The `config` object is the engine configuration object allowing updates to be made. - This is useful for engines like Nunjucks that rely on additional state for rendering. - `next` has the signature `function(err)`. - - `registerPartial(name, src)` - registers a partial for use during template rendering. - The `name` is the partial path that templates should use to reference the partial and - `src` is the uncompiled template string for the partial. - - `registerHelper(name, helper)` - registers a helper for use during template rendering. - The `name` is the name that templates should use to reference the helper and `helper` - is the function that will be invoked when the helper is called. - - any of the `views` options listed below (except `defaultExtension`) to override the - defaults for a specific engine. + - `module` - the npm module used for rendering the templates. The module object must + contain the `compile()` function: + - `compile()` - the rendering function. The required function signature depends on the + `compileMode` settings (see below). If `compileMode` is `'sync'`, the signature is + `compile(template, options)`, the return value is a function with signature + `function(context, options)` (the compiled sync template), and the method is allowed to throw errors. If + `compileMode` is `'async'`, the signature is `compile(template, options, next)` + where `next` has the signature `function(err, compiled)`, `compiled` is a + function with signature `function(context, options, callback)` (the compiled async template) and `callback` has the + signature `function(err, rendered)`. + - `prepare(config, next)` - initializes additional engine state. + The `config` object is the engine configuration object allowing updates to be made. + This is useful for engines like Nunjucks that rely on additional state for rendering. + `next` has the signature `function(err)`. + - `registerPartial(name, src)` - registers a partial for use during template rendering. + The `name` is the partial path that templates should use to reference the partial and + `src` is the uncompiled template string for the partial. + - `registerHelper(name, helper)` - registers a helper for use during template rendering. + The `name` is the name that templates should use to reference the helper and `helper` + is the function that will be invoked when the helper is called. + - any of the `views` options listed below (except `defaultExtension`) to override the + defaults for a specific engine. - `compileMode` - specify whether the engine `compile()` method is `'sync'` or `'async'`. Defaults to `'sync'`. @@ -570,9 +579,9 @@ Uses the server views manager to render a template where: no context (`{}`). - `options` - optional object used to override the views manager configuration. - callback - the callback function with signature function (err, rendered, config) where: - - `err` - the rendering error if any. - - `rendered` - the result view string. - - `config` - the configuration used to render the template. + - `err` - the rendering error if any. + - `rendered` - the result view string. + - `config` - the configuration used to render the template. If no `callback` is provided, a `Promise` object is returned. The returned promise is resolved with only the rendered content and not the configuration object. @@ -584,19 +593,19 @@ const server = Hapi.Server({ port: 3000 }); const internals = {}; internals.provision = async () => { - await server.register(require('@hapi/vision')); + await server.register(require('@hapi/vision')); - server.views({ - engines: { html: require('handlebars') }, - path: __dirname + '/templates', - }); + server.views({ + engines: { html: require('handlebars') }, + path: __dirname + '/templates', + }); - const context = { - title: 'Views Example', - message: 'Hello, World', - }; + const context = { + title: 'Views Example', + message: 'Hello, World', + }; - return server.render('hello', context); + return server.render('hello', context); }; internals.provision(); @@ -627,20 +636,20 @@ const server = Hapi.Server({ port: 3000 }); const internals = {}; internals.provision = async () => { - await server.register(require('@hapi/vision')); - - server.views({ - engines: { html: require('handlebars') }, - path: __dirname + '/templates', - }); - - server.route({ - method: 'GET', - path: '/view', - handler: function (request, h) { - return request.render('test', { message: 'hello' }); - }, - }); + await server.register(require('@hapi/vision')); + + server.views({ + engines: { html: require('handlebars') }, + path: __dirname + '/templates', + }); + + server.route({ + method: 'GET', + path: '/view', + handler: function (request, h) { + return request.render('test', { message: 'hello' }); + }, + }); }; internals.provision(); @@ -677,26 +686,26 @@ const server = Hapi.Server({ port: 3000 }); const internals = {}; internals.provision = async () => { - await server.register(require('@hapi/vision')); - - server.views({ - engines: { html: require('handlebars') }, - path: __dirname + '/templates', - }); - - server.route({ - method: 'GET', - path: '/', - handler: { - view: { - template: 'hello', - context: { - title: 'Views Example', - message: 'Hello, World', + await server.register(require('@hapi/vision')); + + server.views({ + engines: { html: require('handlebars') }, + path: __dirname + '/templates', + }); + + server.route({ + method: 'GET', + path: '/', + handler: { + view: { + template: 'hello', + context: { + title: 'Views Example', + message: 'Hello, World', + }, + }, }, - }, - }, - }); + }); }; internals.provision(); @@ -729,23 +738,23 @@ const server = Hapi.Server({ port: 3000 }); const internals = {}; internals.provision = async () => { - await server.register(require('@hapi/vision')); + await server.register(require('@hapi/vision')); - server.views({ - engines: { html: require('handlebars') }, - path: __dirname + '/templates', - }); + server.views({ + engines: { html: require('handlebars') }, + path: __dirname + '/templates', + }); - const rootHandler = function (request, h) { - const context = { - title: 'Views Example', - message: 'Hello, World', - }; + const rootHandler = function (request, h) { + const context = { + title: 'Views Example', + message: 'Hello, World', + }; - return h.view('hello', context); - }; + return h.view('hello', context); + }; - server.route({ method: 'GET', path: '/', handler: rootHandler }); + server.route({ method: 'GET', path: '/', handler: rootHandler }); }; internals.provision(); @@ -761,14 +770,14 @@ Returns the closest [Views manager](#views-manager) to your `realm` (either on y ```html - - {{title}} - - -
    -

    {{message}}

    -
    - + + {{title}} + + +
    +

    {{message}}

    +
    + ``` @@ -778,16 +787,16 @@ If you'd like to type out the way Vision is used, you can do so with the followi ```typescript declare module '@hapi/vision' { - // User defined - type CustomTemplates = 'test' | 'hello' | 'temp1'; + // User defined + type CustomTemplates = 'test' | 'hello' | 'temp1'; - // User defined - type CustomLayout = 'auth' | 'unauth' | 'admin'; + // User defined + type CustomLayout = 'auth' | 'unauth' | 'admin'; - interface ViewTypes { - template: CustomTemplates; - layout: CustomLayout; - } + interface ViewTypes { + template: CustomTemplates; + layout: CustomLayout; + } } ``` @@ -810,26 +819,26 @@ If you'd like to also type check the decorated handlers, you can augment the fol ```typescript declare module '@hapi/vision' { - // User defined - type CustomTemplates = 'test' | 'hello' | 'temp1'; - - // User defined - type CustomLayout = 'auth' | 'unauth' | 'admin'; - - // server.render(...) - interface RenderMethod { - (template: CustomTemplates, context?: string): Promise; - } - - // { handler: (req) => req.render(...) } - interface RequestRenderMethod { - (template: CustomTemplates, context?: string): Promise; - } - - // { handler: (req, h) => h.view(...) } - interface ToolkitRenderMethod { - (template: CustomTemplates, context?: string): ResponseObject; - } + // User defined + type CustomTemplates = 'test' | 'hello' | 'temp1'; + + // User defined + type CustomLayout = 'auth' | 'unauth' | 'admin'; + + // server.render(...) + interface RenderMethod { + (template: CustomTemplates, context?: string): Promise; + } + + // { handler: (req) => req.render(...) } + interface RequestRenderMethod { + (template: CustomTemplates, context?: string): Promise; + } + + // { handler: (req, h) => h.view(...) } + interface ToolkitRenderMethod { + (template: CustomTemplates, context?: string): ResponseObject; + } } ``` @@ -838,8 +847,8 @@ This is useful for when you may want to make strict checks against template / co ```typescript // { handler: (req, h) => h.view(...) } interface ToolkitRenderMethod { - (template: 'test', context: { apples: 5 }): ResponseObject; - (template: 'hello', context: { oranges: true }): ResponseObject; - (template: 'temp1', context: { bananas: 'green' }): ResponseObject; + (template: 'test', context: { apples: 5 }): ResponseObject; + (template: 'hello', context: { oranges: true }): ResponseObject; + (template: 'temp1', context: { bananas: 'green' }): ResponseObject; } ``` diff --git a/generated/markdown/wreck/18/api.md b/generated/markdown/wreck/18/api.md index 183b38ab..89c7ae8a 100644 --- a/generated/markdown/wreck/18/api.md +++ b/generated/markdown/wreck/18/api.md @@ -4,14 +4,14 @@ const Wreck = require('@hapi/wreck'); const example = async function () { - const { res, payload } = await Wreck.get('http://example.com'); - console.log(payload.toString()); + const { res, payload } = await Wreck.get('http://example.com'); + console.log(payload.toString()); }; try { - example(); + example(); } catch (ex) { - console.error(ex); + console.error(ex); } ``` @@ -25,57 +25,57 @@ const uri = '/'; const readableStream = Wreck.toReadableStream('foo=bar'); const wreck = Wreck.defaults({ - headers: { 'x-foo-bar': 123 }, - agents: { - https: new Https.Agent({ maxSockets: 100 }), - http: new Http.Agent({ maxSockets: 1000 }), - httpsAllowUnauthorized: new Https.Agent({ - maxSockets: 100, - rejectUnauthorized: false, - }), - }, + headers: { 'x-foo-bar': 123 }, + agents: { + https: new Https.Agent({ maxSockets: 100 }), + http: new Http.Agent({ maxSockets: 1000 }), + httpsAllowUnauthorized: new Https.Agent({ + maxSockets: 100, + rejectUnauthorized: false, + }), + }, }); // cascading example -- does not alter `wreck` // inherits `headers` and `agents` specified above const wreckWithTimeout = wreck.defaults({ - timeout: 5, + timeout: 5, }); // all attributes are optional const options = { - baseUrl: 'https://www.example.com', - payload: readableStream || 'foo=bar' || Buffer.from('foo=bar'), - headers: { - /* http headers */ - }, - redirects: 3, - beforeRedirect: ( - redirectMethod, - statusCode, - location, - resHeaders, - redirectOptions, - next, - ) => next(), - redirected: function (statusCode, location, req) {}, - timeout: 1000, // 1 second, default: unlimited - maxBytes: 1048576, // 1 MB, default: unlimited - rejectUnauthorized: true || false, - agent: null, // Node Core http.Agent - secureProtocol: 'SSLv3_method', // The SSL method to use - ciphers: 'DES-CBC3-SHA', // The TLS ciphers to support + baseUrl: 'https://www.example.com', + payload: readableStream || 'foo=bar' || Buffer.from('foo=bar'), + headers: { + /* http headers */ + }, + redirects: 3, + beforeRedirect: ( + redirectMethod, + statusCode, + location, + resHeaders, + redirectOptions, + next, + ) => next(), + redirected: function (statusCode, location, req) {}, + timeout: 1000, // 1 second, default: unlimited + maxBytes: 1048576, // 1 MB, default: unlimited + rejectUnauthorized: true || false, + agent: null, // Node Core http.Agent + secureProtocol: 'SSLv3_method', // The SSL method to use + ciphers: 'DES-CBC3-SHA', // The TLS ciphers to support }; const example = async function () { - const promise = wreck.request(method, uri, options); - try { - const res = await promise; - const body = await Wreck.read(res, options); - console.log(body.toString()); - } catch (err) { - // Handle errors - } + const promise = wreck.request(method, uri, options); + try { + const res = await promise; + const body = await Wreck.read(res, options); + console.log(body.toString()); + } catch (err) { + // Handle errors + } }; ``` @@ -87,11 +87,11 @@ If the request was already redirected, aborting the original request will not ab Returns a _new_ instance of Wreck which merges the provided `options` with those provided on a per-request basis. You can call defaults repeatedly to build up multiple clients. - `options` - Config object containing settings for both `request` and `read` operations as well as: - - `agents` - an object that contains the agents for pooling connections with the following required keys: - - `http` - an [HTTP Agent](http://nodejs.org/api/http.html#http_class_http_agent) instance. - - `https` - an [HTTPS Agent](https://nodejs.org/api/https.html#https_class_https_agent) instance. - - `httpsAllowUnauthorized` - an [HTTPS Agent](https://nodejs.org/api/https.html#https_class_https_agent) instance. - - `events` - if `true`, enables events. Events are available via the `events` emitter property. + - `agents` - an object that contains the agents for pooling connections with the following required keys: + - `http` - an [HTTP Agent](http://nodejs.org/api/http.html#http_class_http_agent) instance. + - `https` - an [HTTPS Agent](https://nodejs.org/api/https.html#https_class_https_agent) instance. + - `httpsAllowUnauthorized` - an [HTTPS Agent](https://nodejs.org/api/https.html#https_class_https_agent) instance. + - `events` - if `true`, enables events. Events are available via the `events` emitter property. ### `request(method, uri, [options])` @@ -101,47 +101,47 @@ Initiate an HTTP request. - `uri` - the URI of the requested resource. - `options` - optional configuration object with the following keys: - - `agent` - Node Core [http.Agent](http://nodejs.org/api/http.html#http_class_http_agent). Defaults to either `wreck.agents.http` or `wreck.agents.https`. Setting to `false` disables agent pooling. + - `agent` - Node Core [http.Agent](http://nodejs.org/api/http.html#http_class_http_agent). Defaults to either `wreck.agents.http` or `wreck.agents.https`. Setting to `false` disables agent pooling. - - `baseUrl` - fully qualified URL string used as the base URL. Most useful with `Wreck.defaults()` when making multiple requests to the same domain. For example, if `baseUrl` is `https://example.com/api/`, then requesting `/end/point?test=true` will fetch `https://example.com/end/point?test=true`. Any query string in the `baseUrl` will be overwritten with the query string in the `uri` When `baseUrl` is given, `uri` must also be a string. In order to retain the `/api/` portion of the `baseUrl` in the example, the `path` must not start with a leading `/` and the `baseUrl` must end with a trailing `/`. + - `baseUrl` - fully qualified URL string used as the base URL. Most useful with `Wreck.defaults()` when making multiple requests to the same domain. For example, if `baseUrl` is `https://example.com/api/`, then requesting `/end/point?test=true` will fetch `https://example.com/end/point?test=true`. Any query string in the `baseUrl` will be overwritten with the query string in the `uri` When `baseUrl` is given, `uri` must also be a string. In order to retain the `/api/` portion of the `baseUrl` in the example, the `path` must not start with a leading `/` and the `baseUrl` must end with a trailing `/`. - - `beforeRedirect` - a function to call before a redirect is triggered, using the signature `async function(redirectMethod, statusCode, location, resHeaders, redirectOptions, next)` where: - - `redirectMethod` - A string specifying the redirect method. - - `statusCode` - HTTP status code of the response that triggered the redirect. - - `location` - The redirect location string. - - `resHeaders` - An object with the headers received as part of the redirection response. - - `redirectOptions` - Options that will be applied to the redirect request. Changes to this object are applied to the redirection request. - - `next` - the callback function called to perform the redirection using signature `function(err)`. Passing an error into callback will stop the redirect request. - - `ciphers` - [TLS](https://nodejs.org/api/tls.html#tls_modifying_the_default_tls_cipher_suite) list of TLS ciphers to override node's default. The possible values depend on your installation of OpenSSL. Read the official OpenSSL docs for possible [TLS_CIPHERS](https://www.openssl.org/docs/man1.0.2/apps/ciphers.html#CIPHER-LIST-FORMAT). + - `beforeRedirect` - a function to call before a redirect is triggered, using the signature `async function(redirectMethod, statusCode, location, resHeaders, redirectOptions, next)` where: + - `redirectMethod` - A string specifying the redirect method. + - `statusCode` - HTTP status code of the response that triggered the redirect. + - `location` - The redirect location string. + - `resHeaders` - An object with the headers received as part of the redirection response. + - `redirectOptions` - Options that will be applied to the redirect request. Changes to this object are applied to the redirection request. + - `next` - the callback function called to perform the redirection using signature `function(err)`. Passing an error into callback will stop the redirect request. + - `ciphers` - [TLS](https://nodejs.org/api/tls.html#tls_modifying_the_default_tls_cipher_suite) list of TLS ciphers to override node's default. The possible values depend on your installation of OpenSSL. Read the official OpenSSL docs for possible [TLS_CIPHERS](https://www.openssl.org/docs/man1.0.2/apps/ciphers.html#CIPHER-LIST-FORMAT). - - `headers` - an object containing the request headers. + - `headers` - an object containing the request headers. - - `payload` - the request body as a string, Buffer, readable stream, or an object that can be serialized using `JSON.stringify()`. + - `payload` - the request body as a string, Buffer, readable stream, or an object that can be serialized using `JSON.stringify()`. - - `redirect303` - if `true`, a HTTP 303 status code will redirect using a GET method. Defaults to `false` (no redirection on 303). + - `redirect303` - if `true`, a HTTP 303 status code will redirect using a GET method. Defaults to `false` (no redirection on 303). - - `redirected` - a function to call when a redirect was triggered, using the signature `function(statusCode, location, req)` where: - - `statusCode` - HTTP status code of the response that triggered the redirect. - - `location` - The redirected location string. - - `req` - The new [ClientRequest](http://nodejs.org/api/http.html#http_class_http_clientrequest) object which replaces the one initially returned. + - `redirected` - a function to call when a redirect was triggered, using the signature `function(statusCode, location, req)` where: + - `statusCode` - HTTP status code of the response that triggered the redirect. + - `location` - The redirected location string. + - `req` - The new [ClientRequest](http://nodejs.org/api/http.html#http_class_http_clientrequest) object which replaces the one initially returned. - - `redirectMethod` - override the HTTP method used when following 301 and 302 redirections. Defaults to the original method. + - `redirectMethod` - override the HTTP method used when following 301 and 302 redirections. Defaults to the original method. - - `redirects` - the maximum number of redirects to follow. Default to `false` (no redirects). + - `redirects` - the maximum number of redirects to follow. Default to `false` (no redirects). - - `rejectUnauthorized` - [TLS](http://nodejs.org/api/tls.html) flag indicating whether the client should reject a response from a server with invalid certificates. This cannot be set at the same time as the `agent` option is set. + - `rejectUnauthorized` - [TLS](http://nodejs.org/api/tls.html) flag indicating whether the client should reject a response from a server with invalid certificates. This cannot be set at the same time as the `agent` option is set. - - `secureProtocol` - [TLS](http://nodejs.org/api/tls.html) flag indicating the SSL method to use, e.g. `SSLv3_method` to force SSL version 3. The possible values depend on your installation of OpenSSL. Read the official OpenSSL docs for possible [SSL_METHODS](http://www.openssl.org/docs/ssl/ssl.html#DEALING_WITH_PROTOCOL_METHODS). + - `secureProtocol` - [TLS](http://nodejs.org/api/tls.html) flag indicating the SSL method to use, e.g. `SSLv3_method` to force SSL version 3. The possible values depend on your installation of OpenSSL. Read the official OpenSSL docs for possible [SSL_METHODS](http://www.openssl.org/docs/ssl/ssl.html#DEALING_WITH_PROTOCOL_METHODS). - - `socketPath` - a UNIX socket path string for direct server connection. + - `socketPath` - a UNIX socket path string for direct server connection. - - `timeout` - number of milliseconds to wait without receiving a response before aborting the request. Defaults to `0` (no limit). + - `timeout` - number of milliseconds to wait without receiving a response before aborting the request. Defaults to `0` (no limit). - - `lookup` - DNS lookup function. see [http.request(url[,options][,callback])](https://nodejs.org/api/http.html#httprequestoptions-callback). Defaults to [dns.lookup()](https://nodejs.org/api/dns.html#dnslookuphostname-options-callback). + - `lookup` - DNS lookup function. see [http.request(url[,options][,callback])](https://nodejs.org/api/http.html#httprequestoptions-callback). Defaults to [dns.lookup()](https://nodejs.org/api/dns.html#dnslookuphostname-options-callback). - - `family` - IP address family to use when resolving `host` or `hostname`. Valid values are `4` or `6`. When unspecified, both IP v4 and v6 will be used. + - `family` - IP address family to use when resolving `host` or `hostname`. Valid values are `4` or `6`. When unspecified, both IP v4 and v6 will be used. - - `hints` - Optional `dns.lookup()` hints. + - `hints` - Optional `dns.lookup()` hints. Returns a promise that resolves into a node response object. The promise has a `req` property which is the instance of the node.js [ClientRequest](http://nodejs.org/api/http.html#http_class_http_clientrequest) object. @@ -149,20 +149,20 @@ Returns a promise that resolves into a node response object. The promise has a ` - `response` - An HTTP Incoming Message object. - `options` - `null` or a configuration object with the following optional keys: - - `gunzip` - determines how to handle gzipped payloads. Defaults to `false`. - - `true` - only try to gunzip if the response indicates a gzip content-encoding. - - `false` - explicitly disable gunzipping. - - `force` - try to gunzip regardless of the content-encoding header. + - `gunzip` - determines how to handle gzipped payloads. Defaults to `false`. + - `true` - only try to gunzip if the response indicates a gzip content-encoding. + - `false` - explicitly disable gunzipping. + - `force` - try to gunzip regardless of the content-encoding header. - - `json` - determines how to parse the payload as JSON: - - `false` - leaves payload raw. This is the default value. - - `true` - only try `JSON.parse` if the response indicates a JSON content-type. - - `'strict'` - as `true`, except returns an error for non-JSON content-type. - - `'force'` - try `JSON.parse` regardless of the content-type header. + - `json` - determines how to parse the payload as JSON: + - `false` - leaves payload raw. This is the default value. + - `true` - only try `JSON.parse` if the response indicates a JSON content-type. + - `'strict'` - as `true`, except returns an error for non-JSON content-type. + - `'force'` - try `JSON.parse` regardless of the content-type header. - - `maxBytes` - the maximum allowed response payload size. Defaults to `0` (no limit). + - `maxBytes` - the maximum allowed response payload size. Defaults to `0` (no limit). - - `timeout` - the number of milliseconds to wait while reading data before aborting handling of the response. Defaults to `0`. + - `timeout` - the number of milliseconds to wait while reading data before aborting handling of the response. Defaults to `0`. Returns a promise that resolves into the payload in the form of a Buffer or (optionally) parsed JavaScript object (JSON). @@ -339,9 +339,9 @@ const HTTPS = require('https'); const Wreck = require('@hapi/wreck'); Wreck.agents.https = new HTTPS.Agent({ - cert, - key, - ca, + cert, + key, + ca, }); ``` @@ -378,11 +378,11 @@ handler should accept the following arguments `(err, details)` where: - `err` - a Boom error - `details` - object with the following properties - - `req` - the raw `ClientHttp` request object - - `res` - the raw `IncomingMessage` response object - - `start` - the time that the request was initiated - - `uri` - the result of `new URL(uri)`. This will provide information about - the resource requested. Also includes the headers and method. + - `req` - the raw `ClientHttp` request object + - `res` - the raw `IncomingMessage` response object + - `start` - the time that the request was initiated + - `uri` - the result of `new URL(uri)`. This will provide information about + the resource requested. Also includes the headers and method. This event is useful for logging all requests that go through _wreck_. The `err` and `res` arguments can be undefined depending on if an error occurs. Please diff --git a/generated/markdown/wreck/changelog.md b/generated/markdown/wreck/changelog.md index 14ff7de1..bf8251e1 100644 --- a/generated/markdown/wreck/changelog.md +++ b/generated/markdown/wreck/changelog.md @@ -1,5 +1,13 @@ ## Version 18 {#v18} +### [18.1.2](https://github.com/hapijs/wreck/milestone/80) {#18.1.2} + +- [#313](https://github.com/hapijs/wreck/pull/313) fix: cross-origin redirect should also remove sensitive headers + +### [18.1.1](https://github.com/hapijs/wreck/milestone/79) {#18.1.1} + +- [#312](https://github.com/hapijs/wreck/pull/312) fix: strip proxy-authorization header on redirect + ### [18.1.0](https://github.com/hapijs/wreck/milestone/78) {#18.1.0} - [#309](https://github.com/hapijs/wreck/issues/309) support custom lookup function in request() diff --git a/generated/markdown/yar/11/api.md b/generated/markdown/yar/11/api.md index e02d0694..d95a916f 100644 --- a/generated/markdown/yar/11/api.md +++ b/generated/markdown/yar/11/api.md @@ -15,14 +15,14 @@ For example, the first handler sets a session key and the second gets it: ```js let handler1 = (request, reply) => { - request.yar.set('example', { key: 'value' }); + request.yar.set('example', { key: 'value' }); - return null; + return null; }; let handler2 = (request, reply) => { - const example = request.yar.get('example'); - return example.key; // Will send back 'value' + const example = request.yar.get('example'); + return example.key; // Will send back 'value' }; ``` @@ -30,11 +30,11 @@ The plugin requires a password for encryption that must be at least 32 character ```js let options = { - storeBlank: false, - cookieOptions: { - password: 'the-password-must-be-at-least-32-characters-long', - isSecure: true, - }, + storeBlank: false, + cookieOptions: { + password: 'the-password-must-be-at-least-32-characters-long', + isSecure: true, + }, }; /* Please note that there are other default cookie options that can impact your security. @@ -45,12 +45,12 @@ what you expect. const server = new Hapi.Server(); try { - await server.register({ - plugin: require('@hapi/yar'), - options: options, - }); + await server.register({ + plugin: require('@hapi/yar'), + options: options, + }); } catch (err) { - console.error(err); + console.error(err); } await server.start(); @@ -99,19 +99,19 @@ You may turn this off, `false`, and try to use the hapi route state config optio - `errorOnCacheNotReady` - will cause yar to throw an exception if trying to persist to cache when the cache is unavailable. Setting this to false will allow applications using yar to run uninterrupted if the cache is not ready (however sessions will not be saving). Defaults to _true_. - `cache` - **hapi** [cache options]() which includes (among other options): - - `expiresIn` - server-side storage expiration (defaults to 1 day). + - `expiresIn` - server-side storage expiration (defaults to 1 day). - `cookieOptions` - the configuration for cookie-specific features: - - `password` - (Required) used to encrypt and sign the cookie data. - - `path` - determines the cookie path. Defaults to _'/'_. - - `isSameSite` - enables the `same-site` cookie parameter. Default to 'Lax'. Can be `'Strict'|'Lax'|'None'|false`. - - `isSecure` - determines whether or not to transfer using TLS/SSL. Defaults to _true_. - - `isHttpOnly` - determines whether or not to set HttpOnly option in cookie. Defaults to _false_. - - `ttl` - sets the time for the cookie to live in the browser, in milliseconds. Defaults to null (session time-life - cookies are deleted when the browser is closed). - - `contextualize` - a function using the signature `async function(definition, request)` used to override a request-specific cookie settings where: - - `definition` - a copy of the `options` to be used for formatting the cookie that can be manipulated by the function to customize the request cookie header. Note that changing the `definition.contextualize` property will be ignored. - - `request` - the current request object. + - `password` - (Required) used to encrypt and sign the cookie data. + - `path` - determines the cookie path. Defaults to _'/'_. + - `isSameSite` - enables the `same-site` cookie parameter. Default to 'Lax'. Can be `'Strict'|'Lax'|'None'|false`. + - `isSecure` - determines whether or not to transfer using TLS/SSL. Defaults to _true_. + - `isHttpOnly` - determines whether or not to set HttpOnly option in cookie. Defaults to _false_. + - `ttl` - sets the time for the cookie to live in the browser, in milliseconds. Defaults to null (session time-life - cookies are deleted when the browser is closed). + - `contextualize` - a function using the signature `async function(definition, request)` used to override a request-specific cookie settings where: + - `definition` - a copy of the `options` to be used for formatting the cookie that can be manipulated by the function to customize the request cookie header. Note that changing the `definition.contextualize` property will be ignored. + - `request` - the current request object. - `customSessionIDGenerator` - an optional function to create custom session IDs. Must return a string and have the signature `function (request)` where: - - `request` - (optional) is the original **request** received from the client. + - `request` - (optional) is the original **request** received from the client. ### Route Options diff --git a/generated/metadata/modules.json b/generated/metadata/modules.json index a0e4c69c..165b9cad 100644 --- a/generated/metadata/modules.json +++ b/generated/metadata/modules.json @@ -1,1038 +1,1058 @@ { - "accept": { - "forks": 30, - "isPlugin": false, - "link": "https://github.com/hapijs/accept", - "package": "@hapi/accept", - "slogan": "HTTP Accept-* headers parsing.", - "sloganHtml": "HTTP Accept-* headers parsing.", - "stars": 55, - "updated": "2024-10-23T14:51:04Z", - "versions": [ - { - "branch": "v6.0.3", - "license": "BSD", - "name": "6.0.3", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.3"], - "latestVersion": "6.x.x" - }, - "ammo": { - "forks": 9, - "isPlugin": false, - "link": "https://github.com/hapijs/ammo", - "package": "@hapi/ammo", - "slogan": "HTTP Range processing utilities.", - "sloganHtml": "HTTP Range processing utilities.", - "stars": 1, - "updated": "2024-10-23T15:38:18Z", - "versions": [ - { - "branch": "v6.0.1", - "license": "BSD", - "name": "6.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.1"], - "latestVersion": "6.x.x" - }, - "b64": { - "forks": 12, - "isPlugin": false, - "link": "https://github.com/hapijs/b64", - "package": "@hapi/b64", - "slogan": "Base64 streaming encoder and decoder.", - "sloganHtml": "Base64 streaming encoder and decoder.", - "stars": 42, - "updated": "2024-10-23T15:42:49Z", - "versions": [ - { - "branch": "v6.0.1", - "license": "BSD", - "name": "6.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.1"], - "latestVersion": "6.x.x" - }, - "basic": { - "forks": 64, - "isPlugin": true, - "link": "https://github.com/hapijs/basic", - "package": "@hapi/basic", - "slogan": "Basic authentication plugin.", - "sloganHtml": "Basic authentication plugin.", - "stars": 146, - "updated": "2024-10-23T14:42:22Z", - "versions": [ - { - "branch": "v7.0.2", - "license": "BSD", - "name": "7.0.2", - "node": ">= 16" - } - ], - "versionsArray": ["7.0.2"], - "latestVersion": "7.x.x" - }, - "bell": { - "forks": 210, - "isPlugin": true, - "link": "https://github.com/hapijs/bell", - "package": "@hapi/bell", - "slogan": "Third-party login plugin for hapi.js.", - "sloganHtml": "Third-party login plugin for hapi.js.", - "stars": 620, - "updated": "2025-03-12T12:09:23Z", - "versions": [ - { - "branch": "v13.1.0", - "license": "BSD", - "name": "13.1.0", - "node": ">= 16" - } - ], - "versionsArray": ["13.1.0"], - "latestVersion": "13.x.x" - }, - "boom": { - "forks": 191, - "isPlugin": false, - "link": "https://github.com/hapijs/boom", - "package": "@hapi/boom", - "slogan": "HTTP-friendly error objects.", - "sloganHtml": "HTTP-friendly error objects.", - "stars": 2925, - "updated": "2024-10-23T14:38:54Z", - "versions": [ - { - "branch": "v10.0.1", - "license": "BSD", - "name": "10.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["10.0.1"], - "latestVersion": "10.x.x" - }, - "bossy": { - "forks": 30, - "isPlugin": false, - "link": "https://github.com/hapijs/bossy", - "package": "@hapi/bossy", - "slogan": "Command line options parser.", - "sloganHtml": "Command line options parser.", - "stars": 46, - "updated": "2024-10-23T15:40:09Z", - "versions": [ - { - "branch": "v5.1.1", - "license": "BSD", - "name": "5.1.1", - "node": ">= 16" - }, - { - "branch": "v6.0.1", - "license": "BSD", - "name": "6.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.1", "5.1.1"], - "latestVersion": "6.x.x" - }, - "bounce": { - "forks": 13, - "isPlugin": false, - "link": "https://github.com/hapijs/bounce", - "package": "@hapi/bounce", - "slogan": "Selective error catching and rewrite rules.", - "sloganHtml": "Selective error catching and rewrite rules.", - "stars": 176, - "updated": "2024-10-23T15:47:48Z", - "versions": [ - { - "branch": "v3.0.2", - "license": "BSD", - "name": "3.0.2", - "node": ">= 16" - } - ], - "versionsArray": ["3.0.2"], - "latestVersion": "3.x.x" - }, - "bourne": { - "forks": 11, - "isPlugin": false, - "link": "https://github.com/hapijs/bourne", - "package": "@hapi/bourne", - "slogan": "JSON.parse() drop-in replacement with prototype poisoning protection.", - "sloganHtml": "JSON.parse() drop-in replacement with prototype poisoning protection.", - "stars": 179, - "updated": "2024-10-23T15:09:24Z", - "versions": [ - { - "branch": "v3.0.0", - "license": "BSD", - "name": "3.0.0", - "node": ">= 16" - } - ], - "versionsArray": ["3.0.0"], - "latestVersion": "3.x.x" - }, - "call": { - "forks": 27, - "isPlugin": false, - "link": "https://github.com/hapijs/call", - "package": "@hapi/call", - "slogan": "Simple HTTP Router.", - "sloganHtml": "Simple HTTP Router.", - "stars": 37, - "updated": "2024-10-23T15:38:49Z", - "versions": [ - { - "branch": "v9.0.1", - "license": "BSD", - "name": "9.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["9.0.1"], - "latestVersion": "9.x.x" - }, - "catbox": { - "forks": 72, - "isPlugin": false, - "link": "https://github.com/hapijs/catbox", - "package": "@hapi/catbox", - "slogan": "Multi-strategy object caching service.", - "sloganHtml": "Multi-strategy object caching service.", - "stars": 494, - "updated": "2024-10-23T15:27:54Z", - "versions": [ - { - "branch": "v12.1.1", - "license": "BSD", - "name": "12.1.1", - "node": ">= 16" - } - ], - "versionsArray": ["12.1.1"], - "latestVersion": "12.x.x" - }, - "catbox-memcached": { - "forks": 17, - "isPlugin": false, - "link": "https://github.com/hapijs/catbox-memcached", - "package": "@hapi/catbox-memcached", - "slogan": "Memcached adaptor for [catbox](https://github.com/hapijs/catbox).", - "sloganHtml": "Memcached adaptor for catbox.", - "stars": 11, - "updated": "2022-11-06T04:05:12Z", - "versions": [ - { - "branch": "v4.0.0", - "license": "BSD", - "name": "4.0.0", - "node": ">= 16" - } - ], - "versionsArray": ["4.0.0"], - "latestVersion": "4.x.x" - }, - "catbox-memory": { - "forks": 29, - "isPlugin": false, - "link": "https://github.com/hapijs/catbox-memory", - "package": "@hapi/catbox-memory", - "slogan": "Memory adaptor for [catbox](https://github.com/hapijs/catbox).", - "sloganHtml": "Memory adaptor for catbox.", - "stars": 33, - "updated": "2024-10-23T15:27:21Z", - "versions": [ - { - "branch": "v6.0.2", - "license": "BSD", - "name": "6.0.2", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.2"], - "latestVersion": "6.x.x" - }, - "catbox-object": { - "forks": 6, - "isPlugin": false, - "link": "https://github.com/hapijs/catbox-object", - "package": "@hapi/catbox-object", - "slogan": "Object cache adaptor for [catbox](https://github.com/hapijs/catbox).", - "sloganHtml": "Object cache adaptor for catbox.", - "stars": 2, - "updated": "2024-10-23T15:26:43Z", - "versions": [ - { - "branch": "v3.0.1", - "license": "BSD", - "name": "3.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["3.0.1"], - "latestVersion": "3.x.x" - }, - "catbox-redis": { - "forks": 62, - "isPlugin": true, - "link": "https://github.com/hapijs/catbox-redis", - "package": "@hapi/catbox-redis", - "slogan": "Redis adapter for [catbox](https://github.com/hapijs/catbox).", - "sloganHtml": "Redis adapter for catbox.", - "stars": 70, - "updated": "2024-10-23T15:26:12Z", - "versions": [ - { - "branch": "v7.0.2", - "license": "BSD", - "name": "7.0.2", - "node": ">= 16" - } - ], - "versionsArray": ["7.0.2"], - "latestVersion": "7.x.x" - }, - "code": { - "forks": 73, - "isPlugin": false, - "link": "https://github.com/hapijs/code", - "package": "@hapi/code", - "slogan": "BDD assertion library.", - "sloganHtml": "BDD assertion library.", - "stars": 231, - "updated": "2024-10-23T15:37:52Z", - "versions": [ - { - "branch": "v9.0.3", - "license": "BSD", - "name": "9.0.3", - "node": ">= 16" - } - ], - "versionsArray": ["9.0.3"], - "latestVersion": "9.x.x" - }, - "content": { - "forks": 13, - "isPlugin": false, - "link": "https://github.com/hapijs/content", - "package": "@hapi/content", - "slogan": "HTTP Content-* headers parsing.", - "sloganHtml": "HTTP Content-* headers parsing.", - "stars": 7, - "updated": "2026-04-02T08:04:34Z", - "versions": [ - { - "branch": "v6.0.1", - "license": "BSD", - "name": "6.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.1"], - "latestVersion": "6.x.x" - }, - "cookie": { - "forks": 98, - "isPlugin": true, - "link": "https://github.com/hapijs/cookie", - "package": "@hapi/cookie", - "slogan": "Cookie authentication plugin.", - "sloganHtml": "Cookie authentication plugin.", - "stars": 229, - "updated": "2024-10-23T15:43:20Z", - "versions": [ - { - "branch": "v12.0.1", - "license": "BSD", - "name": "12.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["12.0.1"], - "latestVersion": "12.x.x" - }, - "crumb": { - "forks": 48, - "isPlugin": true, - "link": "https://github.com/hapijs/crumb", - "package": "@hapi/crumb", - "slogan": "CSRF crumb generation and validation for hapi.", - "sloganHtml": "CSRF crumb generation and validation for hapi.", - "stars": 170, - "updated": "2024-10-23T15:29:18Z", - "versions": [ - { - "branch": "v9.0.1", - "license": "BSD", - "name": "9.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["9.0.1"], - "latestVersion": "9.x.x" - }, - "cryptiles": { - "forks": 25, - "isPlugin": false, - "link": "https://github.com/hapijs/cryptiles", - "package": "@hapi/cryptiles", - "slogan": "General purpose crypto utilities.", - "sloganHtml": "General purpose crypto utilities.", - "stars": 183, - "updated": "2025-12-11T11:38:33Z", - "versions": [ - { - "branch": "v6.0.3", - "license": "BSD", - "name": "6.0.3", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.3"], - "latestVersion": "6.x.x" - }, - "eslint-plugin": { - "forks": 10, - "isPlugin": false, - "link": "https://github.com/hapijs/eslint-plugin", - "package": "@hapi/eslint-plugin", - "slogan": "ESLint plugin containing hapi style guide rules and config.", - "sloganHtml": "ESLint plugin containing hapi style guide rules and config.", - "stars": 22, - "updated": "2026-04-01T09:41:45Z", - "versions": [ - { - "branch": "v6.0.0", - "license": "BSD", - "name": "6.0.0", - "node": ">= 16" - }, - { - "branch": "v7.0.0", - "license": "BSD", - "name": "7.0.0", - "node": ">= 16" - } - ], - "versionsArray": ["7.0.0", "6.0.0"], - "latestVersion": "7.x.x" - }, - "file": { - "forks": 6, - "isPlugin": false, - "link": "https://github.com/hapijs/file", - "package": "@hapi/file", - "slogan": "General purpose file utilities.", - "sloganHtml": "General purpose file utilities.", - "stars": 5, - "updated": "2022-05-30T23:06:24Z", - "versions": [ - { - "branch": "v3.0.0", - "license": "BSD", - "name": "3.0.0", - "node": ">= 16" - } - ], - "versionsArray": ["3.0.0"], - "latestVersion": "3.x.x" - }, - "glue": { - "forks": 60, - "isPlugin": false, - "link": "https://github.com/hapijs/glue", - "package": "@hapi/glue", - "slogan": "Server composer for hapi.js.", - "sloganHtml": "Server composer for hapi.js.", - "stars": 244, - "updated": "2024-10-23T15:39:45Z", - "versions": [ - { - "branch": "v9.0.1", - "license": "BSD", - "name": "9.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["9.0.1"], - "latestVersion": "9.x.x" - }, - "h2o2": { - "forks": 61, - "isPlugin": true, - "link": "https://github.com/hapijs/h2o2", - "package": "@hapi/h2o2", - "slogan": "Proxy handler for hapi.js.", - "sloganHtml": "Proxy handler for hapi.js.", - "stars": 164, - "updated": "2024-10-23T15:12:00Z", - "versions": [ - { - "branch": "v10.0.4", - "license": "BSD", - "name": "10.0.4", - "node": ">= 16" - } - ], - "versionsArray": ["10.0.4"], - "latestVersion": "10.x.x" - }, - "hapi": { - "forks": 1346, - "isPlugin": false, - "link": "https://github.com/hapijs/hapi", - "package": "@hapi/hapi", - "slogan": "The Simple, Secure Framework Developers Trust", - "sloganHtml": "The Simple, Secure Framework Developers Trust", - "stars": 14782, - "updated": "2026-04-02T08:28:56Z", - "versions": [ - { - "branch": "v20.3.0", - "license": "BSD", - "name": "20.3.0", - "node": ">= 16" - }, - { - "branch": "v21.4.8", - "license": "BSD", - "name": "21.4.8", - "node": ">= 16" - } - ], - "versionsArray": ["21.4.8", "20.3.0"], - "latestVersion": "21.x.x" - }, - "heavy": { - "forks": 15, - "isPlugin": false, - "link": "https://github.com/hapijs/heavy", - "package": "@hapi/heavy", - "slogan": "Measure process load.", - "sloganHtml": "Measure process load.", - "stars": 75, - "updated": "2024-10-23T14:51:56Z", - "versions": [ - { - "branch": "v8.0.1", - "license": "BSD", - "name": "8.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["8.0.1"], - "latestVersion": "8.x.x" - }, - "hoek": { - "forks": 179, - "isPlugin": false, - "link": "https://github.com/hapijs/hoek", - "package": "@hapi/hoek", - "slogan": "Utility methods for the hapi ecosystem.", - "sloganHtml": "Utility methods for the hapi ecosystem.", - "stars": 484, - "updated": "2026-02-25T07:24:45Z", - "versions": [ - { - "branch": "v11.0.7", - "license": "BSD", - "name": "11.0.7", - "node": ">= 16" - } - ], - "versionsArray": ["11.0.7"], - "latestVersion": "11.x.x" - }, - "inert": { - "forks": 49, - "isPlugin": true, - "link": "https://github.com/hapijs/inert", - "package": "@hapi/inert", - "slogan": "Static file and directory handlers for hapi.js.", - "sloganHtml": "Static file and directory handlers for hapi.js.", - "stars": 236, - "updated": "2024-10-23T15:13:24Z", - "versions": [ - { - "branch": "v7.1.0", - "license": "BSD", - "name": "7.1.0", - "node": ">= 16" - } - ], - "versionsArray": ["7.1.0"], - "latestVersion": "7.x.x" - }, - "iron": { - "forks": 53, - "isPlugin": false, - "link": "https://github.com/hapijs/iron", - "package": "@hapi/iron", - "slogan": "Encapsulated tokens (encrypted and mac'ed objects).", - "sloganHtml": "Encapsulated tokens (encrypted and mac'ed objects).", - "stars": 631, - "updated": "2024-10-23T15:37:19Z", - "versions": [ - { - "branch": "v7.0.1", - "license": "BSD", - "name": "7.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["7.0.1"], - "latestVersion": "7.x.x" - }, - "jwt": { - "forks": 25, - "isPlugin": true, - "link": "https://github.com/hapijs/jwt", - "package": "@hapi/jwt", - "slogan": "JWT (JSON Web Token) Authentication.", - "sloganHtml": "JWT (JSON Web Token) Authentication.", - "stars": 35, - "updated": "2025-12-11T11:42:47Z", - "versions": [ - { - "branch": "v3.2.3", - "license": "BSD", - "name": "3.2.3", - "node": ">= 16" - } - ], - "versionsArray": ["3.2.3"], - "latestVersion": "3.x.x" - }, - "lab": { - "forks": 177, - "isPlugin": false, - "link": "https://github.com/hapijs/lab", - "package": "@hapi/lab", - "slogan": "Node test utility.", - "sloganHtml": "Node test utility.", - "stars": 738, - "updated": "2026-03-26T19:23:31Z", - "versions": [ - { - "branch": "v25.3.2", - "license": "BSD", - "name": "25.3.2", - "node": ">= 16" - }, - { - "branch": "v26.0.1", - "license": "BSD", - "name": "26.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["26.0.1", "25.3.2"], - "latestVersion": "26.x.x" - }, - "log": { - "forks": 5, - "isPlugin": true, - "link": "https://github.com/hapijs/log", - "package": "@hapi/log", - "slogan": "Logging for hapi framework.", - "sloganHtml": "Logging for hapi framework.", - "stars": 6, - "updated": "2024-10-23T15:40:54Z", - "versions": [ - { - "branch": "v2.0.1", - "license": "BSD", - "name": "2.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["2.0.1"], - "latestVersion": "2.x.x" - }, - "mimos": { - "forks": 13, - "isPlugin": false, - "link": "https://github.com/hapijs/mimos", - "package": "@hapi/mimos", - "slogan": "Mime database interface.", - "sloganHtml": "Mime database interface.", - "stars": 20, - "updated": "2024-10-23T21:34:46Z", - "versions": [ - { - "branch": "v7.0.1", - "license": "BSD", - "name": "7.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["7.0.1"], - "latestVersion": "7.x.x" - }, - "nes": { - "forks": 86, - "isPlugin": true, - "link": "https://github.com/hapijs/nes", - "package": "@hapi/nes", - "slogan": "WebSocket adapter plugin for hapi routes.", - "sloganHtml": "WebSocket adapter plugin for hapi routes.", - "stars": 501, - "updated": "2025-01-08T21:42:46Z", - "versions": [ - { - "branch": "v13.0.1", - "license": "BSD", - "name": "13.0.1", - "node": ">= 16" - }, - { - "branch": "v14.0.1", - "license": "BSD", - "name": "14.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["14.0.1", "13.0.1"], - "latestVersion": "14.x.x" - }, - "nigel": { - "forks": 10, - "isPlugin": false, - "link": "https://github.com/hapijs/nigel", - "package": "@hapi/nigel", - "slogan": "Boyer-Moore-Horspool algorithms", - "sloganHtml": "Boyer-Moore-Horspool algorithms", - "stars": 16, - "updated": "2025-08-24T14:33:19Z", - "versions": [ - { - "branch": "v5.0.1", - "license": "BSD", - "name": "5.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["5.0.1"], - "latestVersion": "5.x.x" - }, - "oppsy": { - "forks": 19, - "isPlugin": false, - "link": "https://github.com/hapijs/oppsy", - "package": "@hapi/oppsy", - "slogan": "An EventEmitter useful for collecting hapi server ops information.", - "sloganHtml": "An EventEmitter useful for collecting hapi server ops information.", - "stars": 25, - "updated": "2024-10-23T14:52:58Z", - "versions": [ - { - "branch": "v3.0.0", - "license": "BSD", - "name": "3.0.0", - "node": ">= 16" - } - ], - "versionsArray": ["3.0.0"], - "latestVersion": "3.x.x" - }, - "pez": { - "forks": 18, - "isPlugin": false, - "link": "https://github.com/hapijs/pez", - "package": "@hapi/pez", - "slogan": "Multipart parser.", - "sloganHtml": "Multipart parser.", - "stars": 34, - "updated": "2026-04-02T08:12:22Z", - "versions": [ - { - "branch": "v6.1.1", - "license": "BSD", - "name": "6.1.1", - "node": ">= 16" - } - ], - "versionsArray": ["6.1.1"], - "latestVersion": "6.x.x" - }, - "podium": { - "forks": 21, - "isPlugin": false, - "link": "https://github.com/hapijs/podium", - "package": "@hapi/podium", - "slogan": "Event emitter with async features.", - "sloganHtml": "Event emitter with async features.", - "stars": 86, - "updated": "2025-01-07T22:49:33Z", - "versions": [ - { - "branch": "v5.0.2", - "license": "BSD", - "name": "5.0.2", - "node": ">= 16" - } - ], - "versionsArray": ["5.0.2"], - "latestVersion": "5.x.x" - }, - "scooter": { - "forks": 24, - "isPlugin": true, - "link": "https://github.com/hapijs/scooter", - "package": "@hapi/scooter", - "slogan": "User-agent information plugin.", - "sloganHtml": "User-agent information plugin.", - "stars": 46, - "updated": "2026-03-23T08:49:02Z", - "versions": [ - { - "branch": "v7.0.0", - "license": "BSD", - "name": "7.0.0", - "node": ">= 16" - }, - { - "branch": "v8.0.0", - "license": "BSD", - "name": "8.0.0", - "node": ">= 16" - } - ], - "versionsArray": ["8.0.0", "7.0.0"], - "latestVersion": "8.x.x" - }, - "shot": { - "forks": 40, - "isPlugin": false, - "link": "https://github.com/hapijs/shot", - "package": "@hapi/shot", - "slogan": "Injects a fake HTTP request/response into your node server logic.", - "sloganHtml": "Injects a fake HTTP request/response into your node server logic.", - "stars": 196, - "updated": "2025-08-13T22:28:35Z", - "versions": [ - { - "branch": "v6.0.2", - "license": "BSD", - "name": "6.0.2", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.2"], - "latestVersion": "6.x.x" - }, - "somever": { - "forks": 10, - "isPlugin": false, - "link": "https://github.com/hapijs/somever", - "package": "@hapi/somever", - "slogan": "Semantic versioning rules parser, compatible with version ranges used in package.json files and the canonical [semver](https://www.npmjs.com/package/semver) module.", - "sloganHtml": "Semantic versioning rules parser, compatible with version ranges used in package.json files and the canonical semver module.", - "stars": 0, - "updated": "2024-10-23T14:45:10Z", - "versions": [ - { - "branch": "v4.1.1", - "license": "BSD", - "name": "4.1.1", - "node": ">= 16" - } - ], - "versionsArray": ["4.1.1"], - "latestVersion": "4.x.x" - }, - "sse": { - "forks": 0, - "isPlugin": true, - "link": "https://github.com/hapijs/sse", - "package": "@hapi/sse", - "slogan": "Server-Sent Events plugin for hapi.", - "sloganHtml": "Server-Sent Events plugin for hapi.", - "stars": 0, - "updated": "2026-04-07T18:44:00Z", - "versions": [ - { - "branch": "v1.0.0", - "license": "BSD", - "name": "1.0.0", - "node": ">= 22" - } - ], - "versionsArray": ["1.0.0"], - "latestVersion": "1.x.x" - }, - "statehood": { - "forks": 26, - "isPlugin": false, - "link": "https://github.com/hapijs/statehood", - "package": "@hapi/statehood", - "slogan": "HTTP State Management Utilities.", - "sloganHtml": "HTTP State Management Utilities.", - "stars": 21, - "updated": "2025-11-06T09:32:35Z", - "versions": [ - { - "branch": "v8.2.1", - "license": "BSD", - "name": "8.2.1", - "node": ">= 16" - } - ], - "versionsArray": ["8.2.1"], - "latestVersion": "8.x.x" - }, - "subtext": { - "forks": 26, - "isPlugin": false, - "link": "https://github.com/hapijs/subtext", - "package": "@hapi/subtext", - "slogan": "HTTP payload parser.", - "sloganHtml": "HTTP payload parser.", - "stars": 24, - "updated": "2026-04-02T08:19:58Z", - "versions": [ - { - "branch": "v8.1.2", - "license": "BSD", - "name": "8.1.2", - "node": ">= 16" - } - ], - "versionsArray": ["8.1.2"], - "latestVersion": "8.x.x" - }, - "teamwork": { - "forks": 13, - "isPlugin": false, - "link": "https://github.com/hapijs/teamwork", - "package": "@hapi/teamwork", - "slogan": "Wait for multiple callbacks", - "sloganHtml": "Wait for multiple callbacks", - "stars": 14, - "updated": "2025-08-21T15:04:16Z", - "versions": [ - { - "branch": "v6.0.1", - "license": "BSD", - "name": "6.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.1"], - "latestVersion": "6.x.x" - }, - "topo": { - "forks": 26, - "isPlugin": false, - "link": "https://github.com/hapijs/topo", - "package": "@hapi/topo", - "slogan": "Topological sorting with grouping support.", - "sloganHtml": "Topological sorting with grouping support.", - "stars": 108, - "updated": "2024-10-23T15:22:31Z", - "versions": [ - { - "branch": "v6.0.2", - "license": "BSD", - "name": "6.0.2", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.2"], - "latestVersion": "6.x.x" - }, - "vise": { - "forks": 12, - "isPlugin": false, - "link": "https://github.com/hapijs/vise", - "package": "@hapi/vise", - "slogan": "Treat multiple buffers as one.", - "sloganHtml": "Treat multiple buffers as one.", - "stars": 7, - "updated": "2024-10-23T15:41:23Z", - "versions": [ - { - "branch": "v5.0.1", - "license": "BSD", - "name": "5.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["5.0.1"], - "latestVersion": "5.x.x" - }, - "vision": { - "forks": 68, - "isPlugin": true, - "link": "https://github.com/hapijs/vision", - "package": "@hapi/vision", - "slogan": "Template rendering support for hapi.js.", - "sloganHtml": "Template rendering support for hapi.js.", - "stars": 198, - "updated": "2024-10-23T21:57:52Z", - "versions": [ - { - "branch": "v7.0.3", - "license": "BSD", - "name": "7.0.3", - "node": ">= 16" - } - ], - "versionsArray": ["7.0.3"], - "latestVersion": "7.x.x" - }, - "wreck": { - "forks": 103, - "isPlugin": false, - "link": "https://github.com/hapijs/wreck", - "package": "@hapi/wreck", - "slogan": "HTTP client utilities.", - "sloganHtml": "HTTP client utilities.", - "stars": 378, - "updated": "2024-04-10T17:35:00Z", - "versions": [ - { - "branch": "v18.1.0", - "license": "BSD", - "name": "18.1.0", - "node": ">= 16" - } - ], - "versionsArray": ["18.1.0"], - "latestVersion": "18.x.x" - }, - "yar": { - "forks": 58, - "isPlugin": true, - "link": "https://github.com/hapijs/yar", - "package": "@hapi/yar", - "slogan": "A hapi session manager.", - "sloganHtml": "A hapi session manager.", - "stars": 133, - "updated": "2025-03-22T11:36:48Z", - "versions": [ - { - "branch": "v11.0.3", - "license": "BSD", - "name": "11.0.3", - "node": ">= 16" - } - ], - "versionsArray": ["11.0.3"], - "latestVersion": "11.x.x" - } + "accept": { + "forks": 29, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/accept", + "package": "@hapi/accept", + "slogan": "HTTP Accept-* headers parsing.", + "sloganHtml": "HTTP Accept-* headers parsing.", + "stars": 55, + "updated": "2024-10-23T14:51:04Z", + "versions": [ + { + "branch": "v6.0.3", + "license": "BSD", + "name": "6.0.3", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.3"] + }, + "ammo": { + "forks": 9, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/ammo", + "package": "@hapi/ammo", + "slogan": "HTTP Range processing utilities.", + "sloganHtml": "HTTP Range processing utilities.", + "stars": 1, + "updated": "2024-10-23T15:38:18Z", + "versions": [ + { + "branch": "v6.0.1", + "license": "BSD", + "name": "6.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.1"] + }, + "b64": { + "forks": 12, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/b64", + "package": "@hapi/b64", + "slogan": "Base64 streaming encoder and decoder.", + "sloganHtml": "Base64 streaming encoder and decoder.", + "stars": 42, + "updated": "2024-10-23T15:42:49Z", + "versions": [ + { + "branch": "v6.0.1", + "license": "BSD", + "name": "6.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.1"] + }, + "basic": { + "forks": 64, + "isPlugin": true, + "latestVersion": "7.x.x", + "link": "https://github.com/hapijs/basic", + "package": "@hapi/basic", + "slogan": "Basic authentication plugin.", + "sloganHtml": "Basic authentication plugin.", + "stars": 146, + "updated": "2024-10-23T14:42:22Z", + "versions": [ + { + "branch": "v7.0.2", + "license": "BSD", + "name": "7.0.2", + "node": ">= 16" + } + ], + "versionsArray": ["7.0.2"] + }, + "bell": { + "forks": 209, + "isPlugin": true, + "latestVersion": "13.x.x", + "link": "https://github.com/hapijs/bell", + "package": "@hapi/bell", + "slogan": "Third-party login plugin for hapi.js.", + "sloganHtml": "Third-party login plugin for hapi.js.", + "stars": 620, + "updated": "2025-03-12T12:09:23Z", + "versions": [ + { + "branch": "v13.1.0", + "license": "BSD", + "name": "13.1.0", + "node": ">= 16" + } + ], + "versionsArray": ["13.1.0"] + }, + "boom": { + "forks": 188, + "isPlugin": false, + "latestVersion": "10.x.x", + "link": "https://github.com/hapijs/boom", + "package": "@hapi/boom", + "slogan": "HTTP-friendly error objects.", + "sloganHtml": "HTTP-friendly error objects.", + "stars": 2923, + "updated": "2024-10-23T14:38:54Z", + "versions": [ + { + "branch": "v10.0.1", + "license": "BSD", + "name": "10.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["10.0.1"] + }, + "bossy": { + "forks": 30, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/bossy", + "package": "@hapi/bossy", + "slogan": "Command line options parser.", + "sloganHtml": "Command line options parser.", + "stars": 46, + "updated": "2024-10-23T15:40:09Z", + "versions": [ + { + "branch": "v5.1.1", + "license": "BSD", + "name": "5.1.1", + "node": ">= 16" + }, + { + "branch": "v6.0.1", + "license": "BSD", + "name": "6.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.1", "5.1.1"] + }, + "bounce": { + "forks": 13, + "isPlugin": false, + "latestVersion": "3.x.x", + "link": "https://github.com/hapijs/bounce", + "package": "@hapi/bounce", + "slogan": "Selective error catching and rewrite rules.", + "sloganHtml": "Selective error catching and rewrite rules.", + "stars": 176, + "updated": "2024-10-23T15:47:48Z", + "versions": [ + { + "branch": "v3.0.2", + "license": "BSD", + "name": "3.0.2", + "node": ">= 16" + } + ], + "versionsArray": ["3.0.2"] + }, + "bourne": { + "forks": 12, + "isPlugin": false, + "latestVersion": "3.x.x", + "link": "https://github.com/hapijs/bourne", + "package": "@hapi/bourne", + "slogan": "JSON.parse() drop-in replacement with prototype poisoning protection.", + "sloganHtml": "JSON.parse() drop-in replacement with prototype poisoning protection.", + "stars": 180, + "updated": "2024-10-23T15:09:24Z", + "versions": [ + { + "branch": "v3.0.0", + "license": "BSD", + "name": "3.0.0", + "node": ">= 16" + } + ], + "versionsArray": ["3.0.0"] + }, + "call": { + "forks": 27, + "isPlugin": false, + "latestVersion": "9.x.x", + "link": "https://github.com/hapijs/call", + "package": "@hapi/call", + "slogan": "Simple HTTP Router.", + "sloganHtml": "Simple HTTP Router.", + "stars": 37, + "updated": "2024-10-23T15:38:49Z", + "versions": [ + { + "branch": "v9.0.1", + "license": "BSD", + "name": "9.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["9.0.1"] + }, + "catbox": { + "forks": 72, + "isPlugin": false, + "latestVersion": "12.x.x", + "link": "https://github.com/hapijs/catbox", + "package": "@hapi/catbox", + "slogan": "Multi-strategy object caching service.", + "sloganHtml": "Multi-strategy object caching service.", + "stars": 494, + "updated": "2024-10-23T15:27:54Z", + "versions": [ + { + "branch": "v12.1.1", + "license": "BSD", + "name": "12.1.1", + "node": ">= 16" + } + ], + "versionsArray": ["12.1.1"] + }, + "catbox-memcached": { + "forks": 17, + "isPlugin": false, + "latestVersion": "4.x.x", + "link": "https://github.com/hapijs/catbox-memcached", + "package": "@hapi/catbox-memcached", + "slogan": "Memcached adaptor for [catbox](https://github.com/hapijs/catbox).", + "sloganHtml": "Memcached adaptor for catbox.", + "stars": 11, + "updated": "2022-11-06T04:05:12Z", + "versions": [ + { + "branch": "v4.0.0", + "license": "BSD", + "name": "4.0.0", + "node": ">= 16" + } + ], + "versionsArray": ["4.0.0"] + }, + "catbox-memory": { + "forks": 29, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/catbox-memory", + "package": "@hapi/catbox-memory", + "slogan": "Memory adaptor for [catbox](https://github.com/hapijs/catbox).", + "sloganHtml": "Memory adaptor for catbox.", + "stars": 33, + "updated": "2024-10-23T15:27:21Z", + "versions": [ + { + "branch": "v6.0.2", + "license": "BSD", + "name": "6.0.2", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.2"] + }, + "catbox-object": { + "forks": 6, + "isPlugin": false, + "latestVersion": "3.x.x", + "link": "https://github.com/hapijs/catbox-object", + "package": "@hapi/catbox-object", + "slogan": "Object cache adaptor for [catbox](https://github.com/hapijs/catbox).", + "sloganHtml": "Object cache adaptor for catbox.", + "stars": 2, + "updated": "2024-10-23T15:26:43Z", + "versions": [ + { + "branch": "v3.0.1", + "license": "BSD", + "name": "3.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["3.0.1"] + }, + "catbox-redis": { + "forks": 62, + "isPlugin": true, + "latestVersion": "7.x.x", + "link": "https://github.com/hapijs/catbox-redis", + "package": "@hapi/catbox-redis", + "slogan": "Redis adapter for [catbox](https://github.com/hapijs/catbox).", + "sloganHtml": "Redis adapter for catbox.", + "stars": 70, + "updated": "2024-10-23T15:26:12Z", + "versions": [ + { + "branch": "v7.0.2", + "license": "BSD", + "name": "7.0.2", + "node": ">= 16" + } + ], + "versionsArray": ["7.0.2"] + }, + "code": { + "forks": 73, + "isPlugin": false, + "latestVersion": "9.x.x", + "link": "https://github.com/hapijs/code", + "package": "@hapi/code", + "slogan": "BDD assertion library.", + "sloganHtml": "BDD assertion library.", + "stars": 231, + "updated": "2024-10-23T15:37:52Z", + "versions": [ + { + "branch": "v9.0.3", + "license": "BSD", + "name": "9.0.3", + "node": ">= 16" + } + ], + "versionsArray": ["9.0.3"] + }, + "content": { + "forks": 13, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/content", + "package": "@hapi/content", + "slogan": "HTTP Content-* headers parsing.", + "sloganHtml": "HTTP Content-* headers parsing.", + "stars": 7, + "updated": "2026-05-06T08:39:04Z", + "versions": [ + { + "branch": "v6.0.2", + "license": "BSD", + "name": "6.0.2", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.2"] + }, + "cookie": { + "forks": 98, + "isPlugin": true, + "latestVersion": "12.x.x", + "link": "https://github.com/hapijs/cookie", + "package": "@hapi/cookie", + "slogan": "Cookie authentication plugin.", + "sloganHtml": "Cookie authentication plugin.", + "stars": 229, + "updated": "2024-10-23T15:43:20Z", + "versions": [ + { + "branch": "v12.0.1", + "license": "BSD", + "name": "12.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["12.0.1"] + }, + "crumb": { + "forks": 48, + "isPlugin": true, + "latestVersion": "9.x.x", + "link": "https://github.com/hapijs/crumb", + "package": "@hapi/crumb", + "slogan": "CSRF crumb generation and validation for hapi.", + "sloganHtml": "CSRF crumb generation and validation for hapi.", + "stars": 170, + "updated": "2024-10-23T15:29:18Z", + "versions": [ + { + "branch": "v9.0.1", + "license": "BSD", + "name": "9.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["9.0.1"] + }, + "cryptiles": { + "forks": 27, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/cryptiles", + "package": "@hapi/cryptiles", + "slogan": "General purpose crypto utilities.", + "sloganHtml": "General purpose crypto utilities.", + "stars": 184, + "updated": "2025-12-11T11:38:33Z", + "versions": [ + { + "branch": "v6.0.3", + "license": "BSD", + "name": "6.0.3", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.3"] + }, + "eslint-plugin": { + "forks": 10, + "isPlugin": false, + "latestVersion": "7.x.x", + "link": "https://github.com/hapijs/eslint-plugin", + "package": "@hapi/eslint-plugin", + "slogan": "ESLint plugin containing hapi style guide rules and config.", + "sloganHtml": "ESLint plugin containing hapi style guide rules and config.", + "stars": 22, + "updated": "2026-04-01T09:41:45Z", + "versions": [ + { + "branch": "v6.0.0", + "license": "BSD", + "name": "6.0.0", + "node": ">= 16" + }, + { + "branch": "v7.0.0", + "license": "BSD", + "name": "7.0.0", + "node": ">= 16" + } + ], + "versionsArray": ["7.0.0", "6.0.0"] + }, + "file": { + "forks": 6, + "isPlugin": false, + "latestVersion": "3.x.x", + "link": "https://github.com/hapijs/file", + "package": "@hapi/file", + "slogan": "General purpose file utilities.", + "sloganHtml": "General purpose file utilities.", + "stars": 5, + "updated": "2022-05-30T23:06:24Z", + "versions": [ + { + "branch": "v3.0.0", + "license": "BSD", + "name": "3.0.0", + "node": ">= 16" + } + ], + "versionsArray": ["3.0.0"] + }, + "glue": { + "forks": 60, + "isPlugin": false, + "latestVersion": "9.x.x", + "link": "https://github.com/hapijs/glue", + "package": "@hapi/glue", + "slogan": "Server composer for hapi.js.", + "sloganHtml": "Server composer for hapi.js.", + "stars": 244, + "updated": "2024-10-23T15:39:45Z", + "versions": [ + { + "branch": "v9.0.1", + "license": "BSD", + "name": "9.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["9.0.1"] + }, + "h2o2": { + "forks": 60, + "isPlugin": true, + "latestVersion": "10.x.x", + "link": "https://github.com/hapijs/h2o2", + "package": "@hapi/h2o2", + "slogan": "Proxy handler for hapi.js.", + "sloganHtml": "Proxy handler for hapi.js.", + "stars": 164, + "updated": "2024-10-23T15:12:00Z", + "versions": [ + { + "branch": "v10.0.4", + "license": "BSD", + "name": "10.0.4", + "node": ">= 16" + } + ], + "versionsArray": ["10.0.4"] + }, + "hapi": { + "forks": 1358, + "isPlugin": false, + "latestVersion": "21.x.x", + "link": "https://github.com/hapijs/hapi", + "package": "@hapi/hapi", + "slogan": "The Simple, Secure Framework Developers Trust", + "sloganHtml": "The Simple, Secure Framework Developers Trust", + "stars": 14789, + "updated": "2026-05-06T10:38:07Z", + "versions": [ + { + "branch": "v20.3.0", + "license": "BSD", + "name": "20.3.0", + "node": ">= 16" + }, + { + "branch": "v21.4.9", + "license": "BSD", + "name": "21.4.9", + "node": ">= 16" + } + ], + "versionsArray": ["21.4.9", "20.3.0"] + }, + "heavy": { + "forks": 15, + "isPlugin": false, + "latestVersion": "8.x.x", + "link": "https://github.com/hapijs/heavy", + "package": "@hapi/heavy", + "slogan": "Measure process load.", + "sloganHtml": "Measure process load.", + "stars": 75, + "updated": "2024-10-23T14:51:56Z", + "versions": [ + { + "branch": "v8.0.1", + "license": "BSD", + "name": "8.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["8.0.1"] + }, + "hoek": { + "forks": 178, + "isPlugin": false, + "latestVersion": "11.x.x", + "link": "https://github.com/hapijs/hoek", + "package": "@hapi/hoek", + "slogan": "Utility methods for the hapi ecosystem.", + "sloganHtml": "Utility methods for the hapi ecosystem.", + "stars": 483, + "updated": "2026-02-25T07:24:45Z", + "versions": [ + { + "branch": "v11.0.7", + "license": "BSD", + "name": "11.0.7", + "node": ">= 16" + } + ], + "versionsArray": ["11.0.7"] + }, + "inert": { + "forks": 49, + "isPlugin": true, + "latestVersion": "7.x.x", + "link": "https://github.com/hapijs/inert", + "package": "@hapi/inert", + "slogan": "Static file and directory handlers for hapi.js.", + "sloganHtml": "Static file and directory handlers for hapi.js.", + "stars": 236, + "updated": "2026-05-20T14:45:11Z", + "versions": [ + { + "branch": "v7.1.1", + "license": "BSD", + "name": "7.1.1", + "node": ">= 16" + } + ], + "versionsArray": ["7.1.1"] + }, + "iron": { + "forks": 54, + "isPlugin": false, + "latestVersion": "7.x.x", + "link": "https://github.com/hapijs/iron", + "package": "@hapi/iron", + "slogan": "Encapsulated tokens (encrypted and mac'ed objects).", + "sloganHtml": "Encapsulated tokens (encrypted and mac'ed objects).", + "stars": 629, + "updated": "2024-10-23T15:37:19Z", + "versions": [ + { + "branch": "v7.0.1", + "license": "BSD", + "name": "7.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["7.0.1"] + }, + "jwt": { + "forks": 25, + "isPlugin": true, + "latestVersion": "3.x.x", + "link": "https://github.com/hapijs/jwt", + "package": "@hapi/jwt", + "slogan": "JWT (JSON Web Token) Authentication.", + "sloganHtml": "JWT (JSON Web Token) Authentication.", + "stars": 35, + "updated": "2026-06-12T08:54:01Z", + "versions": [ + { + "branch": "v3.2.4", + "license": "BSD", + "name": "3.2.4", + "node": ">= 16" + } + ], + "versionsArray": ["3.2.4"] + }, + "lab": { + "forks": 177, + "isPlugin": false, + "latestVersion": "26.x.x", + "link": "https://github.com/hapijs/lab", + "package": "@hapi/lab", + "slogan": "Node test utility.", + "sloganHtml": "Node test utility.", + "stars": 739, + "updated": "2026-03-26T19:23:31Z", + "versions": [ + { + "branch": "v25.3.2", + "license": "BSD", + "name": "25.3.2", + "node": ">= 16" + }, + { + "branch": "v26.0.1", + "license": "BSD", + "name": "26.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["26.0.1", "25.3.2"] + }, + "log": { + "forks": 5, + "isPlugin": true, + "latestVersion": "2.x.x", + "link": "https://github.com/hapijs/log", + "package": "@hapi/log", + "slogan": "Logging for hapi framework.", + "sloganHtml": "Logging for hapi framework.", + "stars": 6, + "updated": "2024-10-23T15:40:54Z", + "versions": [ + { + "branch": "v2.0.1", + "license": "BSD", + "name": "2.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["2.0.1"] + }, + "mimos": { + "forks": 13, + "isPlugin": false, + "latestVersion": "7.x.x", + "link": "https://github.com/hapijs/mimos", + "package": "@hapi/mimos", + "slogan": "Mime database interface.", + "sloganHtml": "Mime database interface.", + "stars": 20, + "updated": "2024-10-23T21:34:46Z", + "versions": [ + { + "branch": "v7.0.1", + "license": "BSD", + "name": "7.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["7.0.1"] + }, + "nes": { + "forks": 86, + "isPlugin": true, + "latestVersion": "14.x.x", + "link": "https://github.com/hapijs/nes", + "package": "@hapi/nes", + "slogan": "WebSocket adapter plugin for hapi routes.", + "sloganHtml": "WebSocket adapter plugin for hapi routes.", + "stars": 501, + "updated": "2025-01-08T21:42:46Z", + "versions": [ + { + "branch": "v13.0.1", + "license": "BSD", + "name": "13.0.1", + "node": ">= 16" + }, + { + "branch": "v14.0.1", + "license": "BSD", + "name": "14.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["14.0.1", "13.0.1"] + }, + "nigel": { + "forks": 10, + "isPlugin": false, + "latestVersion": "5.x.x", + "link": "https://github.com/hapijs/nigel", + "package": "@hapi/nigel", + "slogan": "Boyer-Moore-Horspool algorithms", + "sloganHtml": "Boyer-Moore-Horspool algorithms", + "stars": 16, + "updated": "2025-08-24T14:33:19Z", + "versions": [ + { + "branch": "v5.0.1", + "license": "BSD", + "name": "5.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["5.0.1"] + }, + "oppsy": { + "forks": 19, + "isPlugin": false, + "latestVersion": "3.x.x", + "link": "https://github.com/hapijs/oppsy", + "package": "@hapi/oppsy", + "slogan": "An EventEmitter useful for collecting hapi server ops information.", + "sloganHtml": "An EventEmitter useful for collecting hapi server ops information.", + "stars": 25, + "updated": "2024-10-23T14:52:58Z", + "versions": [ + { + "branch": "v3.0.0", + "license": "BSD", + "name": "3.0.0", + "node": ">= 16" + } + ], + "versionsArray": ["3.0.0"] + }, + "oxc-plugin": { + "forks": 0, + "isPlugin": false, + "latestVersion": "1.x.x", + "link": "https://github.com/hapijs/oxc-plugin", + "package": "@hapi/oxc-plugin", + "slogan": "Oxlint & Oxfmt plugin containing hapi style guide rules and config.", + "sloganHtml": "Oxlint & Oxfmt plugin containing hapi style guide rules and config.", + "stars": 0, + "updated": "2026-06-10T17:01:56Z", + "versions": [ + { + "branch": "v1.0.1", + "license": "BSD", + "name": "1.0.1", + "node": ">= 22" + } + ], + "versionsArray": ["1.0.1"] + }, + "pez": { + "forks": 18, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/pez", + "package": "@hapi/pez", + "slogan": "Multipart parser.", + "sloganHtml": "Multipart parser.", + "stars": 34, + "updated": "2026-06-11T14:48:05Z", + "versions": [ + { + "branch": "v6.1.1", + "license": "BSD", + "name": "6.1.1", + "node": ">= 16" + } + ], + "versionsArray": ["6.1.1"] + }, + "podium": { + "forks": 21, + "isPlugin": false, + "latestVersion": "5.x.x", + "link": "https://github.com/hapijs/podium", + "package": "@hapi/podium", + "slogan": "Event emitter with async features.", + "sloganHtml": "Event emitter with async features.", + "stars": 86, + "updated": "2025-01-07T22:49:33Z", + "versions": [ + { + "branch": "v5.0.2", + "license": "BSD", + "name": "5.0.2", + "node": ">= 16" + } + ], + "versionsArray": ["5.0.2"] + }, + "scooter": { + "forks": 24, + "isPlugin": true, + "latestVersion": "8.x.x", + "link": "https://github.com/hapijs/scooter", + "package": "@hapi/scooter", + "slogan": "User-agent information plugin.", + "sloganHtml": "User-agent information plugin.", + "stars": 46, + "updated": "2026-03-23T08:49:02Z", + "versions": [ + { + "branch": "v7.0.0", + "license": "BSD", + "name": "7.0.0", + "node": ">= 16" + }, + { + "branch": "v8.0.0", + "license": "BSD", + "name": "8.0.0", + "node": ">= 16" + } + ], + "versionsArray": ["8.0.0", "7.0.0"] + }, + "shot": { + "forks": 40, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/shot", + "package": "@hapi/shot", + "slogan": "Injects a fake HTTP request/response into your node server logic.", + "sloganHtml": "Injects a fake HTTP request/response into your node server logic.", + "stars": 196, + "updated": "2026-05-27T14:43:06Z", + "versions": [ + { + "branch": "v6.0.3", + "license": "BSD", + "name": "6.0.3", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.3"] + }, + "somever": { + "forks": 10, + "isPlugin": false, + "latestVersion": "4.x.x", + "link": "https://github.com/hapijs/somever", + "package": "@hapi/somever", + "slogan": "Semantic versioning rules parser, compatible with version ranges used in package.json files and the canonical [semver](https://www.npmjs.com/package/semver) module.", + "sloganHtml": "Semantic versioning rules parser, compatible with version ranges used in package.json files and the canonical semver module.", + "stars": 0, + "updated": "2024-10-23T14:45:10Z", + "versions": [ + { + "branch": "v4.1.1", + "license": "BSD", + "name": "4.1.1", + "node": ">= 16" + } + ], + "versionsArray": ["4.1.1"] + }, + "sse": { + "forks": 0, + "isPlugin": true, + "latestVersion": "1.x.x", + "link": "https://github.com/hapijs/sse", + "package": "@hapi/sse", + "slogan": "Server-Sent Events plugin for hapi.", + "sloganHtml": "Server-Sent Events plugin for hapi.", + "stars": 0, + "updated": "2026-05-20T15:44:33Z", + "versions": [ + { + "branch": "v1.1.0", + "license": "BSD", + "name": "1.1.0", + "node": ">= 22" + } + ], + "versionsArray": ["1.1.0"] + }, + "statehood": { + "forks": 26, + "isPlugin": false, + "latestVersion": "8.x.x", + "link": "https://github.com/hapijs/statehood", + "package": "@hapi/statehood", + "slogan": "HTTP State Management Utilities.", + "sloganHtml": "HTTP State Management Utilities.", + "stars": 21, + "updated": "2025-11-06T09:32:35Z", + "versions": [ + { + "branch": "v8.2.1", + "license": "BSD", + "name": "8.2.1", + "node": ">= 16" + } + ], + "versionsArray": ["8.2.1"] + }, + "subtext": { + "forks": 26, + "isPlugin": false, + "latestVersion": "8.x.x", + "link": "https://github.com/hapijs/subtext", + "package": "@hapi/subtext", + "slogan": "HTTP payload parser.", + "sloganHtml": "HTTP payload parser.", + "stars": 24, + "updated": "2026-05-06T10:24:33Z", + "versions": [ + { + "branch": "v8.1.3", + "license": "BSD", + "name": "8.1.3", + "node": ">= 16" + } + ], + "versionsArray": ["8.1.3"] + }, + "teamwork": { + "forks": 13, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/teamwork", + "package": "@hapi/teamwork", + "slogan": "Wait for multiple callbacks", + "sloganHtml": "Wait for multiple callbacks", + "stars": 14, + "updated": "2025-08-21T15:04:16Z", + "versions": [ + { + "branch": "v6.0.1", + "license": "BSD", + "name": "6.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.1"] + }, + "topo": { + "forks": 26, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/topo", + "package": "@hapi/topo", + "slogan": "Topological sorting with grouping support.", + "sloganHtml": "Topological sorting with grouping support.", + "stars": 109, + "updated": "2024-10-23T15:22:31Z", + "versions": [ + { + "branch": "v6.0.2", + "license": "BSD", + "name": "6.0.2", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.2"] + }, + "vise": { + "forks": 12, + "isPlugin": false, + "latestVersion": "5.x.x", + "link": "https://github.com/hapijs/vise", + "package": "@hapi/vise", + "slogan": "Treat multiple buffers as one.", + "sloganHtml": "Treat multiple buffers as one.", + "stars": 7, + "updated": "2024-10-23T15:41:23Z", + "versions": [ + { + "branch": "v5.0.1", + "license": "BSD", + "name": "5.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["5.0.1"] + }, + "vision": { + "forks": 67, + "isPlugin": true, + "latestVersion": "7.x.x", + "link": "https://github.com/hapijs/vision", + "package": "@hapi/vision", + "slogan": "Template rendering support for hapi.js.", + "sloganHtml": "Template rendering support for hapi.js.", + "stars": 198, + "updated": "2024-10-23T21:57:52Z", + "versions": [ + { + "branch": "v7.0.3", + "license": "BSD", + "name": "7.0.3", + "node": ">= 16" + } + ], + "versionsArray": ["7.0.3"] + }, + "wreck": { + "forks": 102, + "isPlugin": false, + "latestVersion": "18.x.x", + "link": "https://github.com/hapijs/wreck", + "package": "@hapi/wreck", + "slogan": "HTTP client utilities.", + "sloganHtml": "HTTP client utilities.", + "stars": 378, + "updated": "2026-05-20T10:27:17Z", + "versions": [ + { + "branch": "v18.1.2", + "license": "BSD", + "name": "18.1.2", + "node": ">= 16" + } + ], + "versionsArray": ["18.1.2"] + }, + "yar": { + "forks": 58, + "isPlugin": true, + "latestVersion": "11.x.x", + "link": "https://github.com/hapijs/yar", + "package": "@hapi/yar", + "slogan": "A hapi session manager.", + "sloganHtml": "A hapi session manager.", + "stars": 133, + "updated": "2025-03-22T11:36:48Z", + "versions": [ + { + "branch": "v11.0.3", + "license": "BSD", + "name": "11.0.3", + "node": ">= 16" + } + ], + "versionsArray": ["11.0.3"] + } } diff --git a/generated/modules/accept/changelog.json b/generated/modules/accept/changelog.json index fa7f7923..8069c2f9 100644 --- a/generated/modules/accept/changelog.json +++ b/generated/modules/accept/changelog.json @@ -1,522 +1,522 @@ [ - { - "date": "2023-10-10T08:20:42Z", - "id": 10023146, - "issues": [ - { - "id": 1928161896, - "labels": ["bug", "types"], - "number": 73, - "title": "allow readonly arrays to be used as preferences", - "url": "https://github.com/hapijs/accept/pull/73" - } - ], - "number": 33, - "url": "https://github.com/hapijs/accept/milestone/33", - "version": "6.0.3" - }, - { - "date": "2023-07-18T13:38:21Z", - "id": 9668553, - "issues": [ - { - "id": 1667900934, - "labels": ["types"], - "number": 72, - "title": "update typing of mediaTypes to match actual implementation", - "url": "https://github.com/hapijs/accept/pull/72" - } - ], - "number": 32, - "url": "https://github.com/hapijs/accept/milestone/32", - "version": "6.0.2" - }, - { - "date": "2023-02-11T19:46:22Z", - "id": 7955827, - "issues": [ - { - "id": 1551777213, - "labels": ["dependency"], - "number": 71, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/accept/pull/71" - } - ], - "number": 31, - "url": "https://github.com/hapijs/accept/milestone/31", - "version": "6.0.1" - }, - { - "date": "2023-02-11T19:46:21Z", - "id": 7955825, - "issues": [ - { - "id": 1228977288, - "labels": ["breaking changes", "dependency"], - "number": 70, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/accept/pull/70" - } - ], - "number": 30, - "url": "https://github.com/hapijs/accept/milestone/30", - "version": "6.0.0" - }, - { - "date": "2021-02-05T05:40:23Z", - "id": 5100689, - "issues": [ - { - "id": 799438683, - "labels": ["bug"], - "number": 65, - "title": "Enable prefix matching for language tags", - "url": "https://github.com/hapijs/accept/pull/65" - }, - { - "id": 798428254, - "labels": ["bug"], - "number": 63, - "title": "Accept.language does not match more specific language tag", - "url": "https://github.com/hapijs/accept/issues/63" - }, - { - "id": 709583424, - "labels": [], - "number": 59, - "title": "update lab and typescript now needs to be added as a devdependency", - "url": "https://github.com/hapijs/accept/pull/59" - } - ], - "number": 28, - "url": "https://github.com/hapijs/accept/milestone/28", - "version": "5.0.2" - }, - { - "date": "2020-02-13T06:32:55Z", - "id": 4973127, - "issues": [ - { - "id": 564461564, - "labels": ["bug"], - "number": 53, - "title": "Use maps", - "url": "https://github.com/hapijs/accept/issues/53" - } - ], - "number": 26, - "url": "https://github.com/hapijs/accept/milestone/26", - "version": "5.0.1" - }, - { - "date": "2020-01-04T20:55:47Z", - "id": 4973126, - "issues": [ - { - "id": 545331369, - "labels": ["breaking changes", "dependency"], - "number": 51, - "title": "Only node 12", - "url": "https://github.com/hapijs/accept/issues/51" - } - ], - "number": 25, - "url": "https://github.com/hapijs/accept/milestone/25", - "version": "5.0.0" - }, - { - "date": "2020-02-13T06:32:33Z", - "id": 4724446, - "issues": [ - { - "id": 564463483, - "labels": ["bug", "lts"], - "number": 54, - "title": "Backport #53", - "url": "https://github.com/hapijs/accept/issues/54" - } - ], - "number": 24, - "url": "https://github.com/hapijs/accept/milestone/24", - "version": "4.0.1" - }, - { - "date": "2019-10-05T22:08:55Z", - "id": 4724445, - "issues": [ - { - "id": 503022453, - "labels": ["breaking changes", "dependency"], - "number": 48, - "title": "Drop node 8", - "url": "https://github.com/hapijs/accept/issues/48" - }, - { - "id": 503022367, - "labels": ["breaking changes", "types"], - "number": 47, - "title": "Add types", - "url": "https://github.com/hapijs/accept/issues/47" - } - ], - "number": 23, - "url": "https://github.com/hapijs/accept/milestone/23", - "version": "4.0.0" - }, - { - "date": "2020-02-13T06:32:53Z", - "id": 4570604, - "issues": [ - { - "id": 564466832, - "labels": ["bug", "lts"], - "number": 55, - "title": "Backport #53", - "url": "https://github.com/hapijs/accept/issues/55" - } - ], - "number": 22, - "url": "https://github.com/hapijs/accept/milestone/22", - "version": "3.2.4" - }, - { - "date": "2019-08-13T20:43:13Z", - "id": 4195575, - "issues": [ - { - "id": 480357016, - "labels": ["dependency"], - "number": 42, - "title": "Update deps", - "url": "https://github.com/hapijs/accept/issues/42" - } - ], - "number": 21, - "url": "https://github.com/hapijs/accept/milestone/21", - "version": "3.2.3" - }, - { - "date": "2019-04-02T22:53:28Z", - "id": 4184574, - "issues": [ - { - "id": 428481246, - "labels": ["bug"], - "number": 41, - "title": "Missing bias for server preferences among equal q values", - "url": "https://github.com/hapijs/accept/issues/41" - } - ], - "number": 20, - "url": "https://github.com/hapijs/accept/milestone/20", - "version": "3.2.2" - }, - { - "date": "2019-03-30T00:05:54Z", - "id": 4175349, - "issues": [ - { - "id": 427218464, - "labels": ["dependency"], - "number": 40, - "title": "Update deps", - "url": "https://github.com/hapijs/accept/issues/40" - } - ], - "number": 19, - "url": "https://github.com/hapijs/accept/milestone/19", - "version": "3.2.1" - }, - { - "date": "2019-03-29T17:17:57Z", - "id": 3792166, - "issues": [ - { - "id": 425701410, - "labels": ["non issue"], - "number": 39, - "title": "Change module namespace", - "url": "https://github.com/hapijs/accept/issues/39" - }, - { - "id": 393251806, - "labels": ["bug", "breaking changes"], - "number": 34, - "title": "headerType() '*' logic is incorrect.", - "url": "https://github.com/hapijs/accept/issues/34" - } - ], - "number": 14, - "url": "https://github.com/hapijs/accept/milestone/14", - "version": "3.2.0" - }, - { - "date": "2018-11-03T00:14:00Z", - "id": 3787414, - "issues": [ - { - "id": 377000378, - "labels": ["non issue"], + { + "date": "2023-10-10T08:20:42Z", + "id": 10023146, + "issues": [ + { + "id": 1928161896, + "labels": ["bug", "types"], + "number": 73, + "title": "allow readonly arrays to be used as preferences", + "url": "https://github.com/hapijs/accept/pull/73" + } + ], + "number": 33, + "url": "https://github.com/hapijs/accept/milestone/33", + "version": "6.0.3" + }, + { + "date": "2023-07-18T13:38:21Z", + "id": 9668553, + "issues": [ + { + "id": 1667900934, + "labels": ["types"], + "number": 72, + "title": "update typing of mediaTypes to match actual implementation", + "url": "https://github.com/hapijs/accept/pull/72" + } + ], "number": 32, - "title": "Remove engines", - "url": "https://github.com/hapijs/accept/issues/32" - } - ], - "number": 13, - "url": "https://github.com/hapijs/accept/milestone/13", - "version": "3.1.3" - }, - { - "date": "2018-11-01T07:20:19Z", - "id": 3780616, - "issues": [ - { - "id": 376281239, - "labels": ["dependency"], + "url": "https://github.com/hapijs/accept/milestone/32", + "version": "6.0.2" + }, + { + "date": "2023-02-11T19:46:22Z", + "id": 7955827, + "issues": [ + { + "id": 1551777213, + "labels": ["dependency"], + "number": 71, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/accept/pull/71" + } + ], "number": 31, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/accept/issues/31" - } - ], - "number": 12, - "url": "https://github.com/hapijs/accept/milestone/12", - "version": "3.1.2" - }, - { - "date": "2018-10-30T08:12:03Z", - "id": 3780084, - "issues": [ - { - "id": 375366415, - "labels": ["bug"], + "url": "https://github.com/hapijs/accept/milestone/31", + "version": "6.0.1" + }, + { + "date": "2023-02-11T19:46:21Z", + "id": 7955825, + "issues": [ + { + "id": 1228977288, + "labels": ["breaking changes", "dependency"], + "number": 70, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/accept/pull/70" + } + ], "number": 30, - "title": "Fix node 11 sort", - "url": "https://github.com/hapijs/accept/issues/30" - } - ], - "number": 11, - "url": "https://github.com/hapijs/accept/milestone/11", - "version": "3.1.1" - }, - { - "date": "2018-10-30T04:00:21Z", - "id": 2885238, - "issues": [ - { - "id": 345347873, - "labels": [], + "url": "https://github.com/hapijs/accept/milestone/30", + "version": "6.0.0" + }, + { + "date": "2021-02-05T05:40:23Z", + "id": 5100689, + "issues": [ + { + "id": 799438683, + "labels": ["bug"], + "number": 65, + "title": "Enable prefix matching for language tags", + "url": "https://github.com/hapijs/accept/pull/65" + }, + { + "id": 798428254, + "labels": ["bug"], + "number": 63, + "title": "Accept.language does not match more specific language tag", + "url": "https://github.com/hapijs/accept/issues/63" + }, + { + "id": 709583424, + "labels": [], + "number": 59, + "title": "update lab and typescript now needs to be added as a devdependency", + "url": "https://github.com/hapijs/accept/pull/59" + } + ], "number": 28, - "title": "add mediaType method", - "url": "https://github.com/hapijs/accept/pull/28" - } - ], - "number": 10, - "url": "https://github.com/hapijs/accept/milestone/10", - "version": "3.1.0" - }, - { - "date": "2017-11-03T06:41:46Z", - "id": 2794190, - "issues": [ - { - "id": 270889780, - "labels": ["dependency"], + "url": "https://github.com/hapijs/accept/milestone/28", + "version": "5.0.2" + }, + { + "date": "2020-02-13T06:32:55Z", + "id": 4973127, + "issues": [ + { + "id": 564461564, + "labels": ["bug"], + "number": 53, + "title": "Use maps", + "url": "https://github.com/hapijs/accept/issues/53" + } + ], + "number": 26, + "url": "https://github.com/hapijs/accept/milestone/26", + "version": "5.0.1" + }, + { + "date": "2020-01-04T20:55:47Z", + "id": 4973126, + "issues": [ + { + "id": 545331369, + "labels": ["breaking changes", "dependency"], + "number": 51, + "title": "Only node 12", + "url": "https://github.com/hapijs/accept/issues/51" + } + ], + "number": 25, + "url": "https://github.com/hapijs/accept/milestone/25", + "version": "5.0.0" + }, + { + "date": "2020-02-13T06:32:33Z", + "id": 4724446, + "issues": [ + { + "id": 564463483, + "labels": ["bug", "lts"], + "number": 54, + "title": "Backport #53", + "url": "https://github.com/hapijs/accept/issues/54" + } + ], + "number": 24, + "url": "https://github.com/hapijs/accept/milestone/24", + "version": "4.0.1" + }, + { + "date": "2019-10-05T22:08:55Z", + "id": 4724445, + "issues": [ + { + "id": 503022453, + "labels": ["breaking changes", "dependency"], + "number": 48, + "title": "Drop node 8", + "url": "https://github.com/hapijs/accept/issues/48" + }, + { + "id": 503022367, + "labels": ["breaking changes", "types"], + "number": 47, + "title": "Add types", + "url": "https://github.com/hapijs/accept/issues/47" + } + ], + "number": 23, + "url": "https://github.com/hapijs/accept/milestone/23", + "version": "4.0.0" + }, + { + "date": "2020-02-13T06:32:53Z", + "id": 4570604, + "issues": [ + { + "id": 564466832, + "labels": ["bug", "lts"], + "number": 55, + "title": "Backport #53", + "url": "https://github.com/hapijs/accept/issues/55" + } + ], "number": 22, - "title": "Update boom", - "url": "https://github.com/hapijs/accept/issues/22" - } - ], - "number": 9, - "url": "https://github.com/hapijs/accept/milestone/9", - "version": "3.0.2" - }, - { - "date": "2017-09-26T09:04:11Z", - "id": 2793379, - "issues": [ - { - "id": 260546183, - "labels": ["dependency"], + "url": "https://github.com/hapijs/accept/milestone/22", + "version": "3.2.4" + }, + { + "date": "2019-08-13T20:43:13Z", + "id": 4195575, + "issues": [ + { + "id": 480357016, + "labels": ["dependency"], + "number": 42, + "title": "Update deps", + "url": "https://github.com/hapijs/accept/issues/42" + } + ], "number": 21, - "title": "Update deps", - "url": "https://github.com/hapijs/accept/issues/21" - } - ], - "number": 8, - "url": "https://github.com/hapijs/accept/milestone/8", - "version": "3.0.1" - }, - { - "date": "2017-09-25T23:59:24Z", - "id": 2546736, - "issues": [ - { - "id": 260450201, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/accept/milestone/21", + "version": "3.2.3" + }, + { + "date": "2019-04-02T22:53:28Z", + "id": 4184574, + "issues": [ + { + "id": 428481246, + "labels": ["bug"], + "number": 41, + "title": "Missing bias for server preferences among equal q values", + "url": "https://github.com/hapijs/accept/issues/41" + } + ], "number": 20, - "title": "Throw all errors", - "url": "https://github.com/hapijs/accept/issues/20" - } - ], - "number": 7, - "url": "https://github.com/hapijs/accept/milestone/7", - "version": "3.0.0" - }, - { - "date": "2019-03-22T00:14:24Z", - "id": 4162460, - "issues": [ - { - "id": 423994691, - "labels": ["bug", "lts"], - "number": 38, - "title": "Node 11 (language)", - "url": "https://github.com/hapijs/accept/issues/38" - } - ], - "number": 17, - "url": "https://github.com/hapijs/accept/milestone/17", - "version": "2.2.2" - }, - { - "date": "2019-03-22T00:08:43Z", - "id": 4162421, - "issues": [ - { - "id": 423993359, - "labels": ["lts"], - "number": 37, - "title": "Fix node 11", - "url": "https://github.com/hapijs/accept/issues/37" - } - ], - "number": 16, - "url": "https://github.com/hapijs/accept/milestone/16", - "version": "2.2.1" - }, - { - "date": "2019-03-21T23:58:24Z", - "id": 4162420, - "issues": [ - { - "id": 423990891, - "labels": ["lts"], - "number": 36, - "title": "Commercial version of v2 branch", - "url": "https://github.com/hapijs/accept/issues/36" - } - ], - "number": 15, - "url": "https://github.com/hapijs/accept/milestone/15", - "version": "2.2.0" - }, - { - "date": "2017-05-28T05:52:16Z", - "id": 1907854, - "issues": [ - { - "id": 231848352, - "labels": ["dependency"], - "number": 18, - "title": "Update deps.", - "url": "https://github.com/hapijs/accept/issues/18" - } - ], - "number": 6, - "url": "https://github.com/hapijs/accept/milestone/6", - "version": "2.1.4" - }, - { - "date": "2016-07-27T18:28:57Z", - "id": 1907853, - "issues": [ - { - "id": 167923120, - "labels": ["dependency"], - "number": 17, - "title": "Update lab", - "url": "https://github.com/hapijs/accept/issues/17" - } - ], - "number": 5, - "url": "https://github.com/hapijs/accept/milestone/5", - "version": "2.1.2" - }, - { - "date": "2016-07-27T18:28:21Z", - "id": 1471151, - "issues": [ - { - "id": 103146134, - "labels": ["feature"], + "url": "https://github.com/hapijs/accept/milestone/20", + "version": "3.2.2" + }, + { + "date": "2019-03-30T00:05:54Z", + "id": 4175349, + "issues": [ + { + "id": 427218464, + "labels": ["dependency"], + "number": 40, + "title": "Update deps", + "url": "https://github.com/hapijs/accept/issues/40" + } + ], + "number": 19, + "url": "https://github.com/hapijs/accept/milestone/19", + "version": "3.2.1" + }, + { + "date": "2019-03-29T17:17:57Z", + "id": 3792166, + "issues": [ + { + "id": 425701410, + "labels": ["non issue"], + "number": 39, + "title": "Change module namespace", + "url": "https://github.com/hapijs/accept/issues/39" + }, + { + "id": 393251806, + "labels": ["bug", "breaking changes"], + "number": 34, + "title": "headerType() '*' logic is incorrect.", + "url": "https://github.com/hapijs/accept/issues/34" + } + ], "number": 14, - "title": "Mediatypes", - "url": "https://github.com/hapijs/accept/pull/14" - } - ], - "number": 4, - "url": "https://github.com/hapijs/accept/milestone/4", - "version": "2.1.0" - }, - { - "date": "2015-11-01T18:52:39Z", - "id": 1203229, - "issues": [ - { - "id": 114484689, - "labels": ["breaking changes"], - "number": 15, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/accept/issues/15" - }, - { - "id": 100566463, - "labels": ["documentation"], + "url": "https://github.com/hapijs/accept/milestone/14", + "version": "3.2.0" + }, + { + "date": "2018-11-03T00:14:00Z", + "id": 3787414, + "issues": [ + { + "id": 377000378, + "labels": ["non issue"], + "number": 32, + "title": "Remove engines", + "url": "https://github.com/hapijs/accept/issues/32" + } + ], "number": 13, - "title": "Update docs to use API.md", - "url": "https://github.com/hapijs/accept/issues/13" - }, - { - "id": 94430304, - "labels": ["feature"], + "url": "https://github.com/hapijs/accept/milestone/13", + "version": "3.1.3" + }, + { + "date": "2018-11-01T07:20:19Z", + "id": 3780616, + "issues": [ + { + "id": 376281239, + "labels": ["dependency"], + "number": 31, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/accept/issues/31" + } + ], + "number": 12, + "url": "https://github.com/hapijs/accept/milestone/12", + "version": "3.1.2" + }, + { + "date": "2018-10-30T08:12:03Z", + "id": 3780084, + "issues": [ + { + "id": 375366415, + "labels": ["bug"], + "number": 30, + "title": "Fix node 11 sort", + "url": "https://github.com/hapijs/accept/issues/30" + } + ], "number": 11, - "title": "add language() and languages()", - "url": "https://github.com/hapijs/accept/pull/11" - } - ], - "number": 2, - "url": "https://github.com/hapijs/accept/milestone/2", - "version": "2.0.0" - }, - { - "date": "2015-07-13T16:56:12Z", - "id": 813254, - "issues": [ - { - "id": 91676502, - "labels": ["feature"], + "url": "https://github.com/hapijs/accept/milestone/11", + "version": "3.1.1" + }, + { + "date": "2018-10-30T04:00:21Z", + "id": 2885238, + "issues": [ + { + "id": 345347873, + "labels": [], + "number": 28, + "title": "add mediaType method", + "url": "https://github.com/hapijs/accept/pull/28" + } + ], + "number": 10, + "url": "https://github.com/hapijs/accept/milestone/10", + "version": "3.1.0" + }, + { + "date": "2017-11-03T06:41:46Z", + "id": 2794190, + "issues": [ + { + "id": 270889780, + "labels": ["dependency"], + "number": 22, + "title": "Update boom", + "url": "https://github.com/hapijs/accept/issues/22" + } + ], "number": 9, - "title": "Charset", - "url": "https://github.com/hapijs/accept/pull/9" - }, - { - "id": 59532964, - "labels": ["test", "dependency"], + "url": "https://github.com/hapijs/accept/milestone/9", + "version": "3.0.2" + }, + { + "date": "2017-09-26T09:04:11Z", + "id": 2793379, + "issues": [ + { + "id": 260546183, + "labels": ["dependency"], + "number": 21, + "title": "Update deps", + "url": "https://github.com/hapijs/accept/issues/21" + } + ], + "number": 8, + "url": "https://github.com/hapijs/accept/milestone/8", + "version": "3.0.1" + }, + { + "date": "2017-09-25T23:59:24Z", + "id": 2546736, + "issues": [ + { + "id": 260450201, + "labels": ["breaking changes"], + "number": 20, + "title": "Throw all errors", + "url": "https://github.com/hapijs/accept/issues/20" + } + ], + "number": 7, + "url": "https://github.com/hapijs/accept/milestone/7", + "version": "3.0.0" + }, + { + "date": "2019-03-22T00:14:24Z", + "id": 4162460, + "issues": [ + { + "id": 423994691, + "labels": ["bug", "lts"], + "number": 38, + "title": "Node 11 (language)", + "url": "https://github.com/hapijs/accept/issues/38" + } + ], + "number": 17, + "url": "https://github.com/hapijs/accept/milestone/17", + "version": "2.2.2" + }, + { + "date": "2019-03-22T00:08:43Z", + "id": 4162421, + "issues": [ + { + "id": 423993359, + "labels": ["lts"], + "number": 37, + "title": "Fix node 11", + "url": "https://github.com/hapijs/accept/issues/37" + } + ], + "number": 16, + "url": "https://github.com/hapijs/accept/milestone/16", + "version": "2.2.1" + }, + { + "date": "2019-03-21T23:58:24Z", + "id": 4162420, + "issues": [ + { + "id": 423990891, + "labels": ["lts"], + "number": 36, + "title": "Commercial version of v2 branch", + "url": "https://github.com/hapijs/accept/issues/36" + } + ], + "number": 15, + "url": "https://github.com/hapijs/accept/milestone/15", + "version": "2.2.0" + }, + { + "date": "2017-05-28T05:52:16Z", + "id": 1907854, + "issues": [ + { + "id": 231848352, + "labels": ["dependency"], + "number": 18, + "title": "Update deps.", + "url": "https://github.com/hapijs/accept/issues/18" + } + ], + "number": 6, + "url": "https://github.com/hapijs/accept/milestone/6", + "version": "2.1.4" + }, + { + "date": "2016-07-27T18:28:57Z", + "id": 1907853, + "issues": [ + { + "id": 167923120, + "labels": ["dependency"], + "number": 17, + "title": "Update lab", + "url": "https://github.com/hapijs/accept/issues/17" + } + ], + "number": 5, + "url": "https://github.com/hapijs/accept/milestone/5", + "version": "2.1.2" + }, + { + "date": "2016-07-27T18:28:21Z", + "id": 1471151, + "issues": [ + { + "id": 103146134, + "labels": ["feature"], + "number": 14, + "title": "Mediatypes", + "url": "https://github.com/hapijs/accept/pull/14" + } + ], + "number": 4, + "url": "https://github.com/hapijs/accept/milestone/4", + "version": "2.1.0" + }, + { + "date": "2015-11-01T18:52:39Z", + "id": 1203229, + "issues": [ + { + "id": 114484689, + "labels": ["breaking changes"], + "number": 15, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/accept/issues/15" + }, + { + "id": 100566463, + "labels": ["documentation"], + "number": 13, + "title": "Update docs to use API.md", + "url": "https://github.com/hapijs/accept/issues/13" + }, + { + "id": 94430304, + "labels": ["feature"], + "number": 11, + "title": "add language() and languages()", + "url": "https://github.com/hapijs/accept/pull/11" + } + ], "number": 2, - "title": "Update to Lab 5.x.x and Code 1.x.x", - "url": "https://github.com/hapijs/accept/pull/2" - }, - { - "id": 58942089, - "labels": ["test"], + "url": "https://github.com/hapijs/accept/milestone/2", + "version": "2.0.0" + }, + { + "date": "2015-07-13T16:56:12Z", + "id": 813254, + "issues": [ + { + "id": 91676502, + "labels": ["feature"], + "number": 9, + "title": "Charset", + "url": "https://github.com/hapijs/accept/pull/9" + }, + { + "id": 59532964, + "labels": ["test", "dependency"], + "number": 2, + "title": "Update to Lab 5.x.x and Code 1.x.x", + "url": "https://github.com/hapijs/accept/pull/2" + }, + { + "id": 58942089, + "labels": ["test"], + "number": 1, + "title": "Update .travis.yml", + "url": "https://github.com/hapijs/accept/pull/1" + } + ], "number": 1, - "title": "Update .travis.yml", - "url": "https://github.com/hapijs/accept/pull/1" - } - ], - "number": 1, - "url": "https://github.com/hapijs/accept/milestone/1", - "version": "1.1.0" - } + "url": "https://github.com/hapijs/accept/milestone/1", + "version": "1.1.0" + } ] diff --git a/generated/modules/accept/info.json b/generated/modules/accept/info.json index b58b9c75..471f452f 100644 --- a/generated/modules/accept/info.json +++ b/generated/modules/accept/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 30, - "isPlugin": false, - "link": "https://github.com/hapijs/accept", - "name": "accept", - "package": "@hapi/accept", - "slogan": "HTTP Accept-* headers parsing.", - "sloganHtml": "HTTP Accept-* headers parsing.", - "stars": 55, - "updated": "2024-10-23T14:51:04Z", - "versions": [ - { - "branch": "v6.0.3", - "license": "BSD", - "name": "6.0.3", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.3"], - "latestVersion": "6.x.x" + "api": true, + "forks": 29, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/accept", + "name": "accept", + "package": "@hapi/accept", + "slogan": "HTTP Accept-* headers parsing.", + "sloganHtml": "HTTP Accept-* headers parsing.", + "stars": 55, + "updated": "2024-10-23T14:51:04Z", + "versions": [ + { + "branch": "v6.0.3", + "license": "BSD", + "name": "6.0.3", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.3"] } diff --git a/generated/modules/ammo/changelog.json b/generated/modules/ammo/changelog.json index b646f9f5..b2dfc4dd 100644 --- a/generated/modules/ammo/changelog.json +++ b/generated/modules/ammo/changelog.json @@ -1,359 +1,359 @@ [ - { - "date": "2023-02-11T19:39:49Z", - "id": 7955838, - "issues": [ - { - "id": 1551774867, - "labels": [], - "number": 54, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/ammo/pull/54" - } - ], - "number": 22, - "url": "https://github.com/hapijs/ammo/milestone/22", - "version": "6.0.1" - }, - { - "date": "2023-02-11T19:39:47Z", - "id": 7955836, - "issues": [ - { - "id": 1228982193, - "labels": ["breaking changes", "dependency"], - "number": 53, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/ammo/pull/53" - } - ], - "number": 21, - "url": "https://github.com/hapijs/ammo/milestone/21", - "version": "6.0.0" - }, - { - "date": "2020-02-13T05:14:49Z", - "id": 4973130, - "issues": [ - { - "id": 564441114, - "labels": ["bug"], - "number": 37, - "title": "Strict parsing", - "url": "https://github.com/hapijs/ammo/issues/37" - } - ], - "number": 19, - "url": "https://github.com/hapijs/ammo/milestone/19", - "version": "5.0.1" - }, - { - "date": "2020-01-04T21:08:13Z", - "id": 4973129, - "issues": [ - { - "id": 545332624, - "labels": ["breaking changes", "dependency"], - "number": 35, - "title": "Only node 12", - "url": "https://github.com/hapijs/ammo/issues/35" - } - ], - "number": 18, - "url": "https://github.com/hapijs/ammo/milestone/18", - "version": "5.0.0" - }, - { - "date": "2020-02-13T05:36:22Z", - "id": 4751771, - "issues": [ - { - "id": 564448078, - "labels": ["bug", "lts"], - "number": 38, - "title": "Backport #37", - "url": "https://github.com/hapijs/ammo/issues/38" - } - ], - "number": 17, - "url": "https://github.com/hapijs/ammo/milestone/17", - "version": "4.0.1" - }, - { - "date": "2019-10-15T00:23:26Z", - "id": 4746407, - "issues": [ - { - "id": 506228835, - "labels": ["breaking changes", "types"], - "number": 32, - "title": "Add types", - "url": "https://github.com/hapijs/ammo/issues/32" - }, - { - "id": 506228736, - "labels": ["breaking changes", "dependency"], - "number": 31, - "title": "Drop node 8", - "url": "https://github.com/hapijs/ammo/issues/31" - }, - { - "id": 244877317, - "labels": ["feature"], - "number": 16, - "title": "Stream early exit", - "url": "https://github.com/hapijs/ammo/issues/16" - } - ], - "number": 16, - "url": "https://github.com/hapijs/ammo/milestone/16", - "version": "4.0.0" - }, - { - "date": "2020-02-13T05:36:20Z", - "id": 4570608, - "issues": [ - { - "id": 564449910, - "labels": ["bug", "lts"], - "number": 39, - "title": "Backport #37", - "url": "https://github.com/hapijs/ammo/issues/39" - } - ], - "number": 15, - "url": "https://github.com/hapijs/ammo/milestone/15", - "version": "3.1.2" - }, - { - "date": "2019-08-13T20:47:40Z", - "id": 4183860, - "issues": [ - { - "id": 480360926, - "labels": ["dependency"], - "number": 25, - "title": "Update deps", - "url": "https://github.com/hapijs/ammo/issues/25" - } - ], - "number": 14, - "url": "https://github.com/hapijs/ammo/milestone/14", - "version": "3.1.1" - }, - { - "date": "2019-03-30T07:47:40Z", - "id": 3792167, - "issues": [ - { - "id": 427100833, - "labels": ["dependency"], - "number": 23, - "title": "Change module namespace", - "url": "https://github.com/hapijs/ammo/issues/23" - } - ], - "number": 11, - "url": "https://github.com/hapijs/ammo/milestone/11", - "version": "3.1.0" - }, - { - "date": "2018-11-03T00:14:46Z", - "id": 3787417, - "issues": [ - { - "id": 377000427, - "labels": ["non issue"], - "number": 20, - "title": "Remove engines", - "url": "https://github.com/hapijs/ammo/issues/20" - } - ], - "number": 10, - "url": "https://github.com/hapijs/ammo/milestone/10", - "version": "3.0.3" - }, - { - "date": "2018-11-01T07:22:13Z", - "id": 3307026, - "issues": [ - { - "id": 376281692, - "labels": ["dependency"], + { + "date": "2023-02-11T19:39:49Z", + "id": 7955838, + "issues": [ + { + "id": 1551774867, + "labels": [], + "number": 54, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/ammo/pull/54" + } + ], + "number": 22, + "url": "https://github.com/hapijs/ammo/milestone/22", + "version": "6.0.1" + }, + { + "date": "2023-02-11T19:39:47Z", + "id": 7955836, + "issues": [ + { + "id": 1228982193, + "labels": ["breaking changes", "dependency"], + "number": 53, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/ammo/pull/53" + } + ], + "number": 21, + "url": "https://github.com/hapijs/ammo/milestone/21", + "version": "6.0.0" + }, + { + "date": "2020-02-13T05:14:49Z", + "id": 4973130, + "issues": [ + { + "id": 564441114, + "labels": ["bug"], + "number": 37, + "title": "Strict parsing", + "url": "https://github.com/hapijs/ammo/issues/37" + } + ], "number": 19, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/ammo/issues/19" - } - ], - "number": 9, - "url": "https://github.com/hapijs/ammo/milestone/9", - "version": "3.0.2" - }, - { - "date": "2018-04-29T18:17:38Z", - "id": 2793846, - "issues": [ - { - "id": 260558317, - "labels": ["bug"], + "url": "https://github.com/hapijs/ammo/milestone/19", + "version": "5.0.1" + }, + { + "date": "2020-01-04T21:08:13Z", + "id": 4973129, + "issues": [ + { + "id": 545332624, + "labels": ["breaking changes", "dependency"], + "number": 35, + "title": "Only node 12", + "url": "https://github.com/hapijs/ammo/issues/35" + } + ], "number": 18, - "title": "Improve error handling", - "url": "https://github.com/hapijs/ammo/pull/18" - } - ], - "number": 8, - "url": "https://github.com/hapijs/ammo/milestone/8", - "version": "3.0.1" - }, - { - "date": "2017-09-26T05:47:37Z", - "id": 2546739, - "issues": [ - { - "id": 260498093, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/ammo/milestone/18", + "version": "5.0.0" + }, + { + "date": "2020-02-13T05:36:22Z", + "id": 4751771, + "issues": [ + { + "id": 564448078, + "labels": ["bug", "lts"], + "number": 38, + "title": "Backport #37", + "url": "https://github.com/hapijs/ammo/issues/38" + } + ], "number": 17, - "title": "Node 8", - "url": "https://github.com/hapijs/ammo/issues/17" - } - ], - "number": 7, - "url": "https://github.com/hapijs/ammo/milestone/7", - "version": "3.0.0" - }, - { - "date": "2020-02-13T05:36:18Z", - "id": 4162508, - "issues": [ - { - "id": 564451333, - "labels": ["bug", "lts"], - "number": 40, - "title": "Backport #37", - "url": "https://github.com/hapijs/ammo/issues/40" - } - ], - "number": 13, - "url": "https://github.com/hapijs/ammo/milestone/13", - "version": "2.1.1" - }, - { - "date": "2019-03-22T05:49:25Z", - "id": 4162507, - "issues": [ - { - "id": 424000545, - "labels": ["lts"], - "number": 22, - "title": "Commercial version of v2 branch", - "url": "https://github.com/hapijs/ammo/issues/22" - } - ], - "number": 12, - "url": "https://github.com/hapijs/ammo/milestone/12", - "version": "2.1.0" - }, - { - "date": "2017-05-28T05:55:23Z", - "id": 2162629, - "issues": [ - { - "id": 231848526, - "labels": ["dependency"], + "url": "https://github.com/hapijs/ammo/milestone/17", + "version": "4.0.1" + }, + { + "date": "2019-10-15T00:23:26Z", + "id": 4746407, + "issues": [ + { + "id": 506228835, + "labels": ["breaking changes", "types"], + "number": 32, + "title": "Add types", + "url": "https://github.com/hapijs/ammo/issues/32" + }, + { + "id": 506228736, + "labels": ["breaking changes", "dependency"], + "number": 31, + "title": "Drop node 8", + "url": "https://github.com/hapijs/ammo/issues/31" + }, + { + "id": 244877317, + "labels": ["feature"], + "number": 16, + "title": "Stream early exit", + "url": "https://github.com/hapijs/ammo/issues/16" + } + ], + "number": 16, + "url": "https://github.com/hapijs/ammo/milestone/16", + "version": "4.0.0" + }, + { + "date": "2020-02-13T05:36:20Z", + "id": 4570608, + "issues": [ + { + "id": 564449910, + "labels": ["bug", "lts"], + "number": 39, + "title": "Backport #37", + "url": "https://github.com/hapijs/ammo/issues/39" + } + ], "number": 15, - "title": "Update deps.", - "url": "https://github.com/hapijs/ammo/issues/15" - } - ], - "number": 6, - "url": "https://github.com/hapijs/ammo/milestone/6", - "version": "2.0.4" - }, - { - "date": "2016-11-29T01:46:45Z", - "id": 1907949, - "issues": [ - { - "id": 192166444, - "labels": ["dependency"], + "url": "https://github.com/hapijs/ammo/milestone/15", + "version": "3.1.2" + }, + { + "date": "2019-08-13T20:47:40Z", + "id": 4183860, + "issues": [ + { + "id": 480360926, + "labels": ["dependency"], + "number": 25, + "title": "Update deps", + "url": "https://github.com/hapijs/ammo/issues/25" + } + ], "number": 14, - "title": "Update deps", - "url": "https://github.com/hapijs/ammo/issues/14" - }, - { - "id": 177691079, - "labels": ["dependency"], + "url": "https://github.com/hapijs/ammo/milestone/14", + "version": "3.1.1" + }, + { + "date": "2019-03-30T07:47:40Z", + "id": 3792167, + "issues": [ + { + "id": 427100833, + "labels": ["dependency"], + "number": 23, + "title": "Change module namespace", + "url": "https://github.com/hapijs/ammo/issues/23" + } + ], + "number": 11, + "url": "https://github.com/hapijs/ammo/milestone/11", + "version": "3.1.0" + }, + { + "date": "2018-11-03T00:14:46Z", + "id": 3787417, + "issues": [ + { + "id": 377000427, + "labels": ["non issue"], + "number": 20, + "title": "Remove engines", + "url": "https://github.com/hapijs/ammo/issues/20" + } + ], "number": 10, - "title": "dependency update", - "url": "https://github.com/hapijs/ammo/pull/10" - } - ], - "number": 5, - "url": "https://github.com/hapijs/ammo/milestone/5", - "version": "2.0.3" - }, - { - "date": "2016-07-27T19:25:24Z", - "id": 1777271, - "issues": [ - { - "id": 167934962, - "labels": ["documentation"], + "url": "https://github.com/hapijs/ammo/milestone/10", + "version": "3.0.3" + }, + { + "date": "2018-11-01T07:22:13Z", + "id": 3307026, + "issues": [ + { + "id": 376281692, + "labels": ["dependency"], + "number": 19, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/ammo/issues/19" + } + ], + "number": 9, + "url": "https://github.com/hapijs/ammo/milestone/9", + "version": "3.0.2" + }, + { + "date": "2018-04-29T18:17:38Z", + "id": 2793846, + "issues": [ + { + "id": 260558317, + "labels": ["bug"], + "number": 18, + "title": "Improve error handling", + "url": "https://github.com/hapijs/ammo/pull/18" + } + ], "number": 8, - "title": "Update deps", - "url": "https://github.com/hapijs/ammo/issues/8" - } - ], - "number": 4, - "url": "https://github.com/hapijs/ammo/milestone/4", - "version": "2.0.2" - }, - { - "date": "2016-05-19T18:00:33Z", - "id": 1387506, - "issues": [ - { - "id": 155615517, - "labels": ["test"], + "url": "https://github.com/hapijs/ammo/milestone/8", + "version": "3.0.1" + }, + { + "date": "2017-09-26T05:47:37Z", + "id": 2546739, + "issues": [ + { + "id": 260498093, + "labels": ["breaking changes"], + "number": 17, + "title": "Node 8", + "url": "https://github.com/hapijs/ammo/issues/17" + } + ], + "number": 7, + "url": "https://github.com/hapijs/ammo/milestone/7", + "version": "3.0.0" + }, + { + "date": "2020-02-13T05:36:18Z", + "id": 4162508, + "issues": [ + { + "id": 564451333, + "labels": ["bug", "lts"], + "number": 40, + "title": "Backport #37", + "url": "https://github.com/hapijs/ammo/issues/40" + } + ], + "number": 13, + "url": "https://github.com/hapijs/ammo/milestone/13", + "version": "2.1.1" + }, + { + "date": "2019-03-22T05:49:25Z", + "id": 4162507, + "issues": [ + { + "id": 424000545, + "labels": ["lts"], + "number": 22, + "title": "Commercial version of v2 branch", + "url": "https://github.com/hapijs/ammo/issues/22" + } + ], + "number": 12, + "url": "https://github.com/hapijs/ammo/milestone/12", + "version": "2.1.0" + }, + { + "date": "2017-05-28T05:55:23Z", + "id": 2162629, + "issues": [ + { + "id": 231848526, + "labels": ["dependency"], + "number": 15, + "title": "Update deps.", + "url": "https://github.com/hapijs/ammo/issues/15" + } + ], "number": 6, - "title": "Test on node v6, update dependencies", - "url": "https://github.com/hapijs/ammo/pull/6" - } - ], - "number": 3, - "url": "https://github.com/hapijs/ammo/milestone/3", - "version": "2.0.1" - }, - { - "date": "2016-05-19T17:31:59Z", - "id": 1184018, - "issues": [ - { - "id": 114486124, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/ammo/milestone/6", + "version": "2.0.4" + }, + { + "date": "2016-11-29T01:46:45Z", + "id": 1907949, + "issues": [ + { + "id": 192166444, + "labels": ["dependency"], + "number": 14, + "title": "Update deps", + "url": "https://github.com/hapijs/ammo/issues/14" + }, + { + "id": 177691079, + "labels": ["dependency"], + "number": 10, + "title": "dependency update", + "url": "https://github.com/hapijs/ammo/pull/10" + } + ], + "number": 5, + "url": "https://github.com/hapijs/ammo/milestone/5", + "version": "2.0.3" + }, + { + "date": "2016-07-27T19:25:24Z", + "id": 1777271, + "issues": [ + { + "id": 167934962, + "labels": ["documentation"], + "number": 8, + "title": "Update deps", + "url": "https://github.com/hapijs/ammo/issues/8" + } + ], "number": 4, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/ammo/issues/4" - } - ], - "number": 2, - "url": "https://github.com/hapijs/ammo/milestone/2", - "version": "2.0.0" - }, - { - "date": "2015-06-28T02:26:21Z", - "id": 870755, - "issues": [ - { - "id": 91542729, - "labels": ["non issue"], + "url": "https://github.com/hapijs/ammo/milestone/4", + "version": "2.0.2" + }, + { + "date": "2016-05-19T18:00:33Z", + "id": 1387506, + "issues": [ + { + "id": 155615517, + "labels": ["test"], + "number": 6, + "title": "Test on node v6, update dependencies", + "url": "https://github.com/hapijs/ammo/pull/6" + } + ], "number": 3, - "title": "Apply hapi project style", - "url": "https://github.com/hapijs/ammo/issues/3" - } - ], - "number": 1, - "url": "https://github.com/hapijs/ammo/milestone/1", - "version": "1.0.1" - } + "url": "https://github.com/hapijs/ammo/milestone/3", + "version": "2.0.1" + }, + { + "date": "2016-05-19T17:31:59Z", + "id": 1184018, + "issues": [ + { + "id": 114486124, + "labels": ["breaking changes"], + "number": 4, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/ammo/issues/4" + } + ], + "number": 2, + "url": "https://github.com/hapijs/ammo/milestone/2", + "version": "2.0.0" + }, + { + "date": "2015-06-28T02:26:21Z", + "id": 870755, + "issues": [ + { + "id": 91542729, + "labels": ["non issue"], + "number": 3, + "title": "Apply hapi project style", + "url": "https://github.com/hapijs/ammo/issues/3" + } + ], + "number": 1, + "url": "https://github.com/hapijs/ammo/milestone/1", + "version": "1.0.1" + } ] diff --git a/generated/modules/ammo/info.json b/generated/modules/ammo/info.json index 99122b07..777776b4 100644 --- a/generated/modules/ammo/info.json +++ b/generated/modules/ammo/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 9, - "isPlugin": false, - "link": "https://github.com/hapijs/ammo", - "name": "ammo", - "package": "@hapi/ammo", - "slogan": "HTTP Range processing utilities.", - "sloganHtml": "HTTP Range processing utilities.", - "stars": 1, - "updated": "2024-10-23T15:38:18Z", - "versions": [ - { - "branch": "v6.0.1", - "license": "BSD", - "name": "6.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.1"], - "latestVersion": "6.x.x" + "api": true, + "forks": 9, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/ammo", + "name": "ammo", + "package": "@hapi/ammo", + "slogan": "HTTP Range processing utilities.", + "sloganHtml": "HTTP Range processing utilities.", + "stars": 1, + "updated": "2024-10-23T15:38:18Z", + "versions": [ + { + "branch": "v6.0.1", + "license": "BSD", + "name": "6.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.1"] } diff --git a/generated/modules/b64/changelog.json b/generated/modules/b64/changelog.json index dfbba4d9..7d2af9dc 100644 --- a/generated/modules/b64/changelog.json +++ b/generated/modules/b64/changelog.json @@ -1,314 +1,314 @@ [ - { - "date": "2023-02-11T17:55:46Z", - "id": 7956676, - "issues": [ - { - "id": 1551768572, - "labels": [], - "number": 41, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/b64/pull/41" - } - ], - "number": 18, - "url": "https://github.com/hapijs/b64/milestone/18", - "version": "6.0.1" - }, - { - "date": "2023-02-11T17:55:48Z", - "id": 7956675, - "issues": [ - { - "id": 1229150447, - "labels": ["breaking changes", "dependency"], - "number": 40, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/b64/pull/40" - } - ], - "number": 17, - "url": "https://github.com/hapijs/b64/milestone/17", - "version": "6.0.0" - }, - { - "date": "2020-01-04T22:10:05Z", - "id": 4973155, - "issues": [ - { - "id": 545338278, - "labels": ["breaking changes", "dependency"], - "number": 33, - "title": "Only node 12", - "url": "https://github.com/hapijs/b64/issues/33" - } - ], - "number": 15, - "url": "https://github.com/hapijs/b64/milestone/15", - "version": "5.0.0" - }, - { - "date": "2020-09-26T18:12:20Z", - "id": 4570614, - "issues": [], - "number": 14, - "url": "https://github.com/hapijs/b64/milestone/14", - "version": "4.2.2" - }, - { - "date": "2019-08-13T20:49:32Z", - "id": 4192226, - "issues": [ - { - "id": 480361647, - "labels": ["dependency"], - "number": 26, - "title": "Update deps", - "url": "https://github.com/hapijs/b64/issues/26" - } - ], - "number": 13, - "url": "https://github.com/hapijs/b64/milestone/13", - "version": "4.2.1" - }, - { - "date": "2019-04-02T06:29:59Z", - "id": 3792169, - "issues": [ - { - "id": 428045473, - "labels": ["dependency"], - "number": 25, - "title": "Change module namespace", - "url": "https://github.com/hapijs/b64/issues/25" - } - ], - "number": 10, - "url": "https://github.com/hapijs/b64/milestone/10", - "version": "4.2.0" - }, - { - "date": "2018-11-03T00:15:44Z", - "id": 3787421, - "issues": [ - { - "id": 377000607, - "labels": ["non issue"], - "number": 22, - "title": "Remove engines", - "url": "https://github.com/hapijs/b64/issues/22" - } - ], - "number": 9, - "url": "https://github.com/hapijs/b64/milestone/9", - "version": "4.1.2" - }, - { - "date": "2018-11-01T07:24:53Z", - "id": 3783746, - "issues": [ - { - "id": 376282286, - "labels": ["dependency"], - "number": 21, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/b64/issues/21" - } - ], - "number": 8, - "url": "https://github.com/hapijs/b64/milestone/8", - "version": "4.1.1" - }, - { - "date": "2018-10-31T01:14:32Z", - "id": 2793858, - "issues": [ - { - "id": 375757979, - "labels": ["feature"], - "number": 20, - "title": "Move base64 methods from hoek", - "url": "https://github.com/hapijs/b64/issues/20" - } - ], - "number": 7, - "url": "https://github.com/hapijs/b64/milestone/7", - "version": "4.1.0" - }, - { - "date": "2017-09-26T05:55:20Z", - "id": 2671618, - "issues": [ - { - "id": 260499391, - "labels": ["breaking changes"], + { + "date": "2023-02-11T17:55:46Z", + "id": 7956676, + "issues": [ + { + "id": 1551768572, + "labels": [], + "number": 41, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/b64/pull/41" + } + ], "number": 18, - "title": "Node 8", - "url": "https://github.com/hapijs/b64/issues/18" - } - ], - "number": 6, - "url": "https://github.com/hapijs/b64/milestone/6", - "version": "4.0.0" - }, - { - "date": "2020-09-26T18:12:22Z", - "id": 4170975, - "issues": [], - "number": 12, - "url": "https://github.com/hapijs/b64/milestone/12", - "version": "3.1.1" - }, - { - "date": "2019-03-25T18:23:05Z", - "id": 4170973, - "issues": [ - { - "id": 425046641, - "labels": ["lts"], - "number": 24, - "title": "Commercial version of v3 branch", - "url": "https://github.com/hapijs/b64/issues/24" - } - ], - "number": 11, - "url": "https://github.com/hapijs/b64/milestone/11", - "version": "3.1.0" - }, - { - "date": "2017-07-31T15:29:44Z", - "id": 1910372, - "issues": [ - { - "id": 246813904, - "labels": ["release notes"], + "url": "https://github.com/hapijs/b64/milestone/18", + "version": "6.0.1" + }, + { + "date": "2023-02-11T17:55:48Z", + "id": 7956675, + "issues": [ + { + "id": 1229150447, + "labels": ["breaking changes", "dependency"], + "number": 40, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/b64/pull/40" + } + ], "number": 17, - "title": "3.0.3 Release notes", - "url": "https://github.com/hapijs/b64/issues/17" - }, - { - "id": 246795009, - "labels": ["dependency", "lts"], - "number": 16, - "title": "Remove deprecated buffer usage", - "url": "https://github.com/hapijs/b64/pull/16" - }, - { - "id": 246517248, - "labels": ["lts"], + "url": "https://github.com/hapijs/b64/milestone/17", + "version": "6.0.0" + }, + { + "date": "2020-01-04T22:10:05Z", + "id": 4973155, + "issues": [ + { + "id": 545338278, + "labels": ["breaking changes", "dependency"], + "number": 33, + "title": "Only node 12", + "url": "https://github.com/hapijs/b64/issues/33" + } + ], "number": 15, - "title": "Pending deprecation for new Buffer()", - "url": "https://github.com/hapijs/b64/issues/15" - } - ], - "number": 5, - "url": "https://github.com/hapijs/b64/milestone/5", - "version": "3.0.3" - }, - { - "date": "2016-07-28T19:40:33Z", - "id": 1777280, - "issues": [ - { - "id": 168179106, - "labels": ["dependency"], + "url": "https://github.com/hapijs/b64/milestone/15", + "version": "5.0.0" + }, + { + "date": "2020-09-26T18:12:20Z", + "id": 4570614, + "issues": [], "number": 14, - "title": "Update deps", - "url": "https://github.com/hapijs/b64/issues/14" - }, - { - "id": 156125938, - "labels": ["documentation"], + "url": "https://github.com/hapijs/b64/milestone/14", + "version": "4.2.2" + }, + { + "date": "2019-08-13T20:49:32Z", + "id": 4192226, + "issues": [ + { + "id": 480361647, + "labels": ["dependency"], + "number": 26, + "title": "Update deps", + "url": "https://github.com/hapijs/b64/issues/26" + } + ], "number": 13, - "title": "Document API", - "url": "https://github.com/hapijs/b64/pull/13" - }, - { - "id": 156121447, - "labels": ["dependency"], - "number": 12, - "title": "Separate decode/encode modules", - "url": "https://github.com/hapijs/b64/pull/12" - }, - { - "id": 152695917, - "labels": ["documentation"], + "url": "https://github.com/hapijs/b64/milestone/13", + "version": "4.2.1" + }, + { + "date": "2019-04-02T06:29:59Z", + "id": 3792169, + "issues": [ + { + "id": 428045473, + "labels": ["dependency"], + "number": 25, + "title": "Change module namespace", + "url": "https://github.com/hapijs/b64/issues/25" + } + ], "number": 10, - "title": "Document API", - "url": "https://github.com/hapijs/b64/issues/10" - } - ], - "number": 4, - "url": "https://github.com/hapijs/b64/milestone/4", - "version": "3.0.2" - }, - { - "date": "2016-05-19T18:02:58Z", - "id": 1386891, - "issues": [ - { - "id": 155508759, - "labels": ["dependency"], - "number": 11, - "title": "update hoek to 4.x.x", - "url": "https://github.com/hapijs/b64/pull/11" - }, - { - "id": 152695851, - "labels": ["dependency"], + "url": "https://github.com/hapijs/b64/milestone/10", + "version": "4.2.0" + }, + { + "date": "2018-11-03T00:15:44Z", + "id": 3787421, + "issues": [ + { + "id": 377000607, + "labels": ["non issue"], + "number": 22, + "title": "Remove engines", + "url": "https://github.com/hapijs/b64/issues/22" + } + ], "number": 9, - "title": "Update lab and travis node version", - "url": "https://github.com/hapijs/b64/pull/9" - } - ], - "number": 3, - "url": "https://github.com/hapijs/b64/milestone/3", - "version": "3.0.1" - }, - { - "date": "2015-10-31T20:07:20Z", - "id": 1184002, - "issues": [ - { - "id": 114430304, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/b64/milestone/9", + "version": "4.1.2" + }, + { + "date": "2018-11-01T07:24:53Z", + "id": 3783746, + "issues": [ + { + "id": 376282286, + "labels": ["dependency"], + "number": 21, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/b64/issues/21" + } + ], "number": 8, - "title": "es6. Closes #7", - "url": "https://github.com/hapijs/b64/pull/8" - }, - { - "id": 114430274, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/b64/milestone/8", + "version": "4.1.1" + }, + { + "date": "2018-10-31T01:14:32Z", + "id": 2793858, + "issues": [ + { + "id": 375757979, + "labels": ["feature"], + "number": 20, + "title": "Move base64 methods from hoek", + "url": "https://github.com/hapijs/b64/issues/20" + } + ], "number": 7, - "title": "ES6 style, node v4", - "url": "https://github.com/hapijs/b64/issues/7" - } - ], - "number": 2, - "url": "https://github.com/hapijs/b64/milestone/2", - "version": "3.0.0" - }, - { - "date": "2015-06-28T01:56:43Z", - "id": 811756, - "issues": [ - { - "id": 59539062, - "labels": ["test", "dependency"], + "url": "https://github.com/hapijs/b64/milestone/7", + "version": "4.1.0" + }, + { + "date": "2017-09-26T05:55:20Z", + "id": 2671618, + "issues": [ + { + "id": 260499391, + "labels": ["breaking changes"], + "number": 18, + "title": "Node 8", + "url": "https://github.com/hapijs/b64/issues/18" + } + ], + "number": 6, + "url": "https://github.com/hapijs/b64/milestone/6", + "version": "4.0.0" + }, + { + "date": "2020-09-26T18:12:22Z", + "id": 4170975, + "issues": [], + "number": 12, + "url": "https://github.com/hapijs/b64/milestone/12", + "version": "3.1.1" + }, + { + "date": "2019-03-25T18:23:05Z", + "id": 4170973, + "issues": [ + { + "id": 425046641, + "labels": ["lts"], + "number": 24, + "title": "Commercial version of v3 branch", + "url": "https://github.com/hapijs/b64/issues/24" + } + ], + "number": 11, + "url": "https://github.com/hapijs/b64/milestone/11", + "version": "3.1.0" + }, + { + "date": "2017-07-31T15:29:44Z", + "id": 1910372, + "issues": [ + { + "id": 246813904, + "labels": ["release notes"], + "number": 17, + "title": "3.0.3 Release notes", + "url": "https://github.com/hapijs/b64/issues/17" + }, + { + "id": 246795009, + "labels": ["dependency", "lts"], + "number": 16, + "title": "Remove deprecated buffer usage", + "url": "https://github.com/hapijs/b64/pull/16" + }, + { + "id": 246517248, + "labels": ["lts"], + "number": 15, + "title": "Pending deprecation for new Buffer()", + "url": "https://github.com/hapijs/b64/issues/15" + } + ], "number": 5, - "title": "Update to Lab 5.x.x and Code 1.x.x", - "url": "https://github.com/hapijs/b64/pull/5" - }, - { - "id": 58949705, - "labels": ["test"], + "url": "https://github.com/hapijs/b64/milestone/5", + "version": "3.0.3" + }, + { + "date": "2016-07-28T19:40:33Z", + "id": 1777280, + "issues": [ + { + "id": 168179106, + "labels": ["dependency"], + "number": 14, + "title": "Update deps", + "url": "https://github.com/hapijs/b64/issues/14" + }, + { + "id": 156125938, + "labels": ["documentation"], + "number": 13, + "title": "Document API", + "url": "https://github.com/hapijs/b64/pull/13" + }, + { + "id": 156121447, + "labels": ["dependency"], + "number": 12, + "title": "Separate decode/encode modules", + "url": "https://github.com/hapijs/b64/pull/12" + }, + { + "id": 152695917, + "labels": ["documentation"], + "number": 10, + "title": "Document API", + "url": "https://github.com/hapijs/b64/issues/10" + } + ], "number": 4, - "title": "Update .travis.yml", - "url": "https://github.com/hapijs/b64/pull/4" - } - ], - "number": 1, - "url": "https://github.com/hapijs/b64/milestone/1", - "version": "2.0.1" - } + "url": "https://github.com/hapijs/b64/milestone/4", + "version": "3.0.2" + }, + { + "date": "2016-05-19T18:02:58Z", + "id": 1386891, + "issues": [ + { + "id": 155508759, + "labels": ["dependency"], + "number": 11, + "title": "update hoek to 4.x.x", + "url": "https://github.com/hapijs/b64/pull/11" + }, + { + "id": 152695851, + "labels": ["dependency"], + "number": 9, + "title": "Update lab and travis node version", + "url": "https://github.com/hapijs/b64/pull/9" + } + ], + "number": 3, + "url": "https://github.com/hapijs/b64/milestone/3", + "version": "3.0.1" + }, + { + "date": "2015-10-31T20:07:20Z", + "id": 1184002, + "issues": [ + { + "id": 114430304, + "labels": ["breaking changes"], + "number": 8, + "title": "es6. Closes #7", + "url": "https://github.com/hapijs/b64/pull/8" + }, + { + "id": 114430274, + "labels": ["breaking changes"], + "number": 7, + "title": "ES6 style, node v4", + "url": "https://github.com/hapijs/b64/issues/7" + } + ], + "number": 2, + "url": "https://github.com/hapijs/b64/milestone/2", + "version": "3.0.0" + }, + { + "date": "2015-06-28T01:56:43Z", + "id": 811756, + "issues": [ + { + "id": 59539062, + "labels": ["test", "dependency"], + "number": 5, + "title": "Update to Lab 5.x.x and Code 1.x.x", + "url": "https://github.com/hapijs/b64/pull/5" + }, + { + "id": 58949705, + "labels": ["test"], + "number": 4, + "title": "Update .travis.yml", + "url": "https://github.com/hapijs/b64/pull/4" + } + ], + "number": 1, + "url": "https://github.com/hapijs/b64/milestone/1", + "version": "2.0.1" + } ] diff --git a/generated/modules/b64/info.json b/generated/modules/b64/info.json index 1358193d..3d3bd7ea 100644 --- a/generated/modules/b64/info.json +++ b/generated/modules/b64/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 12, - "isPlugin": false, - "link": "https://github.com/hapijs/b64", - "name": "b64", - "package": "@hapi/b64", - "slogan": "Base64 streaming encoder and decoder.", - "sloganHtml": "Base64 streaming encoder and decoder.", - "stars": 42, - "updated": "2024-10-23T15:42:49Z", - "versions": [ - { - "branch": "v6.0.1", - "license": "BSD", - "name": "6.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.1"], - "latestVersion": "6.x.x" + "api": true, + "forks": 12, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/b64", + "name": "b64", + "package": "@hapi/b64", + "slogan": "Base64 streaming encoder and decoder.", + "sloganHtml": "Base64 streaming encoder and decoder.", + "stars": 42, + "updated": "2024-10-23T15:42:49Z", + "versions": [ + { + "branch": "v6.0.1", + "license": "BSD", + "name": "6.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.1"] } diff --git a/generated/modules/basic/changelog.json b/generated/modules/basic/changelog.json index 11ea4b50..0a1ca923 100644 --- a/generated/modules/basic/changelog.json +++ b/generated/modules/basic/changelog.json @@ -1,328 +1,328 @@ [ - { - "date": "2023-02-11T19:54:09Z", - "id": 8230334, - "issues": [ - { - "id": 1551799090, - "labels": [], - "number": 91, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/basic/pull/91" - } - ], - "number": 19, - "url": "https://github.com/hapijs/basic/milestone/19", - "version": "7.0.1" - }, - { - "date": "2022-07-23T19:16:19Z", - "id": 4993382, - "issues": [ - { - "id": 1307296245, - "labels": ["feature", "breaking changes", "test", "dependency"], - "number": 90, - "title": "Support node v18 and hapi v21, drop node v12 and hapi v18/19", - "url": "https://github.com/hapijs/basic/pull/90" - }, - { - "id": 709584413, - "labels": [], - "number": 83, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/basic/pull/83" - } - ], - "number": 18, - "url": "https://github.com/hapijs/basic/milestone/18", - "version": "7.0.0" - }, - { - "date": "2020-01-10T04:37:00Z", - "id": 4993381, - "issues": [ - { - "id": 547860039, - "labels": ["breaking changes"], - "number": 78, - "title": "Change plugin name to @hapi/basic", - "url": "https://github.com/hapijs/basic/issues/78" - }, - { - "id": 547859912, - "labels": ["breaking changes"], - "number": 77, - "title": "Drop hapi 17", - "url": "https://github.com/hapijs/basic/issues/77" - }, - { - "id": 547859795, - "labels": ["breaking changes", "dependency"], - "number": 76, - "title": "Only support node 12", - "url": "https://github.com/hapijs/basic/issues/76" - } - ], - "number": 17, - "url": "https://github.com/hapijs/basic/milestone/17", - "version": "6.0.0" - }, - { - "date": "2019-08-13T21:57:19Z", - "id": 4240218, - "issues": [ - { - "id": 480362435, - "labels": ["dependency"], - "number": 70, - "title": "Update deps", - "url": "https://github.com/hapijs/basic/issues/70" - } - ], - "number": 15, - "url": "https://github.com/hapijs/basic/milestone/15", - "version": "5.1.1" - }, - { - "date": "2019-04-18T05:07:08Z", - "id": 4240217, - "issues": [ - { - "id": 434586443, - "labels": ["dependency"], - "number": 69, - "title": "Change module namespace", - "url": "https://github.com/hapijs/basic/issues/69" - } - ], - "number": 14, - "url": "https://github.com/hapijs/basic/milestone/14", - "version": "5.1.0" - }, - { - "date": "2019-04-18T04:36:08Z", - "id": 2937122, - "issues": [ - { - "id": 273125034, - "labels": ["breaking changes", "dependency"], - "number": 61, - "title": "Update for hapi 17.x.x", - "url": "https://github.com/hapijs/basic/pull/61" - } - ], - "number": 13, - "url": "https://github.com/hapijs/basic/milestone/13", - "version": "5.0.0" - }, - { - "date": "2019-04-18T04:36:07Z", - "id": 1777259, - "issues": [ - { - "id": 155620437, - "labels": ["test", "dependency"], - "number": 51, - "title": "Test on node v6, update dependencies", - "url": "https://github.com/hapijs/basic/pull/51" - }, - { - "id": 143257195, - "labels": ["documentation"], - "number": 48, - "title": "Documentation update", - "url": "https://github.com/hapijs/basic/pull/48" - } - ], - "number": 12, - "url": "https://github.com/hapijs/basic/milestone/12", - "version": "4.2.0" - }, - { - "date": "2015-11-17T07:08:32Z", - "id": 1412104, - "issues": [ - { - "id": 116979381, - "labels": ["feature"], - "number": 46, - "title": "add option to pass attributes to unauthorized replies", - "url": "https://github.com/hapijs/basic/pull/46" - } - ], - "number": 11, - "url": "https://github.com/hapijs/basic/milestone/11", - "version": "4.1.0" - }, - { - "date": "2015-11-04T12:32:06Z", - "id": 1384330, - "issues": [ - { - "id": 114994225, - "labels": ["breaking changes"], - "number": 44, - "title": "Node 4+, Hapi 10+, ES6 changes. Closes #42", - "url": "https://github.com/hapijs/basic/pull/44" - }, - { - "id": 114155172, - "labels": ["breaking changes"], - "number": 42, - "title": "Node >= 4 / es2015 updates", - "url": "https://github.com/hapijs/basic/issues/42" - }, - { - "id": 114154353, - "labels": ["dependency"], - "number": 41, - "title": "Update devDependencies. Closes #40", - "url": "https://github.com/hapijs/basic/pull/41" - } - ], - "number": 10, - "url": "https://github.com/hapijs/basic/milestone/10", - "version": "4.0.0" - }, - { - "date": "2015-07-04T22:04:08Z", - "id": 899776, - "issues": [ - { - "id": 90340848, - "labels": ["feature", "breaking changes"], - "number": 34, - "title": "Added request object as the first argument in validateFunc", - "url": "https://github.com/hapijs/basic/pull/34" - } - ], - "number": 8, - "url": "https://github.com/hapijs/basic/milestone/8", - "version": "3.0.0" - }, - { - "date": "2014-12-10T22:55:16Z", - "id": 862958, - "issues": [ - { - "id": 50122090, - "labels": ["breaking changes", "dependency"], - "number": 22, - "title": "hapi 8.0 API", - "url": "https://github.com/hapijs/basic/issues/22" - } - ], - "number": 7, - "url": "https://github.com/hapijs/basic/milestone/7", - "version": "2.0.0" - }, - { - "date": "2014-11-12T07:34:45Z", - "id": 741782, - "issues": [ - { - "id": 48481285, - "labels": ["dependency"], - "number": 21, - "title": "Update dev deps. Closes #20", - "url": "https://github.com/hapijs/basic/pull/21" - }, - { - "id": 48481258, - "labels": ["dependency"], - "number": 20, - "title": "Test deps", - "url": "https://github.com/hapijs/basic/issues/20" - } - ], - "number": 6, - "url": "https://github.com/hapijs/basic/milestone/6", - "version": "1.1.2" - }, - { - "date": "2014-08-04T08:44:26Z", - "id": 689702, - "issues": [ - { - "id": 39254037, - "labels": ["bug"], + { + "date": "2023-02-11T19:54:09Z", + "id": 8230334, + "issues": [ + { + "id": 1551799090, + "labels": [], + "number": 91, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/basic/pull/91" + } + ], + "number": 19, + "url": "https://github.com/hapijs/basic/milestone/19", + "version": "7.0.1" + }, + { + "date": "2022-07-23T19:16:19Z", + "id": 4993382, + "issues": [ + { + "id": 1307296245, + "labels": ["feature", "breaking changes", "test", "dependency"], + "number": 90, + "title": "Support node v18 and hapi v21, drop node v12 and hapi v18/19", + "url": "https://github.com/hapijs/basic/pull/90" + }, + { + "id": 709584413, + "labels": [], + "number": 83, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/basic/pull/83" + } + ], + "number": 18, + "url": "https://github.com/hapijs/basic/milestone/18", + "version": "7.0.0" + }, + { + "date": "2020-01-10T04:37:00Z", + "id": 4993381, + "issues": [ + { + "id": 547860039, + "labels": ["breaking changes"], + "number": 78, + "title": "Change plugin name to @hapi/basic", + "url": "https://github.com/hapijs/basic/issues/78" + }, + { + "id": 547859912, + "labels": ["breaking changes"], + "number": 77, + "title": "Drop hapi 17", + "url": "https://github.com/hapijs/basic/issues/77" + }, + { + "id": 547859795, + "labels": ["breaking changes", "dependency"], + "number": 76, + "title": "Only support node 12", + "url": "https://github.com/hapijs/basic/issues/76" + } + ], + "number": 17, + "url": "https://github.com/hapijs/basic/milestone/17", + "version": "6.0.0" + }, + { + "date": "2019-08-13T21:57:19Z", + "id": 4240218, + "issues": [ + { + "id": 480362435, + "labels": ["dependency"], + "number": 70, + "title": "Update deps", + "url": "https://github.com/hapijs/basic/issues/70" + } + ], + "number": 15, + "url": "https://github.com/hapijs/basic/milestone/15", + "version": "5.1.1" + }, + { + "date": "2019-04-18T05:07:08Z", + "id": 4240217, + "issues": [ + { + "id": 434586443, + "labels": ["dependency"], + "number": 69, + "title": "Change module namespace", + "url": "https://github.com/hapijs/basic/issues/69" + } + ], + "number": 14, + "url": "https://github.com/hapijs/basic/milestone/14", + "version": "5.1.0" + }, + { + "date": "2019-04-18T04:36:08Z", + "id": 2937122, + "issues": [ + { + "id": 273125034, + "labels": ["breaking changes", "dependency"], + "number": 61, + "title": "Update for hapi 17.x.x", + "url": "https://github.com/hapijs/basic/pull/61" + } + ], + "number": 13, + "url": "https://github.com/hapijs/basic/milestone/13", + "version": "5.0.0" + }, + { + "date": "2019-04-18T04:36:07Z", + "id": 1777259, + "issues": [ + { + "id": 155620437, + "labels": ["test", "dependency"], + "number": 51, + "title": "Test on node v6, update dependencies", + "url": "https://github.com/hapijs/basic/pull/51" + }, + { + "id": 143257195, + "labels": ["documentation"], + "number": 48, + "title": "Documentation update", + "url": "https://github.com/hapijs/basic/pull/48" + } + ], + "number": 12, + "url": "https://github.com/hapijs/basic/milestone/12", + "version": "4.2.0" + }, + { + "date": "2015-11-17T07:08:32Z", + "id": 1412104, + "issues": [ + { + "id": 116979381, + "labels": ["feature"], + "number": 46, + "title": "add option to pass attributes to unauthorized replies", + "url": "https://github.com/hapijs/basic/pull/46" + } + ], "number": 11, - "title": "Authentication fails when password contains one or more colons", - "url": "https://github.com/hapijs/basic/issues/11" - }, - { - "id": 39206773, - "labels": ["non issue"], + "url": "https://github.com/hapijs/basic/milestone/11", + "version": "4.1.0" + }, + { + "date": "2015-11-04T12:32:06Z", + "id": 1384330, + "issues": [ + { + "id": 114994225, + "labels": ["breaking changes"], + "number": 44, + "title": "Node 4+, Hapi 10+, ES6 changes. Closes #42", + "url": "https://github.com/hapijs/basic/pull/44" + }, + { + "id": 114155172, + "labels": ["breaking changes"], + "number": 42, + "title": "Node >= 4 / es2015 updates", + "url": "https://github.com/hapijs/basic/issues/42" + }, + { + "id": 114154353, + "labels": ["dependency"], + "number": 41, + "title": "Update devDependencies. Closes #40", + "url": "https://github.com/hapijs/basic/pull/41" + } + ], "number": 10, - "title": "issue passing errors to validateFunc", - "url": "https://github.com/hapijs/basic/pull/10" - } - ], - "number": 5, - "url": "https://github.com/hapijs/basic/milestone/5", - "version": "1.1.1" - }, - { - "date": "2014-06-12T20:21:41Z", - "id": 689701, - "issues": [ - { - "id": 35528158, - "labels": [], + "url": "https://github.com/hapijs/basic/milestone/10", + "version": "4.0.0" + }, + { + "date": "2015-07-04T22:04:08Z", + "id": 899776, + "issues": [ + { + "id": 90340848, + "labels": ["feature", "breaking changes"], + "number": 34, + "title": "Added request object as the first argument in validateFunc", + "url": "https://github.com/hapijs/basic/pull/34" + } + ], + "number": 8, + "url": "https://github.com/hapijs/basic/milestone/8", + "version": "3.0.0" + }, + { + "date": "2014-12-10T22:55:16Z", + "id": 862958, + "issues": [ + { + "id": 50122090, + "labels": ["breaking changes", "dependency"], + "number": 22, + "title": "hapi 8.0 API", + "url": "https://github.com/hapijs/basic/issues/22" + } + ], "number": 7, - "title": "Updated to Hapi 6.0", - "url": "https://github.com/hapijs/basic/pull/7" - }, - { - "id": 34346379, - "labels": [], + "url": "https://github.com/hapijs/basic/milestone/7", + "version": "2.0.0" + }, + { + "date": "2014-11-12T07:34:45Z", + "id": 741782, + "issues": [ + { + "id": 48481285, + "labels": ["dependency"], + "number": 21, + "title": "Update dev deps. Closes #20", + "url": "https://github.com/hapijs/basic/pull/21" + }, + { + "id": 48481258, + "labels": ["dependency"], + "number": 20, + "title": "Test deps", + "url": "https://github.com/hapijs/basic/issues/20" + } + ], "number": 6, - "title": "Prepare for hapi v6.0", - "url": "https://github.com/hapijs/basic/issues/6" - } - ], - "number": 4, - "url": "https://github.com/hapijs/basic/milestone/4", - "version": "1.1.0" - }, - { - "date": "2014-05-20T22:33:26Z", - "id": 605458, - "issues": [ - { - "id": 33936138, - "labels": ["test"], + "url": "https://github.com/hapijs/basic/milestone/6", + "version": "1.1.2" + }, + { + "date": "2014-08-04T08:44:26Z", + "id": 689702, + "issues": [ + { + "id": 39254037, + "labels": ["bug"], + "number": 11, + "title": "Authentication fails when password contains one or more colons", + "url": "https://github.com/hapijs/basic/issues/11" + }, + { + "id": 39206773, + "labels": ["non issue"], + "number": 10, + "title": "issue passing errors to validateFunc", + "url": "https://github.com/hapijs/basic/pull/10" + } + ], "number": 5, - "title": "Bring coverage back to 100%", - "url": "https://github.com/hapijs/basic/issues/5" - } - ], - "number": 2, - "url": "https://github.com/hapijs/basic/milestone/2", - "version": "1.0.2" - }, - { - "date": "2014-03-21T20:19:05Z", - "id": 605457, - "issues": [ - { - "id": 29418207, - "labels": ["feature"], + "url": "https://github.com/hapijs/basic/milestone/5", + "version": "1.1.1" + }, + { + "date": "2014-06-12T20:21:41Z", + "id": 689701, + "issues": [ + { + "id": 35528158, + "labels": [], + "number": 7, + "title": "Updated to Hapi 6.0", + "url": "https://github.com/hapijs/basic/pull/7" + }, + { + "id": 34346379, + "labels": [], + "number": 6, + "title": "Prepare for hapi v6.0", + "url": "https://github.com/hapijs/basic/issues/6" + } + ], + "number": 4, + "url": "https://github.com/hapijs/basic/milestone/4", + "version": "1.1.0" + }, + { + "date": "2014-05-20T22:33:26Z", + "id": 605458, + "issues": [ + { + "id": 33936138, + "labels": ["test"], + "number": 5, + "title": "Bring coverage back to 100%", + "url": "https://github.com/hapijs/basic/issues/5" + } + ], "number": 2, - "title": "update peerDependency", - "url": "https://github.com/hapijs/basic/pull/2" - }, - { - "id": 29326562, - "labels": ["feature"], + "url": "https://github.com/hapijs/basic/milestone/2", + "version": "1.0.2" + }, + { + "date": "2014-03-21T20:19:05Z", + "id": 605457, + "issues": [ + { + "id": 29418207, + "labels": ["feature"], + "number": 2, + "title": "update peerDependency", + "url": "https://github.com/hapijs/basic/pull/2" + }, + { + "id": 29326562, + "labels": ["feature"], + "number": 1, + "title": "change hapi peer dependency to 3.0.0", + "url": "https://github.com/hapijs/basic/issues/1" + } + ], "number": 1, - "title": "change hapi peer dependency to 3.0.0", - "url": "https://github.com/hapijs/basic/issues/1" - } - ], - "number": 1, - "url": "https://github.com/hapijs/basic/milestone/1", - "version": "1.0.1" - } + "url": "https://github.com/hapijs/basic/milestone/1", + "version": "1.0.1" + } ] diff --git a/generated/modules/basic/info.json b/generated/modules/basic/info.json index 9b81559b..279de045 100644 --- a/generated/modules/basic/info.json +++ b/generated/modules/basic/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 64, - "isPlugin": true, - "link": "https://github.com/hapijs/basic", - "name": "basic", - "package": "@hapi/basic", - "slogan": "Basic authentication plugin.", - "sloganHtml": "Basic authentication plugin.", - "stars": 146, - "updated": "2024-10-23T14:42:22Z", - "versions": [ - { - "branch": "v7.0.2", - "license": "BSD", - "name": "7.0.2", - "node": ">= 16" - } - ], - "versionsArray": ["7.0.2"], - "latestVersion": "7.x.x" + "api": true, + "forks": 64, + "isPlugin": true, + "latestVersion": "7.x.x", + "link": "https://github.com/hapijs/basic", + "name": "basic", + "package": "@hapi/basic", + "slogan": "Basic authentication plugin.", + "sloganHtml": "Basic authentication plugin.", + "stars": 146, + "updated": "2024-10-23T14:42:22Z", + "versions": [ + { + "branch": "v7.0.2", + "license": "BSD", + "name": "7.0.2", + "node": ">= 16" + } + ], + "versionsArray": ["7.0.2"] } diff --git a/generated/modules/bell/changelog.json b/generated/modules/bell/changelog.json index e341e060..fdc14a5e 100644 --- a/generated/modules/bell/changelog.json +++ b/generated/modules/bell/changelog.json @@ -1,2291 +1,2291 @@ [ - { - "date": "2025-03-12T12:11:47Z", - "id": 12500794, - "issues": [ - { - "id": 2911326516, - "labels": ["feature"], - "number": 497, - "title": "Add tokenParams option", - "url": "https://github.com/hapijs/bell/pull/497" - }, - { - "id": 2844302064, - "labels": ["breaking changes"], - "number": 496, - "title": "chore: remove mixer provider", - "url": "https://github.com/hapijs/bell/pull/496" - }, - { - "id": 1109523947, - "labels": ["documentation"], - "number": 485, - "title": "remove the bit about google plus", - "url": "https://github.com/hapijs/bell/pull/485" - } - ], - "number": 91, - "url": "https://github.com/hapijs/bell/milestone/91", - "version": "13.1.0" - }, - { - "date": "2024-03-19T15:01:00Z", - "id": 10705042, - "issues": [ - { - "id": 2195000907, - "labels": ["types"], - "number": 493, - "title": "feat: 🎸 add types", - "url": "https://github.com/hapijs/bell/pull/493" - } - ], - "number": 90, - "url": "https://github.com/hapijs/bell/milestone/90", - "version": "13.0.2" - }, - { - "date": "2023-02-11T19:53:36Z", - "id": 8521840, - "issues": [ - { - "id": 1551797532, - "labels": ["dependency"], - "number": 490, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/bell/pull/490" - } - ], - "number": 89, - "url": "https://github.com/hapijs/bell/milestone/89", - "version": "13.0.1" - }, - { - "date": "2022-10-10T12:22:30Z", - "id": 8521839, - "issues": [ - { - "id": 1402605047, - "labels": ["breaking changes", "test", "dependency"], - "number": 488, - "title": "Support hapi v21 and node v18, drop hapi v19 and node v12, test ESM support", - "url": "https://github.com/hapijs/bell/pull/488" - } - ], - "number": 88, - "url": "https://github.com/hapijs/bell/milestone/88", - "version": "13.0.0" - }, - { - "date": "2021-08-26T05:07:21Z", - "id": 7091454, - "issues": [ - { - "id": 975319875, - "labels": ["feature"], - "number": 481, - "title": "Support OAuth1 client wreck options", - "url": "https://github.com/hapijs/bell/pull/481" - } - ], - "number": 86, - "url": "https://github.com/hapijs/bell/milestone/86", - "version": "12.3.0" - }, - { - "date": "2021-03-15T08:08:24Z", - "id": 5921588, - "issues": [ - { - "id": 791651301, - "labels": [], - "number": 476, - "title": "Add support for providing clientSecret as a function", - "url": "https://github.com/hapijs/bell/pull/476" - } - ], - "number": 85, - "url": "https://github.com/hapijs/bell/milestone/85", - "version": "12.2.0" - }, - { - "date": "2020-09-27T00:04:14Z", - "id": 5618252, - "issues": [ - { - "id": 709585465, - "labels": [], - "number": 473, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/bell/pull/473" - }, - { - "id": 684021959, - "labels": [], - "number": 470, - "title": "migrate to new travis format", - "url": "https://github.com/hapijs/bell/pull/470" - }, - { - "id": 682270517, - "labels": ["documentation"], - "number": 469, - "title": "[Bugfix] Okta example code", - "url": "https://github.com/hapijs/bell/pull/469" - }, - { - "id": 677270512, - "labels": [], - "number": 467, - "title": "update to hapi 20", - "url": "https://github.com/hapijs/bell/pull/467" - }, - { - "id": 672169679, - "labels": [], - "number": 466, - "title": "upgrade bell to use just regular joi package and update teamwork as well", - "url": "https://github.com/hapijs/bell/pull/466" - } - ], - "number": 84, - "url": "https://github.com/hapijs/bell/milestone/84", - "version": "12.1.1" - }, - { - "date": "2020-08-20T20:22:45Z", - "id": 5428750, - "issues": [ - { - "id": 549219644, - "labels": ["feature"], - "number": 450, - "title": "Support Okta custom authorization server", - "url": "https://github.com/hapijs/bell/pull/450" - } - ], - "number": 83, - "url": "https://github.com/hapijs/bell/milestone/83", - "version": "12.1.0" - }, - { - "date": "2020-05-15T20:29:49Z", - "id": 4993492, - "issues": [ - { - "id": 586945013, - "labels": ["bug"], - "number": 458, - "title": "Issue with the meetup provider", - "url": "https://github.com/hapijs/bell/issues/458" - } - ], - "number": 82, - "url": "https://github.com/hapijs/bell/milestone/82", - "version": "12.0.1" - }, - { - "date": "2020-01-10T05:54:33Z", - "id": 4676226, - "issues": [ - { - "id": 547880645, - "labels": ["breaking changes"], - "number": 449, - "title": "Change plugin name to @hapi/bell", - "url": "https://github.com/hapijs/bell/issues/449" - }, - { - "id": 547878754, - "labels": ["breaking changes", "dependency"], - "number": 448, - "title": "Require hapi 19", - "url": "https://github.com/hapijs/bell/issues/448" - }, - { - "id": 547878234, - "labels": ["breaking changes", "dependency"], - "number": 447, - "title": "Only node 12", - "url": "https://github.com/hapijs/bell/issues/447" - }, - { - "id": 536654753, - "labels": [], - "number": 445, - "title": "Use actual package name for plugin name", - "url": "https://github.com/hapijs/bell/pull/445" - } - ], - "number": 81, - "url": "https://github.com/hapijs/bell/milestone/81", - "version": "12.0.0" - }, - { - "date": "2019-09-20T05:16:48Z", - "id": 4655991, - "issues": [ - { - "id": 494478938, - "labels": ["feature"], - "number": 432, - "title": "Return azureAD provider", - "url": "https://github.com/hapijs/bell/issues/432" - } - ], - "number": 80, - "url": "https://github.com/hapijs/bell/milestone/80", - "version": "11.1.0" - }, - { - "date": "2019-09-13T07:05:49Z", - "id": 4570742, - "issues": [ - { - "id": 493159204, - "labels": ["breaking changes"], - "number": 428, - "title": "Make dropbox-v2 the only provider", - "url": "https://github.com/hapijs/bell/issues/428" - }, - { - "id": 493148182, - "labels": ["breaking changes"], - "number": 427, - "title": "Replace office365, azuread with updated azure provider", - "url": "https://github.com/hapijs/bell/issues/427" - }, - { - "id": 493143645, - "labels": ["dependency"], - "number": 426, - "title": "Update joi", - "url": "https://github.com/hapijs/bell/issues/426" - }, - { - "id": 479714612, - "labels": ["feature"], - "number": 420, - "title": "Add support for PKCE", - "url": "https://github.com/hapijs/bell/issues/420" - }, - { - "id": 473948387, - "labels": ["breaking changes"], - "number": 418, - "title": "New Twitch API oAuth & profile", - "url": "https://github.com/hapijs/bell/pull/418" - }, - { - "id": 472871148, - "labels": ["documentation"], - "number": 416, - "title": "Update github login example", - "url": "https://github.com/hapijs/bell/pull/416" - }, - { - "id": 447239056, - "labels": ["feature"], - "number": 411, - "title": "[Bell-410] Add AWS Cognito provider", - "url": "https://github.com/hapijs/bell/pull/411" - }, - { - "id": 446217428, - "labels": ["feature"], - "number": 410, - "title": "Add provider for AWS Cognito", - "url": "https://github.com/hapijs/bell/issues/410" - }, - { - "id": 439772064, - "labels": ["feature"], - "number": 409, - "title": "RFC 7636: Proof Key for Code Exchange", - "url": "https://github.com/hapijs/bell/pull/409" - }, - { - "id": 427414723, - "labels": ["bug", "breaking changes"], - "number": 404, - "title": "Add Azure Oauth2 v2 provider", - "url": "https://github.com/hapijs/bell/pull/404" - }, - { - "id": 424632655, - "labels": ["bug"], - "number": 403, - "title": "Correctly utilize JWT tokens instead of normal accessTokens for AzureAD", - "url": "https://github.com/hapijs/bell/issues/403" - }, - { - "id": 343982499, - "labels": ["bug"], - "number": 376, - "title": "Update Office365 / Microsoft provider", - "url": "https://github.com/hapijs/bell/issues/376" - } - ], - "number": 79, - "url": "https://github.com/hapijs/bell/milestone/79", - "version": "11.0.0" - }, - { - "date": "2019-08-14T04:48:02Z", - "id": 4245748, - "issues": [ - { - "id": 480478223, - "labels": ["dependency"], - "number": 421, - "title": "Update deps", - "url": "https://github.com/hapijs/bell/issues/421" - } - ], - "number": 77, - "url": "https://github.com/hapijs/bell/milestone/77", - "version": "10.1.1" - }, - { - "date": "2019-04-20T19:54:13Z", - "id": 4113366, - "issues": [ - { - "id": 435431046, - "labels": ["dependency"], - "number": 405, - "title": "Change module namespace", - "url": "https://github.com/hapijs/bell/issues/405" - } - ], - "number": 76, - "url": "https://github.com/hapijs/bell/milestone/76", - "version": "10.1.0" - }, - { - "date": "2019-03-05T20:39:59Z", - "id": 4093876, - "issues": [ - { - "id": 417513441, - "labels": ["breaking changes", "release notes"], - "number": 400, - "title": "10.0.0 Release Notes", - "url": "https://github.com/hapijs/bell/issues/400" - }, - { - "id": 415004859, - "labels": ["feature", "breaking changes"], - "number": 397, - "title": "Add support for hapi 18", - "url": "https://github.com/hapijs/bell/pull/397" - }, - { - "id": 403645501, - "labels": ["bug"], - "number": 394, - "title": "Google auth redirect loop with hapi v18", - "url": "https://github.com/hapijs/bell/issues/394" - }, - { - "id": 399247375, - "labels": ["feature", "breaking changes"], - "number": 391, - "title": "Update LinkedIn to use new lite profile", - "url": "https://github.com/hapijs/bell/pull/391" - }, - { - "id": 397131758, - "labels": ["feature"], - "number": 390, - "title": "Upgrade LinkedIn to support new 'Lite Profile'", - "url": "https://github.com/hapijs/bell/issues/390" - } - ], - "number": 75, - "url": "https://github.com/hapijs/bell/milestone/75", - "version": "10.0.0" - }, - { - "date": "2019-04-20T22:20:42Z", - "id": 4245765, - "issues": [ - { - "id": 435434270, - "labels": ["dependency", "lts"], - "number": 406, - "title": "Change module namespace for v9 branch", - "url": "https://github.com/hapijs/bell/issues/406" - } - ], - "number": 78, - "url": "https://github.com/hapijs/bell/milestone/78", - "version": "9.6.0" - }, - { - "date": "2019-02-27T18:28:00Z", - "id": 3811130, - "issues": [ - { - "id": 408872079, - "labels": ["feature"], - "number": 396, - "title": "Allow isSameSite customization", - "url": "https://github.com/hapijs/bell/pull/396" - }, - { - "id": 408847542, - "labels": ["feature"], - "number": 395, - "title": "Safari isSameSite", - "url": "https://github.com/hapijs/bell/issues/395" - }, - { - "id": 387924079, - "labels": ["documentation"], - "number": 389, - "title": "Add changelog.md", - "url": "https://github.com/hapijs/bell/pull/389" - } - ], - "number": 74, - "url": "https://github.com/hapijs/bell/milestone/74", - "version": "9.5.0" - }, - { - "date": "2018-11-10T22:28:07Z", - "id": 3811122, - "issues": [ - { - "id": 379456755, - "labels": ["test", "non issue"], - "number": 386, - "title": "Cleanup", - "url": "https://github.com/hapijs/bell/issues/386" - }, - { - "id": 366165691, - "labels": ["feature"], - "number": 381, - "title": "FB custom scope + upgrade api version", - "url": "https://github.com/hapijs/bell/pull/381" - }, - { - "id": 341666043, - "labels": ["bug", "dependency"], - "number": 374, - "title": "Ensure Auth0 profile is availabe in all cases", - "url": "https://github.com/hapijs/bell/pull/374" - }, - { - "id": 339269483, - "labels": ["feature", "dependency"], - "number": 373, - "title": "Use Stripe Express", - "url": "https://github.com/hapijs/bell/pull/373" - }, - { - "id": 338382792, - "labels": ["feature"], - "number": 372, - "title": "Add config 'fields' to vk provider", - "url": "https://github.com/hapijs/bell/pull/372" - } - ], - "number": 73, - "url": "https://github.com/hapijs/bell/milestone/73", - "version": "9.4.0" - }, - { - "date": "2018-05-29T19:00:33Z", - "id": 3237720, - "issues": [ - { - "id": 313209143, - "labels": ["feature"], - "number": 358, - "title": "Use OIDC compliant profile from Auth0", - "url": "https://github.com/hapijs/bell/pull/358" - } - ], - "number": 71, - "url": "https://github.com/hapijs/bell/milestone/71", - "version": "9.3.1" - }, - { - "date": "2018-04-03T08:01:17Z", - "id": 3237571, - "issues": [ - { - "id": 310722160, - "labels": [], - "number": 356, - "title": "fix(package): update Boom and fix trying to create an instance of .internal", - "url": "https://github.com/hapijs/bell/pull/356" - }, - { - "id": 308249093, - "labels": ["bug", "security"], - "number": 355, - "title": "Set SameSite=Strict for improved security", - "url": "https://github.com/hapijs/bell/pull/355" - } - ], - "number": 70, - "url": "https://github.com/hapijs/bell/milestone/70", - "version": "9.3.0" - }, - { - "date": "2018-04-02T19:10:36Z", - "id": 3142521, - "issues": [ - { - "id": 307176741, - "labels": ["bug"], - "number": 354, - "title": "Remove new Buffer usage", - "url": "https://github.com/hapijs/bell/pull/354" - }, - { - "id": 302854966, - "labels": ["feature"], - "number": 350, - "title": "Picture object included in the profile object for facebook oauth", - "url": "https://github.com/hapijs/bell/pull/350" - }, - { - "id": 301989327, - "labels": ["bug"], - "number": 349, - "title": "Fix problem with not exist required param 'v' last versitons today 5.…", - "url": "https://github.com/hapijs/bell/pull/349" - }, - { - "id": 301988276, - "labels": ["bug"], - "number": 348, - "title": "VK auth dev error: 'v' is required ", - "url": "https://github.com/hapijs/bell/issues/348" - }, - { - "id": 301670554, - "labels": ["feature"], - "number": 347, - "title": "facebook picture field added to get profile picture", - "url": "https://github.com/hapijs/bell/pull/347" - } - ], - "number": 68, - "url": "https://github.com/hapijs/bell/milestone/68", - "version": "9.2.0" - }, - { - "date": "2018-02-26T06:51:41Z", - "id": 3142375, - "issues": [ - { - "id": 207295360, - "labels": ["feature"], - "number": 295, - "title": "Expose query in spite of errors", - "url": "https://github.com/hapijs/bell/issues/295" - }, - { - "id": 199957498, - "labels": ["feature", "breaking changes"], - "number": 288, - "title": "Remove or more comprehensively document provider.version", - "url": "https://github.com/hapijs/bell/issues/288" - } - ], - "number": 67, - "url": "https://github.com/hapijs/bell/milestone/67", - "version": "9.1.0" - }, - { - "date": "2018-02-26T04:20:11Z", - "id": 2410070, - "issues": [ - { - "id": 300104867, - "labels": ["breaking changes", "release notes"], - "number": 345, - "title": "9.0.0 Release Notes", - "url": "https://github.com/hapijs/bell/issues/345" - }, - { - "id": 272808715, - "labels": ["feature", "breaking changes", "dependency"], - "number": 332, - "title": "[WIP] Hapi 17 Support", - "url": "https://github.com/hapijs/bell/pull/332" - }, - { - "id": 271150791, - "labels": ["breaking changes", "dependency"], - "number": 330, - "title": "hapi v17 support", - "url": "https://github.com/hapijs/bell/issues/330" - } - ], - "number": 63, - "url": "https://github.com/hapijs/bell/milestone/63", - "version": "9.0.0" - }, - { - "date": "2017-11-19T16:41:43Z", - "id": 2922695, - "issues": [ - { - "id": 267737145, - "labels": ["feature"], - "number": 325, - "title": "Changed the discord providers image url prefix", - "url": "https://github.com/hapijs/bell/pull/325" - }, - { - "id": 256815119, - "labels": ["feature"], - "number": 321, - "title": "Add trakt.tv provider", - "url": "https://github.com/hapijs/bell/pull/321" - }, - { - "id": 197150550, - "labels": ["feature"], - "number": 286, - "title": "Added custom OAuth2 client authentication", - "url": "https://github.com/hapijs/bell/pull/286" - } - ], - "number": 66, - "url": "https://github.com/hapijs/bell/milestone/66", - "version": "8.9.0" - }, - { - "date": "2017-09-24T21:05:07Z", - "id": 2787762, - "issues": [ - { - "id": 245907995, - "labels": ["feature"], - "number": 319, - "title": "Allowing the location option to be a function", - "url": "https://github.com/hapijs/bell/pull/319" - }, - { - "id": 243935086, - "labels": ["feature"], - "number": 318, - "title": "Add Mixer as a new provider", - "url": "https://github.com/hapijs/bell/pull/318" - }, - { - "id": 238642668, - "labels": ["feature"], - "number": 316, - "title": "Add Stripe as a new provider", - "url": "https://github.com/hapijs/bell/pull/316" - }, - { - "id": 234995785, - "labels": ["feature"], - "number": 315, - "title": "Add `fields` option to Facebook provider", - "url": "https://github.com/hapijs/bell/pull/315" - }, - { - "id": 166080952, - "labels": ["feature"], - "number": 244, - "title": "New dropbox-v2 provider which uses Dropbox V2 API", - "url": "https://github.com/hapijs/bell/pull/244" - } - ], - "number": 65, - "url": "https://github.com/hapijs/bell/milestone/65", - "version": "8.8.0" - }, - { - "date": "2017-05-09T03:28:13Z", - "id": 2508991, - "issues": [ - { - "id": 226975823, - "labels": ["feature"], - "number": 312, - "title": "add DigitalOcean provider", - "url": "https://github.com/hapijs/bell/pull/312" - }, - { - "id": 224568867, - "labels": ["feature"], - "number": 311, - "title": "Updates Facebook API to v2.9", - "url": "https://github.com/hapijs/bell/pull/311" - }, - { - "id": 219098039, - "labels": ["feature"], - "number": 308, - "title": "Add `'profile'` to list of default scopes for Okta", - "url": "https://github.com/hapijs/bell/pull/308" - }, - { - "id": 215638763, - "labels": [], - "number": 303, - "title": "Facebook", - "url": "https://github.com/hapijs/bell/pull/303" - }, - { - "id": 171285612, - "labels": ["feature", "breaking changes"], - "number": 252, - "title": "[Update] Updates Facebook provider to v2.7", - "url": "https://github.com/hapijs/bell/pull/252" - } - ], - "number": 64, - "url": "https://github.com/hapijs/bell/milestone/64", - "version": "8.7.0" - }, - { - "date": "2017-03-24T20:22:14Z", - "id": 2381785, - "issues": [ - { - "id": 210634907, - "labels": ["feature"], - "number": 299, - "title": "Add support for authentication with Okta", - "url": "https://github.com/hapijs/bell/pull/299" - }, - { - "id": 208807117, - "labels": ["feature"], - "number": 298, - "title": "added spotify", - "url": "https://github.com/hapijs/bell/pull/298" - }, - { - "id": 182682268, - "labels": ["feature"], - "number": 273, - "title": "Fixes #261 expose OAUTH2 token response as request.auth.artifacts", - "url": "https://github.com/hapijs/bell/pull/273" - } - ], - "number": 62, - "url": "https://github.com/hapijs/bell/milestone/62", - "version": "8.6.0" - }, - { - "date": "2017-03-24T20:22:22Z", - "id": 2272937, - "issues": [ - { - "id": 200068706, - "labels": ["feature"], - "number": 289, - "title": "AzureAD: Support email, when userPrincipalName (upn) is not available", - "url": "https://github.com/hapijs/bell/pull/289" - } - ], - "number": 61, - "url": "https://github.com/hapijs/bell/milestone/61", - "version": "8.5.1" - }, - { - "date": "2017-01-24T02:39:32Z", - "id": 1953216, - "issues": [ - { - "id": 202679436, - "labels": ["feature"], - "number": 291, - "title": "Medium provider", - "url": "https://github.com/hapijs/bell/issues/291" - } - ], - "number": 54, - "url": "https://github.com/hapijs/bell/milestone/54", - "version": "8.5.0" - }, - { - "date": "2016-12-01T03:29:08Z", - "id": 2074721, - "issues": [ - { - "id": 192744406, - "labels": ["dependency"], - "number": 280, - "title": "hapi 16", - "url": "https://github.com/hapijs/bell/issues/280" - }, - { - "id": 178545052, - "labels": ["feature"], - "number": 266, - "title": "Implement Azure Active Directory authentication for enterprise AD logins", - "url": "https://github.com/hapijs/bell/issues/266" - } - ], - "number": 60, - "url": "https://github.com/hapijs/bell/milestone/60", - "version": "8.4.0" - }, - { - "date": "2016-10-04T14:36:45Z", - "id": 2046990, - "issues": [ - { - "id": 178830165, - "labels": ["feature"], - "number": 267, - "title": "Fixes #266 Implements azure active directory as bell azuread module", - "url": "https://github.com/hapijs/bell/pull/267" - } - ], - "number": 59, - "url": "https://github.com/hapijs/bell/milestone/59", - "version": "8.3.0" - }, - { - "date": "2016-09-21T14:49:02Z", - "id": 2016833, - "issues": [ - { - "id": 178101952, - "labels": ["bug"], - "number": 265, - "title": "Set isSameSite to false and add code to support Hapi 13.5+", - "url": "https://github.com/hapijs/bell/pull/265" - }, - { - "id": 177214049, - "labels": ["bug"], - "number": 264, - "title": "Bell is not compatible with Hapi 15 due to same-site: strict for cookie", - "url": "https://github.com/hapijs/bell/issues/264" - } - ], - "number": 58, - "url": "https://github.com/hapijs/bell/milestone/58", - "version": "8.2.1" - }, - { - "date": "2016-09-07T14:41:01Z", - "id": 1989012, - "issues": [ - { - "id": 175519020, - "labels": ["feature", "test", "dependency"], - "number": 259, - "title": "Support Hapi 15 & upgrade boom + wreck dependencies", - "url": "https://github.com/hapijs/bell/issues/259" - }, - { - "id": 173508017, - "labels": ["bug", "feature"], - "number": 256, - "title": "allow for leading whitespace in JSON", - "url": "https://github.com/hapijs/bell/pull/256" - }, - { - "id": 169316259, - "labels": ["feature"], - "number": 248, - "title": "Add discord as a new provider", - "url": "https://github.com/hapijs/bell/pull/248" - } - ], - "number": 57, - "url": "https://github.com/hapijs/bell/milestone/57", - "version": "8.2.0" - }, - { - "date": "2016-09-07T14:32:01Z", - "id": 1953230, - "issues": [ - { - "id": 172314388, - "labels": ["bug"], - "number": 254, - "title": "fix mapping of google profile fixes #251", - "url": "https://github.com/hapijs/bell/pull/254" - }, - { - "id": 170634385, - "labels": ["bug"], - "number": 251, - "title": "Google user info", - "url": "https://github.com/hapijs/bell/issues/251" - } - ], - "number": 56, - "url": "https://github.com/hapijs/bell/milestone/56", - "version": "8.1.1" - }, - { - "date": "2016-08-20T21:39:28Z", - "id": 1953219, - "issues": [ - { - "id": 169709882, - "labels": ["feature"], - "number": 249, - "title": "Twitter additional GET parameters on extended profile request", - "url": "https://github.com/hapijs/bell/pull/249" - } - ], - "number": 55, - "url": "https://github.com/hapijs/bell/milestone/55", - "version": "8.1.0" - }, - { - "date": "2016-07-29T20:27:10Z", - "id": 1912593, - "issues": [ - { - "id": 168406817, - "labels": ["dependency"], - "number": 247, - "title": "Allow hapi 14", - "url": "https://github.com/hapijs/bell/issues/247" - } - ], - "number": 52, - "url": "https://github.com/hapijs/bell/milestone/52", - "version": "8.0.1" - }, - { - "date": "2016-07-17T20:22:49Z", - "id": 1609606, - "issues": [ - { - "id": 165993769, - "labels": ["release notes"], - "number": 243, - "title": "Bell 8.0.0 Release Notes", - "url": "https://github.com/hapijs/bell/issues/243" - }, - { - "id": 165923409, - "labels": ["dependency"], - "number": 242, - "title": "Upgrade Joi dependence to 9.x.x", - "url": "https://github.com/hapijs/bell/issues/242" - }, - { - "id": 165436074, - "labels": ["feature"], - "number": 240, - "title": "Fitbit provider", - "url": "https://github.com/hapijs/bell/pull/240" - }, - { - "id": 160553457, - "labels": ["feature", "breaking changes"], - "number": 235, - "title": "Separate Google into two providers. #228", - "url": "https://github.com/hapijs/bell/pull/235" - }, - { - "id": 160315321, - "labels": ["feature"], - "number": 233, - "title": "Allow providerParams to be a method invoked with the request", - "url": "https://github.com/hapijs/bell/pull/233" - }, - { - "id": 158480686, - "labels": ["feature"], - "number": 228, - "title": "Remove dependency on Google Plus APIs", - "url": "https://github.com/hapijs/bell/issues/228" - } - ], - "number": 34, - "url": "https://github.com/hapijs/bell/milestone/34", - "version": "8.0.0" - }, - { - "date": "2016-07-16T10:31:18Z", - "id": 1887345, - "issues": [ - { - "id": 165000176, - "labels": ["bug"], - "number": 239, - "title": "[Fix] Fixes email address field in LinkedIn", - "url": "https://github.com/hapijs/bell/pull/239" - } - ], - "number": 51, - "url": "https://github.com/hapijs/bell/milestone/51", - "version": "7.9.3" - }, - { - "date": "2016-06-22T23:36:12Z", - "id": 1844351, - "issues": [ - { - "id": 161810205, - "labels": ["bug"], - "number": 237, - "title": "Profiles are broken when used directly", - "url": "https://github.com/hapijs/bell/issues/237" - } - ], - "number": 50, - "url": "https://github.com/hapijs/bell/milestone/50", - "version": "7.9.1" - }, - { - "date": "2016-06-19T20:04:09Z", - "id": 1803800, - "issues": [ - { - "id": 160642160, - "labels": ["feature"], - "number": 236, - "title": "Aphuang2013 patch 1", - "url": "https://github.com/hapijs/bell/pull/236" - }, - { - "id": 159983152, - "labels": ["dependency"], - "number": 232, - "title": "Update dependencies", - "url": "https://github.com/hapijs/bell/issues/232" - }, - { - "id": 159737870, - "labels": ["feature"], - "number": 231, - "title": "Only publish root and lib directory in npm. #230", - "url": "https://github.com/hapijs/bell/pull/231" - }, - { - "id": 159670354, - "labels": ["feature"], - "number": 230, - "title": "Only publish root and lib directory in npm", - "url": "https://github.com/hapijs/bell/issues/230" - }, - { - "id": 158374549, - "labels": ["feature"], - "number": 227, - "title": "Implemented RSA-SHA1 signatures for OAuth v1", - "url": "https://github.com/hapijs/bell/pull/227" - }, - { - "id": 158092815, - "labels": ["feature"], - "number": 226, - "title": "OAuth v1: How to handle RSA-SHA1 signing?", - "url": "https://github.com/hapijs/bell/issues/226" - } - ], - "number": 49, - "url": "https://github.com/hapijs/bell/milestone/49", - "version": "7.9.0" - }, - { - "date": "2016-06-02T05:44:27Z", - "id": 1788756, - "issues": [ - { - "id": 156000505, - "labels": ["feature", "test"], - "number": 221, - "title": "getMethod option", - "url": "https://github.com/hapijs/bell/pull/221" - } - ], - "number": 47, - "url": "https://github.com/hapijs/bell/milestone/47", - "version": "7.8.0" - }, - { - "date": "2016-06-02T05:43:01Z", - "id": 1803794, - "issues": [ - { - "id": 157998924, - "labels": ["bug"], - "number": 225, - "title": "Fix markup to quote URL correctly to avoid infinite redirect", - "url": "https://github.com/hapijs/bell/pull/225" - } - ], - "number": 48, - "url": "https://github.com/hapijs/bell/milestone/48", - "version": "7.7.3" - }, - { - "date": "2016-06-02T05:37:53Z", - "id": 1767487, - "issues": [ - { - "id": 156863036, - "labels": ["bug"], - "number": 224, - "title": "Apply the same html redirection logic to oauth v1. Closes #223", - "url": "https://github.com/hapijs/bell/pull/224" - }, - { - "id": 156862814, - "labels": ["bug"], - "number": 223, - "title": "OAuth 1.0 missing HTML redirection workaround", - "url": "https://github.com/hapijs/bell/issues/223" - } - ], - "number": 45, - "url": "https://github.com/hapijs/bell/milestone/45", - "version": "7.7.2" - }, - { - "date": "2016-05-23T22:48:19Z", - "id": 1783780, - "issues": [ - { - "id": 156383301, - "labels": ["test", "dependency"], - "number": 222, - "title": "Upgrade to code 3.x.x", - "url": "https://github.com/hapijs/bell/pull/222" - }, - { - "id": 152059606, - "labels": ["test", "dependency"], - "number": 210, - "title": "Test with Node 6", - "url": "https://github.com/hapijs/bell/pull/210" - } - ], - "number": 46, - "url": "https://github.com/hapijs/bell/milestone/46", - "version": "7.7.1" - }, - { - "date": "2016-05-23T22:39:29Z", - "id": 1767461, - "issues": [ - { - "id": 154897720, - "labels": ["bug"], - "number": 216, - "title": "Consistently return node req object in oauth v1 client. Closes #215", - "url": "https://github.com/hapijs/bell/pull/216" - }, - { - "id": 154897644, - "labels": ["bug"], - "number": 215, - "title": "Fails to always return the node req object from wreck", - "url": "https://github.com/hapijs/bell/issues/215" - }, - { - "id": 153732404, - "labels": ["feature"], - "number": 213, - "title": "Add Pinterest provider", - "url": "https://github.com/hapijs/bell/pull/213" - } - ], - "number": 44, - "url": "https://github.com/hapijs/bell/milestone/44", - "version": "7.7.0" - }, - { - "date": "2016-04-30T23:30:36Z", - "id": 1712485, - "issues": [ - { - "id": 150571302, - "labels": ["bug"], - "number": 208, - "title": "Fix Safari CORS with Facebook & potentially other providers", - "url": "https://github.com/hapijs/bell/pull/208" - }, - { - "id": 149541441, - "labels": ["bug", "feature"], - "number": 206, - "title": "Fix weird error happening when logging in through Facebook on safari …", - "url": "https://github.com/hapijs/bell/pull/206" - }, - { - "id": 138252861, - "labels": ["bug"], - "number": 191, - "title": "Can not login with Facebook on Safari", - "url": "https://github.com/hapijs/bell/issues/191" - } - ], - "number": 42, - "url": "https://github.com/hapijs/bell/milestone/42", - "version": "7.6.1" - }, - { - "date": "2016-04-23T15:13:15Z", - "id": 1720417, - "issues": [ - { - "id": 149740765, - "labels": ["feature"], - "number": 207, - "title": "Add GitLab provider", - "url": "https://github.com/hapijs/bell/pull/207" - } - ], - "number": 43, - "url": "https://github.com/hapijs/bell/milestone/43", - "version": "7.6.0" - }, - { - "date": "2016-04-17T21:38:46Z", - "id": 1640494, - "issues": [ - { - "id": 148986379, - "labels": ["bug"], - "number": 205, - "title": "Added appsecret_proof to wordpress provider", - "url": "https://github.com/hapijs/bell/pull/205" - } - ], - "number": 38, - "url": "https://github.com/hapijs/bell/milestone/38", - "version": "7.5.1" - }, - { - "date": "2016-04-16T15:22:07Z", - "id": 1711429, - "issues": [ - { - "id": 147569845, - "labels": ["feature"], - "number": 204, - "title": "WordPress Provider", - "url": "https://github.com/hapijs/bell/pull/204" - } - ], - "number": 41, - "url": "https://github.com/hapijs/bell/milestone/41", - "version": "7.5.0" - }, - { - "date": "2016-04-10T03:33:48Z", - "id": 1695708, - "issues": [ - { - "id": 145860858, - "labels": ["feature"], - "number": 202, - "title": "Office365 provider", - "url": "https://github.com/hapijs/bell/pull/202" - } - ], - "number": 40, - "url": "https://github.com/hapijs/bell/milestone/40", - "version": "7.4.0" - }, - { - "date": "2016-03-22T22:43:55Z", - "id": 1660950, - "issues": [ - { - "id": 142141533, - "labels": ["feature"], - "number": 199, - "title": "Salesforce provider", - "url": "https://github.com/hapijs/bell/pull/199" - } - ], - "number": 39, - "url": "https://github.com/hapijs/bell/milestone/39", - "version": "7.3.0" - }, - { - "date": "2016-03-22T22:40:48Z", - "id": 1640493, - "issues": [ - { - "id": 139834814, - "labels": ["feature"], - "number": 198, - "title": "Add Slack provider", - "url": "https://github.com/hapijs/bell/pull/198" - }, - { - "id": 138906275, - "labels": ["bug"], - "number": 196, - "title": "Bitbucket incorrect id and styling inconsistency.", - "url": "https://github.com/hapijs/bell/pull/196" - } - ], - "number": 37, - "url": "https://github.com/hapijs/bell/milestone/37", - "version": "7.2.0" - }, - { - "date": "2016-03-04T01:16:34Z", - "id": 1621365, - "issues": [ - { - "id": 138345482, - "labels": ["feature"], - "number": 194, - "title": "Support returning raw resource payload. Closes #193", - "url": "https://github.com/hapijs/bell/pull/194" - }, - { - "id": 138345320, - "labels": ["feature"], - "number": 193, - "title": "client.resource() raw payload", - "url": "https://github.com/hapijs/bell/issues/193" - } - ], - "number": 35, - "url": "https://github.com/hapijs/bell/milestone/35", - "version": "7.1.0" - }, - { - "date": "2016-03-04T01:13:02Z", - "id": 1582058, - "issues": [ - { - "id": 136954038, - "labels": ["breaking changes", "release notes"], - "number": 189, - "title": "Bell 7 release notes", - "url": "https://github.com/hapijs/bell/issues/189" - }, - { - "id": 136310635, - "labels": ["feature", "documentation"], - "number": 188, - "title": "Add Auth0 provider", - "url": "https://github.com/hapijs/bell/pull/188" - }, - { - "id": 133559033, - "labels": ["breaking changes", "dependency"], - "number": 187, - "title": "peerDependency on Hapi 13", - "url": "https://github.com/hapijs/bell/issues/187" - }, - { - "id": 131891125, - "labels": ["feature", "documentation"], - "number": 182, - "title": "Allow passing additional state", - "url": "https://github.com/hapijs/bell/pull/182" - } - ], - "number": 33, - "url": "https://github.com/hapijs/bell/milestone/33", - "version": "7.0.0" - }, - { - "date": "2016-02-14T18:00:47Z", - "id": 1582054, - "issues": [ - { - "id": 131922738, - "labels": ["feature"], - "number": 183, - "title": "skipProfile option", - "url": "https://github.com/hapijs/bell/pull/183" - }, - { - "id": 116964394, - "labels": ["feature"], - "number": 163, - "title": "Auth fails silently", - "url": "https://github.com/hapijs/bell/issues/163" - } - ], - "number": 32, - "url": "https://github.com/hapijs/bell/milestone/32", - "version": "6.3.0" - }, - { - "date": "2016-02-14T17:26:20Z", - "id": 1488306, - "issues": [ - { - "id": 130360107, - "labels": ["feature", "documentation"], - "number": 179, - "title": "Added Twitch provider", - "url": "https://github.com/hapijs/bell/pull/179" - }, - { - "id": 130185205, - "labels": ["documentation", "test"], - "number": 178, - "title": "Upgrade devDependencies, test Hapi 12, lint update with tests/examples", - "url": "https://github.com/hapijs/bell/pull/178" - } - ], - "number": 31, - "url": "https://github.com/hapijs/bell/milestone/31", - "version": "6.2.0" - }, - { - "date": "2016-01-12T17:26:29Z", - "id": 1412443, - "issues": [ - { - "id": 124298995, - "labels": ["feature"], - "number": 174, - "title": "Update bitbucket to use the oAuth2 endpoint", - "url": "https://github.com/hapijs/bell/pull/174" - }, - { - "id": 117937157, - "labels": ["feature"], - "number": 168, - "title": "Add simulated mode. Closes #167", - "url": "https://github.com/hapijs/bell/pull/168" - }, - { - "id": 117937091, - "labels": ["feature"], - "number": 167, - "title": "Simulated mode", - "url": "https://github.com/hapijs/bell/issues/167" - } - ], - "number": 30, - "url": "https://github.com/hapijs/bell/milestone/30", - "version": "6.1.0" - }, - { - "date": "2015-11-15T19:54:44Z", - "id": 1267613, - "issues": [ - { - "id": 114815063, - "labels": ["feature"], - "number": 162, - "title": "Add error if using non-https server when isSecure is set to true", - "url": "https://github.com/hapijs/bell/pull/162" - }, - { - "id": 114503526, - "labels": ["breaking changes", "dependency"], - "number": 160, - "title": "Upgrade to Node 4+, Hapi 10+, ES6 styling, Update dependencies", - "url": "https://github.com/hapijs/bell/pull/160" - }, - { - "id": 114379837, - "labels": ["feature", "breaking changes", "release notes"], - "number": 159, - "title": "Bell 6 Release Notes", - "url": "https://github.com/hapijs/bell/issues/159" - } - ], - "number": 26, - "url": "https://github.com/hapijs/bell/milestone/26", - "version": "6.0.0" - }, - { - "date": "2015-11-15T19:55:02Z", - "id": 1353444, - "issues": [ - { - "id": 111161294, - "labels": ["feature"], - "number": 155, - "title": "Added Tumblr provider", - "url": "https://github.com/hapijs/bell/pull/155" - }, - { - "id": 110628822, - "labels": ["documentation"], - "number": 154, - "title": "Fixed no-comma-dangle in README", - "url": "https://github.com/hapijs/bell/pull/154" - }, - { - "id": 110142267, - "labels": ["test"], - "number": 153, - "title": "Test Hapi 9 and 10", - "url": "https://github.com/hapijs/bell/pull/153" - }, - { - "id": 109608554, - "labels": ["documentation"], - "number": 150, - "title": "Add documentation about Linkedin custom profile fields", - "url": "https://github.com/hapijs/bell/pull/150" - }, - { - "id": 109086142, - "labels": ["test"], - "number": 148, - "title": "upgrade to lab 6 and cleanup", - "url": "https://github.com/hapijs/bell/pull/148" - } - ], - "number": 29, - "url": "https://github.com/hapijs/bell/milestone/29", - "version": "5.4.0" - }, - { - "date": "2015-10-04T02:59:15Z", - "id": 1322964, - "issues": [ - { - "id": 108222836, - "labels": ["dependency"], - "number": 147, - "title": "Update Wreck to 6.x.x and some devDependencies", - "url": "https://github.com/hapijs/bell/pull/147" - }, - { - "id": 102565394, - "labels": ["dependency"], - "number": 133, - "title": "Update Wreck to 6.1.0 or latest version", - "url": "https://github.com/hapijs/bell/issues/133" - } - ], - "number": 28, - "url": "https://github.com/hapijs/bell/milestone/28", - "version": "5.3.0" - }, - { - "date": "2015-09-24T22:07:07Z", - "id": 1322464, - "issues": [ - { - "id": 108085214, - "labels": ["feature"], - "number": 146, - "title": "Meetup.com Provider", - "url": "https://github.com/hapijs/bell/pull/146" - }, - { - "id": 106601184, - "labels": [], - "number": 142, - "title": "Update Providers.md", - "url": "https://github.com/hapijs/bell/pull/142" - }, - { - "id": 106487637, - "labels": ["documentation"], - "number": 141, - "title": "500 error on google auth", - "url": "https://github.com/hapijs/bell/issues/141" - }, - { - "id": 106076382, - "labels": ["test"], - "number": 140, - "title": "Fix tests", - "url": "https://github.com/hapijs/bell/pull/140" - }, - { - "id": 105957609, - "labels": ["documentation"], - "number": 139, - "title": "Split up the documentation and add provider specific information plus…", - "url": "https://github.com/hapijs/bell/pull/139" - }, - { - "id": 105655602, - "labels": ["test"], - "number": 137, - "title": "Node v4", - "url": "https://github.com/hapijs/bell/pull/137" - }, - { - "id": 102205360, - "labels": ["test"], - "number": 132, - "title": "Fix lasting linting issues", - "url": "https://github.com/hapijs/bell/issues/132" - }, - { - "id": 101534552, - "labels": ["documentation"], - "number": 127, - "title": "Document Bell Core API and Providers API", - "url": "https://github.com/hapijs/bell/issues/127" - }, - { - "id": 90126689, - "labels": ["feature", "documentation"], - "number": 109, - "title": "Provider wiki", - "url": "https://github.com/hapijs/bell/issues/109" - }, - { - "id": 43538912, - "labels": ["test"], - "number": 25, - "title": "Test Cleanup", - "url": "https://github.com/hapijs/bell/issues/25" - } - ], - "number": 27, - "url": "https://github.com/hapijs/bell/milestone/27", - "version": "5.2.0" - }, - { - "date": "2015-09-09T21:41:16Z", - "id": 1230852, - "issues": [ - { - "id": 102202544, - "labels": ["bug", "test"], - "number": 131, - "title": "Fix wrong tests. OAuth1 does not include expiresIn for yahoo/bitbucke…", - "url": "https://github.com/hapijs/bell/pull/131" - }, - { - "id": 102151605, - "labels": ["bug"], - "number": 130, - "title": "fixed linting issues // now extends lab linting", - "url": "https://github.com/hapijs/bell/pull/130" - }, - { - "id": 102134344, - "labels": ["feature"], - "number": 129, - "title": "added allowRuntimeProviderParams to allow runtime query params ", - "url": "https://github.com/hapijs/bell/pull/129" - }, - { - "id": 101499025, - "labels": ["feature", "support"], - "number": 125, - "title": "Provide variable providerParams", - "url": "https://github.com/hapijs/bell/issues/125" - } - ], - "number": 23, - "url": "https://github.com/hapijs/bell/milestone/23", - "version": "5.1.0" - }, - { - "date": "2015-07-29T03:35:23Z", - "id": 1216429, - "issues": [ - { - "id": 97842969, - "labels": ["bug", "documentation"], - "number": 120, - "title": "Facebook Provider: Fix expiresIn, add example, backwards compatibility", - "url": "https://github.com/hapijs/bell/pull/120" - }, - { - "id": 96207795, - "labels": [], - "number": 119, - "title": "Update google.js", - "url": "https://github.com/hapijs/bell/pull/119" - }, - { - "id": 96118994, - "labels": ["non issue"], - "number": 117, - "title": "Lois Desplat is the new maintainer", - "url": "https://github.com/hapijs/bell/issues/117" - }, - { - "id": 95862418, - "labels": [], - "number": 115, - "title": "Add fields to the query", - "url": "https://github.com/hapijs/bell/pull/115" - }, - { - "id": 80110903, - "labels": ["bug"], - "number": 89, - "title": "facebook expiration won't be mapped properly", - "url": "https://github.com/hapijs/bell/issues/89" - } - ], - "number": 22, - "url": "https://github.com/hapijs/bell/milestone/22", - "version": "5.0.1" - }, - { - "date": "2015-07-20T17:35:30Z", - "id": 1206158, - "issues": [ - { - "id": 96116127, - "labels": ["breaking changes", "release notes"], - "number": 116, - "title": "5.0.0 Release Notes", - "url": "https://github.com/hapijs/bell/issues/116" - }, - { - "id": 94105164, - "labels": ["bug", "breaking changes"], - "number": 114, - "title": "Updated LinkedIn's default scope", - "url": "https://github.com/hapijs/bell/pull/114" - }, - { - "id": 91788420, - "labels": ["documentation"], - "number": 110, - "title": "Fix google example", - "url": "https://github.com/hapijs/bell/pull/110" - }, - { - "id": 89478824, - "labels": ["bug", "breaking changes"], - "number": 108, - "title": "Updated Google provider so that login uses the recommended Google+ People endpoint", - "url": "https://github.com/hapijs/bell/pull/108" - }, - { - "id": 65967906, - "labels": ["bug"], - "number": 66, - "title": "Deprecated Google and Facebook APIs", - "url": "https://github.com/hapijs/bell/issues/66" - } - ], - "number": 21, - "url": "https://github.com/hapijs/bell/milestone/21", - "version": "5.0.0" - }, - { - "date": "2015-07-14T00:28:07Z", - "id": 1160658, - "issues": [ - { - "id": 89478155, - "labels": ["bug"], - "number": 107, - "title": " Fix clientSecret usage and adds test case", - "url": "https://github.com/hapijs/bell/pull/107" - }, - { - "id": 88744536, - "labels": ["bug"], - "number": 103, - "title": "remove property username as it is not part of the google profile", - "url": "https://github.com/hapijs/bell/pull/103" - }, - { - "id": 88316531, - "labels": ["bug"], - "number": 101, - "title": "Fix clientSecret usage", - "url": "https://github.com/hapijs/bell/pull/101" - } - ], - "number": 20, - "url": "https://github.com/hapijs/bell/milestone/20", - "version": "4.0.1" - }, - { - "date": "2015-06-11T16:29:39Z", - "id": 1138689, - "issues": [ - { - "id": 87413807, - "labels": ["release notes"], - "number": 100, - "title": "4.0.0 Release Notes", - "url": "https://github.com/hapijs/bell/issues/100" - }, - { - "id": 85653474, - "labels": ["feature", "breaking changes"], - "number": 99, - "title": "Ensure only 1 authentication method is used during /token access in o…", - "url": "https://github.com/hapijs/bell/pull/99" - }, - { - "id": 85344661, - "labels": ["breaking changes"], - "number": 98, - "title": "Don't send client credentials as parameters and basic auth while retrieving token", - "url": "https://github.com/hapijs/bell/issues/98" - }, - { - "id": 84212813, - "labels": ["bug"], - "number": 96, - "title": "Allow null for domain", - "url": "https://github.com/hapijs/bell/pull/96" - } - ], - "number": 19, - "url": "https://github.com/hapijs/bell/milestone/19", - "version": "4.0.0" - }, - { - "date": "2015-05-28T19:49:09Z", - "id": 1136837, - "issues": [ - { - "id": 81658797, - "labels": ["bug", "breaking changes"], - "number": 94, - "title": "Rewrite OAuth 1.0 client interface", - "url": "https://github.com/hapijs/bell/pull/94" - }, - { - "id": 81657787, - "labels": ["bug", "breaking changes"], - "number": 92, - "title": "Fix POST payload format and location", - "url": "https://github.com/hapijs/bell/issues/92" - } - ], - "number": 18, - "url": "https://github.com/hapijs/bell/milestone/18", - "version": "3.0.0" - }, - { - "date": "2015-05-27T20:48:34Z", - "id": 1113507, - "issues": [ - { - "id": 81118385, - "labels": ["feature"], + { + "date": "2025-03-12T12:11:47Z", + "id": 12500794, + "issues": [ + { + "id": 2911326516, + "labels": ["feature"], + "number": 497, + "title": "Add tokenParams option", + "url": "https://github.com/hapijs/bell/pull/497" + }, + { + "id": 2844302064, + "labels": ["breaking changes"], + "number": 496, + "title": "chore: remove mixer provider", + "url": "https://github.com/hapijs/bell/pull/496" + }, + { + "id": 1109523947, + "labels": ["documentation"], + "number": 485, + "title": "remove the bit about google plus", + "url": "https://github.com/hapijs/bell/pull/485" + } + ], "number": 91, - "title": "OAuth client resource() endpoint", - "url": "https://github.com/hapijs/bell/pull/91" - }, - { - "id": 81117580, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/91", + "version": "13.1.0" + }, + { + "date": "2024-03-19T15:01:00Z", + "id": 10705042, + "issues": [ + { + "id": 2195000907, + "labels": ["types"], + "number": 493, + "title": "feat: 🎸 add types", + "url": "https://github.com/hapijs/bell/pull/493" + } + ], "number": 90, - "title": "Expose OAuth 1.0 client protected resource endpoing", - "url": "https://github.com/hapijs/bell/issues/90" - } - ], - "number": 17, - "url": "https://github.com/hapijs/bell/milestone/17", - "version": "2.9.0" - }, - { - "date": "2015-05-16T19:21:36Z", - "id": 1107238, - "issues": [ - { - "id": 77107231, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/90", + "version": "13.0.2" + }, + { + "date": "2023-02-11T19:53:36Z", + "id": 8521840, + "issues": [ + { + "id": 1551797532, + "labels": ["dependency"], + "number": 490, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/bell/pull/490" + } + ], + "number": 89, + "url": "https://github.com/hapijs/bell/milestone/89", + "version": "13.0.1" + }, + { + "date": "2022-10-10T12:22:30Z", + "id": 8521839, + "issues": [ + { + "id": 1402605047, + "labels": ["breaking changes", "test", "dependency"], + "number": 488, + "title": "Support hapi v21 and node v18, drop hapi v19 and node v12, test ESM support", + "url": "https://github.com/hapijs/bell/pull/488" + } + ], "number": 88, - "title": "Expose OAuth interface. Closes #48", - "url": "https://github.com/hapijs/bell/pull/88" - }, - { - "id": 52404897, - "labels": ["feature"], - "number": 48, - "title": "Expose Client as a plugin method", - "url": "https://github.com/hapijs/bell/issues/48" - } - ], - "number": 16, - "url": "https://github.com/hapijs/bell/milestone/16", - "version": "2.8.0" - }, - { - "date": "2015-05-12T17:42:06Z", - "id": 1095843, - "issues": [ - { - "id": 74862512, - "labels": ["bug"], - "number": 87, - "title": "Pass `forceHttps` and `location` to v1 client", - "url": "https://github.com/hapijs/bell/pull/87" - } - ], - "number": 15, - "url": "https://github.com/hapijs/bell/milestone/15", - "version": "2.7.1" - }, - { - "date": "2015-05-04T21:07:52Z", - "id": 1095583, - "issues": [ - { - "id": 73036999, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/88", + "version": "13.0.0" + }, + { + "date": "2021-08-26T05:07:21Z", + "id": 7091454, + "issues": [ + { + "id": 975319875, + "labels": ["feature"], + "number": 481, + "title": "Support OAuth1 client wreck options", + "url": "https://github.com/hapijs/bell/pull/481" + } + ], + "number": 86, + "url": "https://github.com/hapijs/bell/milestone/86", + "version": "12.3.0" + }, + { + "date": "2021-03-15T08:08:24Z", + "id": 5921588, + "issues": [ + { + "id": 791651301, + "labels": [], + "number": 476, + "title": "Add support for providing clientSecret as a function", + "url": "https://github.com/hapijs/bell/pull/476" + } + ], "number": 85, - "title": "add location setting similar to old hapi server location", - "url": "https://github.com/hapijs/bell/pull/85" - } - ], - "number": 14, - "url": "https://github.com/hapijs/bell/milestone/14", - "version": "2.7.0" - }, - { - "date": "2015-05-04T18:43:37Z", - "id": 1092703, - "issues": [ - { - "id": 72917686, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/85", + "version": "12.2.0" + }, + { + "date": "2020-09-27T00:04:14Z", + "id": 5618252, + "issues": [ + { + "id": 709585465, + "labels": [], + "number": 473, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/bell/pull/473" + }, + { + "id": 684021959, + "labels": [], + "number": 470, + "title": "migrate to new travis format", + "url": "https://github.com/hapijs/bell/pull/470" + }, + { + "id": 682270517, + "labels": ["documentation"], + "number": 469, + "title": "[Bugfix] Okta example code", + "url": "https://github.com/hapijs/bell/pull/469" + }, + { + "id": 677270512, + "labels": [], + "number": 467, + "title": "update to hapi 20", + "url": "https://github.com/hapijs/bell/pull/467" + }, + { + "id": 672169679, + "labels": [], + "number": 466, + "title": "upgrade bell to use just regular joi package and update teamwork as well", + "url": "https://github.com/hapijs/bell/pull/466" + } + ], "number": 84, - "title": "Add nest authentication", - "url": "https://github.com/hapijs/bell/pull/84" - } - ], - "number": 13, - "url": "https://github.com/hapijs/bell/milestone/13", - "version": "2.6.0" - }, - { - "date": "2015-05-01T16:31:25Z", - "id": 1080808, - "issues": [ - { - "id": 72001801, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/84", + "version": "12.1.1" + }, + { + "date": "2020-08-20T20:22:45Z", + "id": 5428750, + "issues": [ + { + "id": 549219644, + "labels": ["feature"], + "number": 450, + "title": "Support Okta custom authorization server", + "url": "https://github.com/hapijs/bell/pull/450" + } + ], + "number": 83, + "url": "https://github.com/hapijs/bell/milestone/83", + "version": "12.1.0" + }, + { + "date": "2020-05-15T20:29:49Z", + "id": 4993492, + "issues": [ + { + "id": 586945013, + "labels": ["bug"], + "number": 458, + "title": "Issue with the meetup provider", + "url": "https://github.com/hapijs/bell/issues/458" + } + ], + "number": 82, + "url": "https://github.com/hapijs/bell/milestone/82", + "version": "12.0.1" + }, + { + "date": "2020-01-10T05:54:33Z", + "id": 4676226, + "issues": [ + { + "id": 547880645, + "labels": ["breaking changes"], + "number": 449, + "title": "Change plugin name to @hapi/bell", + "url": "https://github.com/hapijs/bell/issues/449" + }, + { + "id": 547878754, + "labels": ["breaking changes", "dependency"], + "number": 448, + "title": "Require hapi 19", + "url": "https://github.com/hapijs/bell/issues/448" + }, + { + "id": 547878234, + "labels": ["breaking changes", "dependency"], + "number": 447, + "title": "Only node 12", + "url": "https://github.com/hapijs/bell/issues/447" + }, + { + "id": 536654753, + "labels": [], + "number": 445, + "title": "Use actual package name for plugin name", + "url": "https://github.com/hapijs/bell/pull/445" + } + ], "number": 81, - "title": "Added option to specify the LinkedIn profile fields", - "url": "https://github.com/hapijs/bell/pull/81" - }, - { - "id": 71988242, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/81", + "version": "12.0.0" + }, + { + "date": "2019-09-20T05:16:48Z", + "id": 4655991, + "issues": [ + { + "id": 494478938, + "labels": ["feature"], + "number": 432, + "title": "Return azureAD provider", + "url": "https://github.com/hapijs/bell/issues/432" + } + ], "number": 80, - "title": "Support Reddit as an OAuth provider", - "url": "https://github.com/hapijs/bell/pull/80" - }, - { - "id": 70779579, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/80", + "version": "11.1.0" + }, + { + "date": "2019-09-13T07:05:49Z", + "id": 4570742, + "issues": [ + { + "id": 493159204, + "labels": ["breaking changes"], + "number": 428, + "title": "Make dropbox-v2 the only provider", + "url": "https://github.com/hapijs/bell/issues/428" + }, + { + "id": 493148182, + "labels": ["breaking changes"], + "number": 427, + "title": "Replace office365, azuread with updated azure provider", + "url": "https://github.com/hapijs/bell/issues/427" + }, + { + "id": 493143645, + "labels": ["dependency"], + "number": 426, + "title": "Update joi", + "url": "https://github.com/hapijs/bell/issues/426" + }, + { + "id": 479714612, + "labels": ["feature"], + "number": 420, + "title": "Add support for PKCE", + "url": "https://github.com/hapijs/bell/issues/420" + }, + { + "id": 473948387, + "labels": ["breaking changes"], + "number": 418, + "title": "New Twitch API oAuth & profile", + "url": "https://github.com/hapijs/bell/pull/418" + }, + { + "id": 472871148, + "labels": ["documentation"], + "number": 416, + "title": "Update github login example", + "url": "https://github.com/hapijs/bell/pull/416" + }, + { + "id": 447239056, + "labels": ["feature"], + "number": 411, + "title": "[Bell-410] Add AWS Cognito provider", + "url": "https://github.com/hapijs/bell/pull/411" + }, + { + "id": 446217428, + "labels": ["feature"], + "number": 410, + "title": "Add provider for AWS Cognito", + "url": "https://github.com/hapijs/bell/issues/410" + }, + { + "id": 439772064, + "labels": ["feature"], + "number": 409, + "title": "RFC 7636: Proof Key for Code Exchange", + "url": "https://github.com/hapijs/bell/pull/409" + }, + { + "id": 427414723, + "labels": ["bug", "breaking changes"], + "number": 404, + "title": "Add Azure Oauth2 v2 provider", + "url": "https://github.com/hapijs/bell/pull/404" + }, + { + "id": 424632655, + "labels": ["bug"], + "number": 403, + "title": "Correctly utilize JWT tokens instead of normal accessTokens for AzureAD", + "url": "https://github.com/hapijs/bell/issues/403" + }, + { + "id": 343982499, + "labels": ["bug"], + "number": 376, + "title": "Update Office365 / Microsoft provider", + "url": "https://github.com/hapijs/bell/issues/376" + } + ], "number": 79, - "title": "LinkedIn profile fields", - "url": "https://github.com/hapijs/bell/issues/79" - } - ], - "number": 12, - "url": "https://github.com/hapijs/bell/milestone/12", - "version": "2.5.0" - }, - { - "date": "2015-04-23T15:48:49Z", - "id": 1056408, - "issues": [ - { - "id": 69931217, - "labels": ["feature"], - "number": 78, - "title": "update facebook URLs to use facebook Graph v2.3", - "url": "https://github.com/hapijs/bell/pull/78" - }, - { - "id": 69033187, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/79", + "version": "11.0.0" + }, + { + "date": "2019-08-14T04:48:02Z", + "id": 4245748, + "issues": [ + { + "id": 480478223, + "labels": ["dependency"], + "number": 421, + "title": "Update deps", + "url": "https://github.com/hapijs/bell/issues/421" + } + ], "number": 77, - "title": "Support for Phabricator", - "url": "https://github.com/hapijs/bell/pull/77" - }, - { - "id": 68527118, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/77", + "version": "10.1.1" + }, + { + "date": "2019-04-20T19:54:13Z", + "id": 4113366, + "issues": [ + { + "id": 435431046, + "labels": ["dependency"], + "number": 405, + "title": "Change module namespace", + "url": "https://github.com/hapijs/bell/issues/405" + } + ], + "number": 76, + "url": "https://github.com/hapijs/bell/milestone/76", + "version": "10.1.0" + }, + { + "date": "2019-03-05T20:39:59Z", + "id": 4093876, + "issues": [ + { + "id": 417513441, + "labels": ["breaking changes", "release notes"], + "number": 400, + "title": "10.0.0 Release Notes", + "url": "https://github.com/hapijs/bell/issues/400" + }, + { + "id": 415004859, + "labels": ["feature", "breaking changes"], + "number": 397, + "title": "Add support for hapi 18", + "url": "https://github.com/hapijs/bell/pull/397" + }, + { + "id": 403645501, + "labels": ["bug"], + "number": 394, + "title": "Google auth redirect loop with hapi v18", + "url": "https://github.com/hapijs/bell/issues/394" + }, + { + "id": 399247375, + "labels": ["feature", "breaking changes"], + "number": 391, + "title": "Update LinkedIn to use new lite profile", + "url": "https://github.com/hapijs/bell/pull/391" + }, + { + "id": 397131758, + "labels": ["feature"], + "number": 390, + "title": "Upgrade LinkedIn to support new 'Lite Profile'", + "url": "https://github.com/hapijs/bell/issues/390" + } + ], + "number": 75, + "url": "https://github.com/hapijs/bell/milestone/75", + "version": "10.0.0" + }, + { + "date": "2019-04-20T22:20:42Z", + "id": 4245765, + "issues": [ + { + "id": 435434270, + "labels": ["dependency", "lts"], + "number": 406, + "title": "Change module namespace for v9 branch", + "url": "https://github.com/hapijs/bell/issues/406" + } + ], + "number": 78, + "url": "https://github.com/hapijs/bell/milestone/78", + "version": "9.6.0" + }, + { + "date": "2019-02-27T18:28:00Z", + "id": 3811130, + "issues": [ + { + "id": 408872079, + "labels": ["feature"], + "number": 396, + "title": "Allow isSameSite customization", + "url": "https://github.com/hapijs/bell/pull/396" + }, + { + "id": 408847542, + "labels": ["feature"], + "number": 395, + "title": "Safari isSameSite", + "url": "https://github.com/hapijs/bell/issues/395" + }, + { + "id": 387924079, + "labels": ["documentation"], + "number": 389, + "title": "Add changelog.md", + "url": "https://github.com/hapijs/bell/pull/389" + } + ], + "number": 74, + "url": "https://github.com/hapijs/bell/milestone/74", + "version": "9.5.0" + }, + { + "date": "2018-11-10T22:28:07Z", + "id": 3811122, + "issues": [ + { + "id": 379456755, + "labels": ["test", "non issue"], + "number": 386, + "title": "Cleanup", + "url": "https://github.com/hapijs/bell/issues/386" + }, + { + "id": 366165691, + "labels": ["feature"], + "number": 381, + "title": "FB custom scope + upgrade api version", + "url": "https://github.com/hapijs/bell/pull/381" + }, + { + "id": 341666043, + "labels": ["bug", "dependency"], + "number": 374, + "title": "Ensure Auth0 profile is availabe in all cases", + "url": "https://github.com/hapijs/bell/pull/374" + }, + { + "id": 339269483, + "labels": ["feature", "dependency"], + "number": 373, + "title": "Use Stripe Express", + "url": "https://github.com/hapijs/bell/pull/373" + }, + { + "id": 338382792, + "labels": ["feature"], + "number": 372, + "title": "Add config 'fields' to vk provider", + "url": "https://github.com/hapijs/bell/pull/372" + } + ], "number": 73, - "title": "Allow environment variables to configure options", - "url": "https://github.com/hapijs/bell/pull/73" - } - ], - "number": 11, - "url": "https://github.com/hapijs/bell/milestone/11", - "version": "2.4.0" - }, - { - "date": "2015-04-07T15:15:23Z", - "id": 995473, - "issues": [ - { - "id": 66910931, - "labels": ["non issue"], + "url": "https://github.com/hapijs/bell/milestone/73", + "version": "9.4.0" + }, + { + "date": "2018-05-29T19:00:33Z", + "id": 3237720, + "issues": [ + { + "id": 313209143, + "labels": ["feature"], + "number": 358, + "title": "Use OIDC compliant profile from Auth0", + "url": "https://github.com/hapijs/bell/pull/358" + } + ], "number": 71, - "title": "Fix linting issues", - "url": "https://github.com/hapijs/bell/pull/71" - }, - { - "id": 66341064, - "labels": ["dependency"], + "url": "https://github.com/hapijs/bell/milestone/71", + "version": "9.3.1" + }, + { + "date": "2018-04-03T08:01:17Z", + "id": 3237571, + "issues": [ + { + "id": 310722160, + "labels": [], + "number": 356, + "title": "fix(package): update Boom and fix trying to create an instance of .internal", + "url": "https://github.com/hapijs/bell/pull/356" + }, + { + "id": 308249093, + "labels": ["bug", "security"], + "number": 355, + "title": "Set SameSite=Strict for improved security", + "url": "https://github.com/hapijs/bell/pull/355" + } + ], "number": 70, - "title": "Update Joi to 6.x", - "url": "https://github.com/hapijs/bell/pull/70" - }, - { - "id": 66016190, - "labels": ["feature"], - "number": 69, - "title": "Add LinkedIn provider", - "url": "https://github.com/hapijs/bell/pull/69" - }, - { - "id": 65996349, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/70", + "version": "9.3.0" + }, + { + "date": "2018-04-02T19:10:36Z", + "id": 3142521, + "issues": [ + { + "id": 307176741, + "labels": ["bug"], + "number": 354, + "title": "Remove new Buffer usage", + "url": "https://github.com/hapijs/bell/pull/354" + }, + { + "id": 302854966, + "labels": ["feature"], + "number": 350, + "title": "Picture object included in the profile object for facebook oauth", + "url": "https://github.com/hapijs/bell/pull/350" + }, + { + "id": 301989327, + "labels": ["bug"], + "number": 349, + "title": "Fix problem with not exist required param 'v' last versitons today 5.…", + "url": "https://github.com/hapijs/bell/pull/349" + }, + { + "id": 301988276, + "labels": ["bug"], + "number": 348, + "title": "VK auth dev error: 'v' is required ", + "url": "https://github.com/hapijs/bell/issues/348" + }, + { + "id": 301670554, + "labels": ["feature"], + "number": 347, + "title": "facebook picture field added to get profile picture", + "url": "https://github.com/hapijs/bell/pull/347" + } + ], "number": 68, - "title": "Add ArcGIS Online provider", - "url": "https://github.com/hapijs/bell/pull/68" - }, - { - "id": 65976092, - "labels": ["bug"], + "url": "https://github.com/hapijs/bell/milestone/68", + "version": "9.2.0" + }, + { + "date": "2018-02-26T06:51:41Z", + "id": 3142375, + "issues": [ + { + "id": 207295360, + "labels": ["feature"], + "number": 295, + "title": "Expose query in spite of errors", + "url": "https://github.com/hapijs/bell/issues/295" + }, + { + "id": 199957498, + "labels": ["feature", "breaking changes"], + "number": 288, + "title": "Remove or more comprehensively document provider.version", + "url": "https://github.com/hapijs/bell/issues/288" + } + ], "number": 67, - "title": "Support new wreck in mocks", - "url": "https://github.com/hapijs/bell/pull/67" - }, - { - "id": 58931909, - "labels": ["dependency"], + "url": "https://github.com/hapijs/bell/milestone/67", + "version": "9.1.0" + }, + { + "date": "2018-02-26T04:20:11Z", + "id": 2410070, + "issues": [ + { + "id": 300104867, + "labels": ["breaking changes", "release notes"], + "number": 345, + "title": "9.0.0 Release Notes", + "url": "https://github.com/hapijs/bell/issues/345" + }, + { + "id": 272808715, + "labels": ["feature", "breaking changes", "dependency"], + "number": 332, + "title": "[WIP] Hapi 17 Support", + "url": "https://github.com/hapijs/bell/pull/332" + }, + { + "id": 271150791, + "labels": ["breaking changes", "dependency"], + "number": 330, + "title": "hapi v17 support", + "url": "https://github.com/hapijs/bell/issues/330" + } + ], + "number": 63, + "url": "https://github.com/hapijs/bell/milestone/63", + "version": "9.0.0" + }, + { + "date": "2017-11-19T16:41:43Z", + "id": 2922695, + "issues": [ + { + "id": 267737145, + "labels": ["feature"], + "number": 325, + "title": "Changed the discord providers image url prefix", + "url": "https://github.com/hapijs/bell/pull/325" + }, + { + "id": 256815119, + "labels": ["feature"], + "number": 321, + "title": "Add trakt.tv provider", + "url": "https://github.com/hapijs/bell/pull/321" + }, + { + "id": 197150550, + "labels": ["feature"], + "number": 286, + "title": "Added custom OAuth2 client authentication", + "url": "https://github.com/hapijs/bell/pull/286" + } + ], + "number": 66, + "url": "https://github.com/hapijs/bell/milestone/66", + "version": "8.9.0" + }, + { + "date": "2017-09-24T21:05:07Z", + "id": 2787762, + "issues": [ + { + "id": 245907995, + "labels": ["feature"], + "number": 319, + "title": "Allowing the location option to be a function", + "url": "https://github.com/hapijs/bell/pull/319" + }, + { + "id": 243935086, + "labels": ["feature"], + "number": 318, + "title": "Add Mixer as a new provider", + "url": "https://github.com/hapijs/bell/pull/318" + }, + { + "id": 238642668, + "labels": ["feature"], + "number": 316, + "title": "Add Stripe as a new provider", + "url": "https://github.com/hapijs/bell/pull/316" + }, + { + "id": 234995785, + "labels": ["feature"], + "number": 315, + "title": "Add `fields` option to Facebook provider", + "url": "https://github.com/hapijs/bell/pull/315" + }, + { + "id": 166080952, + "labels": ["feature"], + "number": 244, + "title": "New dropbox-v2 provider which uses Dropbox V2 API", + "url": "https://github.com/hapijs/bell/pull/244" + } + ], + "number": 65, + "url": "https://github.com/hapijs/bell/milestone/65", + "version": "8.8.0" + }, + { + "date": "2017-05-09T03:28:13Z", + "id": 2508991, + "issues": [ + { + "id": 226975823, + "labels": ["feature"], + "number": 312, + "title": "add DigitalOcean provider", + "url": "https://github.com/hapijs/bell/pull/312" + }, + { + "id": 224568867, + "labels": ["feature"], + "number": 311, + "title": "Updates Facebook API to v2.9", + "url": "https://github.com/hapijs/bell/pull/311" + }, + { + "id": 219098039, + "labels": ["feature"], + "number": 308, + "title": "Add `'profile'` to list of default scopes for Okta", + "url": "https://github.com/hapijs/bell/pull/308" + }, + { + "id": 215638763, + "labels": [], + "number": 303, + "title": "Facebook", + "url": "https://github.com/hapijs/bell/pull/303" + }, + { + "id": 171285612, + "labels": ["feature", "breaking changes"], + "number": 252, + "title": "[Update] Updates Facebook provider to v2.7", + "url": "https://github.com/hapijs/bell/pull/252" + } + ], + "number": 64, + "url": "https://github.com/hapijs/bell/milestone/64", + "version": "8.7.0" + }, + { + "date": "2017-03-24T20:22:14Z", + "id": 2381785, + "issues": [ + { + "id": 210634907, + "labels": ["feature"], + "number": 299, + "title": "Add support for authentication with Okta", + "url": "https://github.com/hapijs/bell/pull/299" + }, + { + "id": 208807117, + "labels": ["feature"], + "number": 298, + "title": "added spotify", + "url": "https://github.com/hapijs/bell/pull/298" + }, + { + "id": 182682268, + "labels": ["feature"], + "number": 273, + "title": "Fixes #261 expose OAUTH2 token response as request.auth.artifacts", + "url": "https://github.com/hapijs/bell/pull/273" + } + ], "number": 62, - "title": "Update .travis.yml", - "url": "https://github.com/hapijs/bell/pull/62" - } - ], - "number": 10, - "url": "https://github.com/hapijs/bell/milestone/10", - "version": "2.3.0" - }, - { - "date": "2015-02-25T16:52:57Z", - "id": 962575, - "issues": [ - { - "id": 58449684, - "labels": ["bug"], + "url": "https://github.com/hapijs/bell/milestone/62", + "version": "8.6.0" + }, + { + "date": "2017-03-24T20:22:22Z", + "id": 2272937, + "issues": [ + { + "id": 200068706, + "labels": ["feature"], + "number": 289, + "title": "AzureAD: Support email, when userPrincipalName (upn) is not available", + "url": "https://github.com/hapijs/bell/pull/289" + } + ], + "number": 61, + "url": "https://github.com/hapijs/bell/milestone/61", + "version": "8.5.1" + }, + { + "date": "2017-01-24T02:39:32Z", + "id": 1953216, + "issues": [ + { + "id": 202679436, + "labels": ["feature"], + "number": 291, + "title": "Medium provider", + "url": "https://github.com/hapijs/bell/issues/291" + } + ], + "number": 54, + "url": "https://github.com/hapijs/bell/milestone/54", + "version": "8.5.0" + }, + { + "date": "2016-12-01T03:29:08Z", + "id": 2074721, + "issues": [ + { + "id": 192744406, + "labels": ["dependency"], + "number": 280, + "title": "hapi 16", + "url": "https://github.com/hapijs/bell/issues/280" + }, + { + "id": 178545052, + "labels": ["feature"], + "number": 266, + "title": "Implement Azure Active Directory authentication for enterprise AD logins", + "url": "https://github.com/hapijs/bell/issues/266" + } + ], "number": 60, - "title": "Make forceHttps complete ", - "url": "https://github.com/hapijs/bell/pull/60" - }, - { - "id": 58129227, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/60", + "version": "8.4.0" + }, + { + "date": "2016-10-04T14:36:45Z", + "id": 2046990, + "issues": [ + { + "id": 178830165, + "labels": ["feature"], + "number": 267, + "title": "Fixes #266 Implements azure active directory as bell azuread module", + "url": "https://github.com/hapijs/bell/pull/267" + } + ], + "number": 59, + "url": "https://github.com/hapijs/bell/milestone/59", + "version": "8.3.0" + }, + { + "date": "2016-09-21T14:49:02Z", + "id": 2016833, + "issues": [ + { + "id": 178101952, + "labels": ["bug"], + "number": 265, + "title": "Set isSameSite to false and add code to support Hapi 13.5+", + "url": "https://github.com/hapijs/bell/pull/265" + }, + { + "id": 177214049, + "labels": ["bug"], + "number": 264, + "title": "Bell is not compatible with Hapi 15 due to same-site: strict for cookie", + "url": "https://github.com/hapijs/bell/issues/264" + } + ], "number": 58, - "title": "passing back expires_in for oauth 2.0 refresh token request", - "url": "https://github.com/hapijs/bell/pull/58" - }, - { - "id": 55708643, - "labels": ["feature"], - "number": 54, - "title": "Added Dropbox.", - "url": "https://github.com/hapijs/bell/pull/54" - }, - { - "id": 52871863, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/58", + "version": "8.2.1" + }, + { + "date": "2016-09-07T14:41:01Z", + "id": 1989012, + "issues": [ + { + "id": 175519020, + "labels": ["feature", "test", "dependency"], + "number": 259, + "title": "Support Hapi 15 & upgrade boom + wreck dependencies", + "url": "https://github.com/hapijs/bell/issues/259" + }, + { + "id": 173508017, + "labels": ["bug", "feature"], + "number": 256, + "title": "allow for leading whitespace in JSON", + "url": "https://github.com/hapijs/bell/pull/256" + }, + { + "id": 169316259, + "labels": ["feature"], + "number": 248, + "title": "Add discord as a new provider", + "url": "https://github.com/hapijs/bell/pull/248" + } + ], + "number": 57, + "url": "https://github.com/hapijs/bell/milestone/57", + "version": "8.2.0" + }, + { + "date": "2016-09-07T14:32:01Z", + "id": 1953230, + "issues": [ + { + "id": 172314388, + "labels": ["bug"], + "number": 254, + "title": "fix mapping of google profile fixes #251", + "url": "https://github.com/hapijs/bell/pull/254" + }, + { + "id": 170634385, + "labels": ["bug"], + "number": 251, + "title": "Google user info", + "url": "https://github.com/hapijs/bell/issues/251" + } + ], + "number": 56, + "url": "https://github.com/hapijs/bell/milestone/56", + "version": "8.1.1" + }, + { + "date": "2016-08-20T21:39:28Z", + "id": 1953219, + "issues": [ + { + "id": 169709882, + "labels": ["feature"], + "number": 249, + "title": "Twitter additional GET parameters on extended profile request", + "url": "https://github.com/hapijs/bell/pull/249" + } + ], + "number": 55, + "url": "https://github.com/hapijs/bell/milestone/55", + "version": "8.1.0" + }, + { + "date": "2016-07-29T20:27:10Z", + "id": 1912593, + "issues": [ + { + "id": 168406817, + "labels": ["dependency"], + "number": 247, + "title": "Allow hapi 14", + "url": "https://github.com/hapijs/bell/issues/247" + } + ], + "number": 52, + "url": "https://github.com/hapijs/bell/milestone/52", + "version": "8.0.1" + }, + { + "date": "2016-07-17T20:22:49Z", + "id": 1609606, + "issues": [ + { + "id": 165993769, + "labels": ["release notes"], + "number": 243, + "title": "Bell 8.0.0 Release Notes", + "url": "https://github.com/hapijs/bell/issues/243" + }, + { + "id": 165923409, + "labels": ["dependency"], + "number": 242, + "title": "Upgrade Joi dependence to 9.x.x", + "url": "https://github.com/hapijs/bell/issues/242" + }, + { + "id": 165436074, + "labels": ["feature"], + "number": 240, + "title": "Fitbit provider", + "url": "https://github.com/hapijs/bell/pull/240" + }, + { + "id": 160553457, + "labels": ["feature", "breaking changes"], + "number": 235, + "title": "Separate Google into two providers. #228", + "url": "https://github.com/hapijs/bell/pull/235" + }, + { + "id": 160315321, + "labels": ["feature"], + "number": 233, + "title": "Allow providerParams to be a method invoked with the request", + "url": "https://github.com/hapijs/bell/pull/233" + }, + { + "id": 158480686, + "labels": ["feature"], + "number": 228, + "title": "Remove dependency on Google Plus APIs", + "url": "https://github.com/hapijs/bell/issues/228" + } + ], + "number": 34, + "url": "https://github.com/hapijs/bell/milestone/34", + "version": "8.0.0" + }, + { + "date": "2016-07-16T10:31:18Z", + "id": 1887345, + "issues": [ + { + "id": 165000176, + "labels": ["bug"], + "number": 239, + "title": "[Fix] Fixes email address field in LinkedIn", + "url": "https://github.com/hapijs/bell/pull/239" + } + ], + "number": 51, + "url": "https://github.com/hapijs/bell/milestone/51", + "version": "7.9.3" + }, + { + "date": "2016-06-22T23:36:12Z", + "id": 1844351, + "issues": [ + { + "id": 161810205, + "labels": ["bug"], + "number": 237, + "title": "Profiles are broken when used directly", + "url": "https://github.com/hapijs/bell/issues/237" + } + ], + "number": 50, + "url": "https://github.com/hapijs/bell/milestone/50", + "version": "7.9.1" + }, + { + "date": "2016-06-19T20:04:09Z", + "id": 1803800, + "issues": [ + { + "id": 160642160, + "labels": ["feature"], + "number": 236, + "title": "Aphuang2013 patch 1", + "url": "https://github.com/hapijs/bell/pull/236" + }, + { + "id": 159983152, + "labels": ["dependency"], + "number": 232, + "title": "Update dependencies", + "url": "https://github.com/hapijs/bell/issues/232" + }, + { + "id": 159737870, + "labels": ["feature"], + "number": 231, + "title": "Only publish root and lib directory in npm. #230", + "url": "https://github.com/hapijs/bell/pull/231" + }, + { + "id": 159670354, + "labels": ["feature"], + "number": 230, + "title": "Only publish root and lib directory in npm", + "url": "https://github.com/hapijs/bell/issues/230" + }, + { + "id": 158374549, + "labels": ["feature"], + "number": 227, + "title": "Implemented RSA-SHA1 signatures for OAuth v1", + "url": "https://github.com/hapijs/bell/pull/227" + }, + { + "id": 158092815, + "labels": ["feature"], + "number": 226, + "title": "OAuth v1: How to handle RSA-SHA1 signing?", + "url": "https://github.com/hapijs/bell/issues/226" + } + ], "number": 49, - "title": "pass back expires_in", - "url": "https://github.com/hapijs/bell/issues/49" - } - ], - "number": 9, - "url": "https://github.com/hapijs/bell/milestone/9", - "version": "2.2.0" - }, - { - "date": "2015-02-02T22:56:46Z", - "id": 904772, - "issues": [ - { - "id": 54653608, - "labels": ["feature"], - "number": 53, - "title": "Add option for forcing https.", - "url": "https://github.com/hapijs/bell/pull/53" - } - ], - "number": 8, - "url": "https://github.com/hapijs/bell/milestone/8", - "version": "2.1.0" - }, - { - "date": "2014-12-15T19:28:03Z", - "id": 881012, - "issues": [ - { - "id": 50345983, - "labels": ["breaking changes", "dependency"], - "number": 43, - "title": "Hapi8", - "url": "https://github.com/hapijs/bell/pull/43" - }, - { - "id": 50127806, - "labels": ["breaking changes", "dependency"], + "url": "https://github.com/hapijs/bell/milestone/49", + "version": "7.9.0" + }, + { + "date": "2016-06-02T05:44:27Z", + "id": 1788756, + "issues": [ + { + "id": 156000505, + "labels": ["feature", "test"], + "number": 221, + "title": "getMethod option", + "url": "https://github.com/hapijs/bell/pull/221" + } + ], + "number": 47, + "url": "https://github.com/hapijs/bell/milestone/47", + "version": "7.8.0" + }, + { + "date": "2016-06-02T05:43:01Z", + "id": 1803794, + "issues": [ + { + "id": 157998924, + "labels": ["bug"], + "number": 225, + "title": "Fix markup to quote URL correctly to avoid infinite redirect", + "url": "https://github.com/hapijs/bell/pull/225" + } + ], + "number": 48, + "url": "https://github.com/hapijs/bell/milestone/48", + "version": "7.7.3" + }, + { + "date": "2016-06-02T05:37:53Z", + "id": 1767487, + "issues": [ + { + "id": 156863036, + "labels": ["bug"], + "number": 224, + "title": "Apply the same html redirection logic to oauth v1. Closes #223", + "url": "https://github.com/hapijs/bell/pull/224" + }, + { + "id": 156862814, + "labels": ["bug"], + "number": 223, + "title": "OAuth 1.0 missing HTML redirection workaround", + "url": "https://github.com/hapijs/bell/issues/223" + } + ], + "number": 45, + "url": "https://github.com/hapijs/bell/milestone/45", + "version": "7.7.2" + }, + { + "date": "2016-05-23T22:48:19Z", + "id": 1783780, + "issues": [ + { + "id": 156383301, + "labels": ["test", "dependency"], + "number": 222, + "title": "Upgrade to code 3.x.x", + "url": "https://github.com/hapijs/bell/pull/222" + }, + { + "id": 152059606, + "labels": ["test", "dependency"], + "number": 210, + "title": "Test with Node 6", + "url": "https://github.com/hapijs/bell/pull/210" + } + ], + "number": 46, + "url": "https://github.com/hapijs/bell/milestone/46", + "version": "7.7.1" + }, + { + "date": "2016-05-23T22:39:29Z", + "id": 1767461, + "issues": [ + { + "id": 154897720, + "labels": ["bug"], + "number": 216, + "title": "Consistently return node req object in oauth v1 client. Closes #215", + "url": "https://github.com/hapijs/bell/pull/216" + }, + { + "id": 154897644, + "labels": ["bug"], + "number": 215, + "title": "Fails to always return the node req object from wreck", + "url": "https://github.com/hapijs/bell/issues/215" + }, + { + "id": 153732404, + "labels": ["feature"], + "number": 213, + "title": "Add Pinterest provider", + "url": "https://github.com/hapijs/bell/pull/213" + } + ], + "number": 44, + "url": "https://github.com/hapijs/bell/milestone/44", + "version": "7.7.0" + }, + { + "date": "2016-04-30T23:30:36Z", + "id": 1712485, + "issues": [ + { + "id": 150571302, + "labels": ["bug"], + "number": 208, + "title": "Fix Safari CORS with Facebook & potentially other providers", + "url": "https://github.com/hapijs/bell/pull/208" + }, + { + "id": 149541441, + "labels": ["bug", "feature"], + "number": 206, + "title": "Fix weird error happening when logging in through Facebook on safari …", + "url": "https://github.com/hapijs/bell/pull/206" + }, + { + "id": 138252861, + "labels": ["bug"], + "number": 191, + "title": "Can not login with Facebook on Safari", + "url": "https://github.com/hapijs/bell/issues/191" + } + ], "number": 42, - "title": "hapi 8.0 API", - "url": "https://github.com/hapijs/bell/issues/42" - } - ], - "number": 7, - "url": "https://github.com/hapijs/bell/milestone/7", - "version": "2.0.0" - }, - { - "date": "2014-12-15T19:28:15Z", - "id": 843882, - "issues": [ - { - "id": 48107444, - "labels": ["bug"], + "url": "https://github.com/hapijs/bell/milestone/42", + "version": "7.6.1" + }, + { + "date": "2016-04-23T15:13:15Z", + "id": 1720417, + "issues": [ + { + "id": 149740765, + "labels": ["feature"], + "number": 207, + "title": "Add GitLab provider", + "url": "https://github.com/hapijs/bell/pull/207" + } + ], + "number": 43, + "url": "https://github.com/hapijs/bell/milestone/43", + "version": "7.6.0" + }, + { + "date": "2016-04-17T21:38:46Z", + "id": 1640494, + "issues": [ + { + "id": 148986379, + "labels": ["bug"], + "number": 205, + "title": "Added appsecret_proof to wordpress provider", + "url": "https://github.com/hapijs/bell/pull/205" + } + ], + "number": 38, + "url": "https://github.com/hapijs/bell/milestone/38", + "version": "7.5.1" + }, + { + "date": "2016-04-16T15:22:07Z", + "id": 1711429, + "issues": [ + { + "id": 147569845, + "labels": ["feature"], + "number": 204, + "title": "WordPress Provider", + "url": "https://github.com/hapijs/bell/pull/204" + } + ], + "number": 41, + "url": "https://github.com/hapijs/bell/milestone/41", + "version": "7.5.0" + }, + { + "date": "2016-04-10T03:33:48Z", + "id": 1695708, + "issues": [ + { + "id": 145860858, + "labels": ["feature"], + "number": 202, + "title": "Office365 provider", + "url": "https://github.com/hapijs/bell/pull/202" + } + ], + "number": 40, + "url": "https://github.com/hapijs/bell/milestone/40", + "version": "7.4.0" + }, + { + "date": "2016-03-22T22:43:55Z", + "id": 1660950, + "issues": [ + { + "id": 142141533, + "labels": ["feature"], + "number": 199, + "title": "Salesforce provider", + "url": "https://github.com/hapijs/bell/pull/199" + } + ], "number": 39, - "title": "handle oauth user rejection for v2 as well", - "url": "https://github.com/hapijs/bell/pull/39" - } - ], - "number": 6, - "url": "https://github.com/hapijs/bell/milestone/6", - "version": "1.3.1" - }, - { - "date": "2014-10-28T16:15:10Z", - "id": 829502, - "issues": [ - { - "id": 46380572, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/39", + "version": "7.3.0" + }, + { + "date": "2016-03-22T22:40:48Z", + "id": 1640493, + "issues": [ + { + "id": 139834814, + "labels": ["feature"], + "number": 198, + "title": "Add Slack provider", + "url": "https://github.com/hapijs/bell/pull/198" + }, + { + "id": 138906275, + "labels": ["bug"], + "number": 196, + "title": "Bitbucket incorrect id and styling inconsistency.", + "url": "https://github.com/hapijs/bell/pull/196" + } + ], + "number": 37, + "url": "https://github.com/hapijs/bell/milestone/37", + "version": "7.2.0" + }, + { + "date": "2016-03-04T01:16:34Z", + "id": 1621365, + "issues": [ + { + "id": 138345482, + "labels": ["feature"], + "number": 194, + "title": "Support returning raw resource payload. Closes #193", + "url": "https://github.com/hapijs/bell/pull/194" + }, + { + "id": 138345320, + "labels": ["feature"], + "number": 193, + "title": "client.resource() raw payload", + "url": "https://github.com/hapijs/bell/issues/193" + } + ], "number": 35, - "title": "Add VK provider.", - "url": "https://github.com/hapijs/bell/pull/35" - } - ], - "number": 5, - "url": "https://github.com/hapijs/bell/milestone/5", - "version": "1.3.0" - }, - { - "date": "2014-10-16T21:03:40Z", - "id": 752849, - "issues": [ - { - "id": 46009950, - "labels": ["bug"], - "number": 34, - "title": "handle oauth login user rejection", - "url": "https://github.com/hapijs/bell/pull/34" - }, - { - "id": 44911704, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/35", + "version": "7.1.0" + }, + { + "date": "2016-03-04T01:13:02Z", + "id": 1582058, + "issues": [ + { + "id": 136954038, + "labels": ["breaking changes", "release notes"], + "number": 189, + "title": "Bell 7 release notes", + "url": "https://github.com/hapijs/bell/issues/189" + }, + { + "id": 136310635, + "labels": ["feature", "documentation"], + "number": 188, + "title": "Add Auth0 provider", + "url": "https://github.com/hapijs/bell/pull/188" + }, + { + "id": 133559033, + "labels": ["breaking changes", "dependency"], + "number": 187, + "title": "peerDependency on Hapi 13", + "url": "https://github.com/hapijs/bell/issues/187" + }, + { + "id": 131891125, + "labels": ["feature", "documentation"], + "number": 182, + "title": "Allow passing additional state", + "url": "https://github.com/hapijs/bell/pull/182" + } + ], + "number": 33, + "url": "https://github.com/hapijs/bell/milestone/33", + "version": "7.0.0" + }, + { + "date": "2016-02-14T18:00:47Z", + "id": 1582054, + "issues": [ + { + "id": 131922738, + "labels": ["feature"], + "number": 183, + "title": "skipProfile option", + "url": "https://github.com/hapijs/bell/pull/183" + }, + { + "id": 116964394, + "labels": ["feature"], + "number": 163, + "title": "Auth fails silently", + "url": "https://github.com/hapijs/bell/issues/163" + } + ], + "number": 32, + "url": "https://github.com/hapijs/bell/milestone/32", + "version": "6.3.0" + }, + { + "date": "2016-02-14T17:26:20Z", + "id": 1488306, + "issues": [ + { + "id": 130360107, + "labels": ["feature", "documentation"], + "number": 179, + "title": "Added Twitch provider", + "url": "https://github.com/hapijs/bell/pull/179" + }, + { + "id": 130185205, + "labels": ["documentation", "test"], + "number": 178, + "title": "Upgrade devDependencies, test Hapi 12, lint update with tests/examples", + "url": "https://github.com/hapijs/bell/pull/178" + } + ], "number": 31, - "title": "Add bitbucket provider", - "url": "https://github.com/hapijs/bell/pull/31" - }, - { - "id": 43539869, - "labels": ["dependency"], - "number": 27, - "title": "Replaced nipple with wreck.", - "url": "https://github.com/hapijs/bell/pull/27" - }, - { - "id": 43538976, - "labels": ["dependency"], + "url": "https://github.com/hapijs/bell/milestone/31", + "version": "6.2.0" + }, + { + "date": "2016-01-12T17:26:29Z", + "id": 1412443, + "issues": [ + { + "id": 124298995, + "labels": ["feature"], + "number": 174, + "title": "Update bitbucket to use the oAuth2 endpoint", + "url": "https://github.com/hapijs/bell/pull/174" + }, + { + "id": 117937157, + "labels": ["feature"], + "number": 168, + "title": "Add simulated mode. Closes #167", + "url": "https://github.com/hapijs/bell/pull/168" + }, + { + "id": 117937091, + "labels": ["feature"], + "number": 167, + "title": "Simulated mode", + "url": "https://github.com/hapijs/bell/issues/167" + } + ], + "number": 30, + "url": "https://github.com/hapijs/bell/milestone/30", + "version": "6.1.0" + }, + { + "date": "2015-11-15T19:54:44Z", + "id": 1267613, + "issues": [ + { + "id": 114815063, + "labels": ["feature"], + "number": 162, + "title": "Add error if using non-https server when isSecure is set to true", + "url": "https://github.com/hapijs/bell/pull/162" + }, + { + "id": 114503526, + "labels": ["breaking changes", "dependency"], + "number": 160, + "title": "Upgrade to Node 4+, Hapi 10+, ES6 styling, Update dependencies", + "url": "https://github.com/hapijs/bell/pull/160" + }, + { + "id": 114379837, + "labels": ["feature", "breaking changes", "release notes"], + "number": 159, + "title": "Bell 6 Release Notes", + "url": "https://github.com/hapijs/bell/issues/159" + } + ], "number": 26, - "title": "Wreck", - "url": "https://github.com/hapijs/bell/issues/26" - } - ], - "number": 4, - "url": "https://github.com/hapijs/bell/milestone/4", - "version": "1.2.0" - }, - { - "date": "2014-08-13T21:01:24Z", - "id": 690078, - "issues": [ - { - "id": 39393189, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/26", + "version": "6.0.0" + }, + { + "date": "2015-11-15T19:55:02Z", + "id": 1353444, + "issues": [ + { + "id": 111161294, + "labels": ["feature"], + "number": 155, + "title": "Added Tumblr provider", + "url": "https://github.com/hapijs/bell/pull/155" + }, + { + "id": 110628822, + "labels": ["documentation"], + "number": 154, + "title": "Fixed no-comma-dangle in README", + "url": "https://github.com/hapijs/bell/pull/154" + }, + { + "id": 110142267, + "labels": ["test"], + "number": 153, + "title": "Test Hapi 9 and 10", + "url": "https://github.com/hapijs/bell/pull/153" + }, + { + "id": 109608554, + "labels": ["documentation"], + "number": 150, + "title": "Add documentation about Linkedin custom profile fields", + "url": "https://github.com/hapijs/bell/pull/150" + }, + { + "id": 109086142, + "labels": ["test"], + "number": 148, + "title": "upgrade to lab 6 and cleanup", + "url": "https://github.com/hapijs/bell/pull/148" + } + ], + "number": 29, + "url": "https://github.com/hapijs/bell/milestone/29", + "version": "5.4.0" + }, + { + "date": "2015-10-04T02:59:15Z", + "id": 1322964, + "issues": [ + { + "id": 108222836, + "labels": ["dependency"], + "number": 147, + "title": "Update Wreck to 6.x.x and some devDependencies", + "url": "https://github.com/hapijs/bell/pull/147" + }, + { + "id": 102565394, + "labels": ["dependency"], + "number": 133, + "title": "Update Wreck to 6.1.0 or latest version", + "url": "https://github.com/hapijs/bell/issues/133" + } + ], + "number": 28, + "url": "https://github.com/hapijs/bell/milestone/28", + "version": "5.3.0" + }, + { + "date": "2015-09-24T22:07:07Z", + "id": 1322464, + "issues": [ + { + "id": 108085214, + "labels": ["feature"], + "number": 146, + "title": "Meetup.com Provider", + "url": "https://github.com/hapijs/bell/pull/146" + }, + { + "id": 106601184, + "labels": [], + "number": 142, + "title": "Update Providers.md", + "url": "https://github.com/hapijs/bell/pull/142" + }, + { + "id": 106487637, + "labels": ["documentation"], + "number": 141, + "title": "500 error on google auth", + "url": "https://github.com/hapijs/bell/issues/141" + }, + { + "id": 106076382, + "labels": ["test"], + "number": 140, + "title": "Fix tests", + "url": "https://github.com/hapijs/bell/pull/140" + }, + { + "id": 105957609, + "labels": ["documentation"], + "number": 139, + "title": "Split up the documentation and add provider specific information plus…", + "url": "https://github.com/hapijs/bell/pull/139" + }, + { + "id": 105655602, + "labels": ["test"], + "number": 137, + "title": "Node v4", + "url": "https://github.com/hapijs/bell/pull/137" + }, + { + "id": 102205360, + "labels": ["test"], + "number": 132, + "title": "Fix lasting linting issues", + "url": "https://github.com/hapijs/bell/issues/132" + }, + { + "id": 101534552, + "labels": ["documentation"], + "number": 127, + "title": "Document Bell Core API and Providers API", + "url": "https://github.com/hapijs/bell/issues/127" + }, + { + "id": 90126689, + "labels": ["feature", "documentation"], + "number": 109, + "title": "Provider wiki", + "url": "https://github.com/hapijs/bell/issues/109" + }, + { + "id": 43538912, + "labels": ["test"], + "number": 25, + "title": "Test Cleanup", + "url": "https://github.com/hapijs/bell/issues/25" + } + ], + "number": 27, + "url": "https://github.com/hapijs/bell/milestone/27", + "version": "5.2.0" + }, + { + "date": "2015-09-09T21:41:16Z", + "id": 1230852, + "issues": [ + { + "id": 102202544, + "labels": ["bug", "test"], + "number": 131, + "title": "Fix wrong tests. OAuth1 does not include expiresIn for yahoo/bitbucke…", + "url": "https://github.com/hapijs/bell/pull/131" + }, + { + "id": 102151605, + "labels": ["bug"], + "number": 130, + "title": "fixed linting issues // now extends lab linting", + "url": "https://github.com/hapijs/bell/pull/130" + }, + { + "id": 102134344, + "labels": ["feature"], + "number": 129, + "title": "added allowRuntimeProviderParams to allow runtime query params ", + "url": "https://github.com/hapijs/bell/pull/129" + }, + { + "id": 101499025, + "labels": ["feature", "support"], + "number": 125, + "title": "Provide variable providerParams", + "url": "https://github.com/hapijs/bell/issues/125" + } + ], + "number": 23, + "url": "https://github.com/hapijs/bell/milestone/23", + "version": "5.1.0" + }, + { + "date": "2015-07-29T03:35:23Z", + "id": 1216429, + "issues": [ + { + "id": 97842969, + "labels": ["bug", "documentation"], + "number": 120, + "title": "Facebook Provider: Fix expiresIn, add example, backwards compatibility", + "url": "https://github.com/hapijs/bell/pull/120" + }, + { + "id": 96207795, + "labels": [], + "number": 119, + "title": "Update google.js", + "url": "https://github.com/hapijs/bell/pull/119" + }, + { + "id": 96118994, + "labels": ["non issue"], + "number": 117, + "title": "Lois Desplat is the new maintainer", + "url": "https://github.com/hapijs/bell/issues/117" + }, + { + "id": 95862418, + "labels": [], + "number": 115, + "title": "Add fields to the query", + "url": "https://github.com/hapijs/bell/pull/115" + }, + { + "id": 80110903, + "labels": ["bug"], + "number": 89, + "title": "facebook expiration won't be mapped properly", + "url": "https://github.com/hapijs/bell/issues/89" + } + ], + "number": 22, + "url": "https://github.com/hapijs/bell/milestone/22", + "version": "5.0.1" + }, + { + "date": "2015-07-20T17:35:30Z", + "id": 1206158, + "issues": [ + { + "id": 96116127, + "labels": ["breaking changes", "release notes"], + "number": 116, + "title": "5.0.0 Release Notes", + "url": "https://github.com/hapijs/bell/issues/116" + }, + { + "id": 94105164, + "labels": ["bug", "breaking changes"], + "number": 114, + "title": "Updated LinkedIn's default scope", + "url": "https://github.com/hapijs/bell/pull/114" + }, + { + "id": 91788420, + "labels": ["documentation"], + "number": 110, + "title": "Fix google example", + "url": "https://github.com/hapijs/bell/pull/110" + }, + { + "id": 89478824, + "labels": ["bug", "breaking changes"], + "number": 108, + "title": "Updated Google provider so that login uses the recommended Google+ People endpoint", + "url": "https://github.com/hapijs/bell/pull/108" + }, + { + "id": 65967906, + "labels": ["bug"], + "number": 66, + "title": "Deprecated Google and Facebook APIs", + "url": "https://github.com/hapijs/bell/issues/66" + } + ], + "number": 21, + "url": "https://github.com/hapijs/bell/milestone/21", + "version": "5.0.0" + }, + { + "date": "2015-07-14T00:28:07Z", + "id": 1160658, + "issues": [ + { + "id": 89478155, + "labels": ["bug"], + "number": 107, + "title": " Fix clientSecret usage and adds test case", + "url": "https://github.com/hapijs/bell/pull/107" + }, + { + "id": 88744536, + "labels": ["bug"], + "number": 103, + "title": "remove property username as it is not part of the google profile", + "url": "https://github.com/hapijs/bell/pull/103" + }, + { + "id": 88316531, + "labels": ["bug"], + "number": 101, + "title": "Fix clientSecret usage", + "url": "https://github.com/hapijs/bell/pull/101" + } + ], + "number": 20, + "url": "https://github.com/hapijs/bell/milestone/20", + "version": "4.0.1" + }, + { + "date": "2015-06-11T16:29:39Z", + "id": 1138689, + "issues": [ + { + "id": 87413807, + "labels": ["release notes"], + "number": 100, + "title": "4.0.0 Release Notes", + "url": "https://github.com/hapijs/bell/issues/100" + }, + { + "id": 85653474, + "labels": ["feature", "breaking changes"], + "number": 99, + "title": "Ensure only 1 authentication method is used during /token access in o…", + "url": "https://github.com/hapijs/bell/pull/99" + }, + { + "id": 85344661, + "labels": ["breaking changes"], + "number": 98, + "title": "Don't send client credentials as parameters and basic auth while retrieving token", + "url": "https://github.com/hapijs/bell/issues/98" + }, + { + "id": 84212813, + "labels": ["bug"], + "number": 96, + "title": "Allow null for domain", + "url": "https://github.com/hapijs/bell/pull/96" + } + ], + "number": 19, + "url": "https://github.com/hapijs/bell/milestone/19", + "version": "4.0.0" + }, + { + "date": "2015-05-28T19:49:09Z", + "id": 1136837, + "issues": [ + { + "id": 81658797, + "labels": ["bug", "breaking changes"], + "number": 94, + "title": "Rewrite OAuth 1.0 client interface", + "url": "https://github.com/hapijs/bell/pull/94" + }, + { + "id": 81657787, + "labels": ["bug", "breaking changes"], + "number": 92, + "title": "Fix POST payload format and location", + "url": "https://github.com/hapijs/bell/issues/92" + } + ], + "number": 18, + "url": "https://github.com/hapijs/bell/milestone/18", + "version": "3.0.0" + }, + { + "date": "2015-05-27T20:48:34Z", + "id": 1113507, + "issues": [ + { + "id": 81118385, + "labels": ["feature"], + "number": 91, + "title": "OAuth client resource() endpoint", + "url": "https://github.com/hapijs/bell/pull/91" + }, + { + "id": 81117580, + "labels": ["feature"], + "number": 90, + "title": "Expose OAuth 1.0 client protected resource endpoing", + "url": "https://github.com/hapijs/bell/issues/90" + } + ], "number": 17, - "title": "Add Instagram provider.", - "url": "https://github.com/hapijs/bell/pull/17" - }, - { - "id": 37713995, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/17", + "version": "2.9.0" + }, + { + "date": "2015-05-16T19:21:36Z", + "id": 1107238, + "issues": [ + { + "id": 77107231, + "labels": ["feature"], + "number": 88, + "title": "Expose OAuth interface. Closes #48", + "url": "https://github.com/hapijs/bell/pull/88" + }, + { + "id": 52404897, + "labels": ["feature"], + "number": 48, + "title": "Expose Client as a plugin method", + "url": "https://github.com/hapijs/bell/issues/48" + } + ], + "number": 16, + "url": "https://github.com/hapijs/bell/milestone/16", + "version": "2.8.0" + }, + { + "date": "2015-05-12T17:42:06Z", + "id": 1095843, + "issues": [ + { + "id": 74862512, + "labels": ["bug"], + "number": 87, + "title": "Pass `forceHttps` and `location` to v1 client", + "url": "https://github.com/hapijs/bell/pull/87" + } + ], + "number": 15, + "url": "https://github.com/hapijs/bell/milestone/15", + "version": "2.7.1" + }, + { + "date": "2015-05-04T21:07:52Z", + "id": 1095583, + "issues": [ + { + "id": 73036999, + "labels": ["feature"], + "number": 85, + "title": "add location setting similar to old hapi server location", + "url": "https://github.com/hapijs/bell/pull/85" + } + ], "number": 14, - "title": "Add Foursquare as built-in provider", - "url": "https://github.com/hapijs/bell/pull/14" - }, - { - "id": 37133724, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/14", + "version": "2.7.0" + }, + { + "date": "2015-05-04T18:43:37Z", + "id": 1092703, + "issues": [ + { + "id": 72917686, + "labels": ["feature"], + "number": 84, + "title": "Add nest authentication", + "url": "https://github.com/hapijs/bell/pull/84" + } + ], "number": 13, - "title": "Added ability to specify additional query params for the profile request...", - "url": "https://github.com/hapijs/bell/pull/13" - }, - { - "id": 36009472, - "labels": ["feature"], + "url": "https://github.com/hapijs/bell/milestone/13", + "version": "2.6.0" + }, + { + "date": "2015-05-01T16:31:25Z", + "id": 1080808, + "issues": [ + { + "id": 72001801, + "labels": ["feature"], + "number": 81, + "title": "Added option to specify the LinkedIn profile fields", + "url": "https://github.com/hapijs/bell/pull/81" + }, + { + "id": 71988242, + "labels": ["feature"], + "number": 80, + "title": "Support Reddit as an OAuth provider", + "url": "https://github.com/hapijs/bell/pull/80" + }, + { + "id": 70779579, + "labels": ["feature"], + "number": 79, + "title": "LinkedIn profile fields", + "url": "https://github.com/hapijs/bell/issues/79" + } + ], + "number": 12, + "url": "https://github.com/hapijs/bell/milestone/12", + "version": "2.5.0" + }, + { + "date": "2015-04-23T15:48:49Z", + "id": 1056408, + "issues": [ + { + "id": 69931217, + "labels": ["feature"], + "number": 78, + "title": "update facebook URLs to use facebook Graph v2.3", + "url": "https://github.com/hapijs/bell/pull/78" + }, + { + "id": 69033187, + "labels": ["feature"], + "number": 77, + "title": "Support for Phabricator", + "url": "https://github.com/hapijs/bell/pull/77" + }, + { + "id": 68527118, + "labels": ["feature"], + "number": 73, + "title": "Allow environment variables to configure options", + "url": "https://github.com/hapijs/bell/pull/73" + } + ], "number": 11, - "title": "Allow specifying provider name in custom schema", - "url": "https://github.com/hapijs/bell/pull/11" - } - ], - "number": 3, - "url": "https://github.com/hapijs/bell/milestone/3", - "version": "1.1.0" - }, - { - "date": "2014-06-13T07:09:29Z", - "id": 689583, - "issues": [ - { - "id": 35636518, - "labels": ["bug"], + "url": "https://github.com/hapijs/bell/milestone/11", + "version": "2.4.0" + }, + { + "date": "2015-04-07T15:15:23Z", + "id": 995473, + "issues": [ + { + "id": 66910931, + "labels": ["non issue"], + "number": 71, + "title": "Fix linting issues", + "url": "https://github.com/hapijs/bell/pull/71" + }, + { + "id": 66341064, + "labels": ["dependency"], + "number": 70, + "title": "Update Joi to 6.x", + "url": "https://github.com/hapijs/bell/pull/70" + }, + { + "id": 66016190, + "labels": ["feature"], + "number": 69, + "title": "Add LinkedIn provider", + "url": "https://github.com/hapijs/bell/pull/69" + }, + { + "id": 65996349, + "labels": ["feature"], + "number": 68, + "title": "Add ArcGIS Online provider", + "url": "https://github.com/hapijs/bell/pull/68" + }, + { + "id": 65976092, + "labels": ["bug"], + "number": 67, + "title": "Support new wreck in mocks", + "url": "https://github.com/hapijs/bell/pull/67" + }, + { + "id": 58931909, + "labels": ["dependency"], + "number": 62, + "title": "Update .travis.yml", + "url": "https://github.com/hapijs/bell/pull/62" + } + ], + "number": 10, + "url": "https://github.com/hapijs/bell/milestone/10", + "version": "2.3.0" + }, + { + "date": "2015-02-25T16:52:57Z", + "id": 962575, + "issues": [ + { + "id": 58449684, + "labels": ["bug"], + "number": 60, + "title": "Make forceHttps complete ", + "url": "https://github.com/hapijs/bell/pull/60" + }, + { + "id": 58129227, + "labels": ["feature"], + "number": 58, + "title": "passing back expires_in for oauth 2.0 refresh token request", + "url": "https://github.com/hapijs/bell/pull/58" + }, + { + "id": 55708643, + "labels": ["feature"], + "number": 54, + "title": "Added Dropbox.", + "url": "https://github.com/hapijs/bell/pull/54" + }, + { + "id": 52871863, + "labels": ["feature"], + "number": 49, + "title": "pass back expires_in", + "url": "https://github.com/hapijs/bell/issues/49" + } + ], + "number": 9, + "url": "https://github.com/hapijs/bell/milestone/9", + "version": "2.2.0" + }, + { + "date": "2015-02-02T22:56:46Z", + "id": 904772, + "issues": [ + { + "id": 54653608, + "labels": ["feature"], + "number": 53, + "title": "Add option for forcing https.", + "url": "https://github.com/hapijs/bell/pull/53" + } + ], + "number": 8, + "url": "https://github.com/hapijs/bell/milestone/8", + "version": "2.1.0" + }, + { + "date": "2014-12-15T19:28:03Z", + "id": 881012, + "issues": [ + { + "id": 50345983, + "labels": ["breaking changes", "dependency"], + "number": 43, + "title": "Hapi8", + "url": "https://github.com/hapijs/bell/pull/43" + }, + { + "id": 50127806, + "labels": ["breaking changes", "dependency"], + "number": 42, + "title": "hapi 8.0 API", + "url": "https://github.com/hapijs/bell/issues/42" + } + ], "number": 7, - "title": "Use correct API path for GitHub Enterprise, fix #6", - "url": "https://github.com/hapijs/bell/pull/7" - }, - { - "id": 35636125, - "labels": ["bug"], + "url": "https://github.com/hapijs/bell/milestone/7", + "version": "2.0.0" + }, + { + "date": "2014-12-15T19:28:15Z", + "id": 843882, + "issues": [ + { + "id": 48107444, + "labels": ["bug"], + "number": 39, + "title": "handle oauth user rejection for v2 as well", + "url": "https://github.com/hapijs/bell/pull/39" + } + ], "number": 6, - "title": "Unable to get GitHub Enterprise profile data", - "url": "https://github.com/hapijs/bell/issues/6" - } - ], - "number": 2, - "url": "https://github.com/hapijs/bell/milestone/2", - "version": "1.0.2" - }, - { - "date": "2014-06-12T17:35:38Z", - "id": 684357, - "issues": [ - { - "id": 35586560, - "labels": ["bug"], + "url": "https://github.com/hapijs/bell/milestone/6", + "version": "1.3.1" + }, + { + "date": "2014-10-28T16:15:10Z", + "id": 829502, + "issues": [ + { + "id": 46380572, + "labels": ["feature"], + "number": 35, + "title": "Add VK provider.", + "url": "https://github.com/hapijs/bell/pull/35" + } + ], "number": 5, - "title": "Bump peer dependency to Hapi >= 6", - "url": "https://github.com/hapijs/bell/pull/5" - } - ], - "number": 1, - "url": "https://github.com/hapijs/bell/milestone/1", - "version": "1.0.1" - } + "url": "https://github.com/hapijs/bell/milestone/5", + "version": "1.3.0" + }, + { + "date": "2014-10-16T21:03:40Z", + "id": 752849, + "issues": [ + { + "id": 46009950, + "labels": ["bug"], + "number": 34, + "title": "handle oauth login user rejection", + "url": "https://github.com/hapijs/bell/pull/34" + }, + { + "id": 44911704, + "labels": ["feature"], + "number": 31, + "title": "Add bitbucket provider", + "url": "https://github.com/hapijs/bell/pull/31" + }, + { + "id": 43539869, + "labels": ["dependency"], + "number": 27, + "title": "Replaced nipple with wreck.", + "url": "https://github.com/hapijs/bell/pull/27" + }, + { + "id": 43538976, + "labels": ["dependency"], + "number": 26, + "title": "Wreck", + "url": "https://github.com/hapijs/bell/issues/26" + } + ], + "number": 4, + "url": "https://github.com/hapijs/bell/milestone/4", + "version": "1.2.0" + }, + { + "date": "2014-08-13T21:01:24Z", + "id": 690078, + "issues": [ + { + "id": 39393189, + "labels": ["feature"], + "number": 17, + "title": "Add Instagram provider.", + "url": "https://github.com/hapijs/bell/pull/17" + }, + { + "id": 37713995, + "labels": ["feature"], + "number": 14, + "title": "Add Foursquare as built-in provider", + "url": "https://github.com/hapijs/bell/pull/14" + }, + { + "id": 37133724, + "labels": ["feature"], + "number": 13, + "title": "Added ability to specify additional query params for the profile request...", + "url": "https://github.com/hapijs/bell/pull/13" + }, + { + "id": 36009472, + "labels": ["feature"], + "number": 11, + "title": "Allow specifying provider name in custom schema", + "url": "https://github.com/hapijs/bell/pull/11" + } + ], + "number": 3, + "url": "https://github.com/hapijs/bell/milestone/3", + "version": "1.1.0" + }, + { + "date": "2014-06-13T07:09:29Z", + "id": 689583, + "issues": [ + { + "id": 35636518, + "labels": ["bug"], + "number": 7, + "title": "Use correct API path for GitHub Enterprise, fix #6", + "url": "https://github.com/hapijs/bell/pull/7" + }, + { + "id": 35636125, + "labels": ["bug"], + "number": 6, + "title": "Unable to get GitHub Enterprise profile data", + "url": "https://github.com/hapijs/bell/issues/6" + } + ], + "number": 2, + "url": "https://github.com/hapijs/bell/milestone/2", + "version": "1.0.2" + }, + { + "date": "2014-06-12T17:35:38Z", + "id": 684357, + "issues": [ + { + "id": 35586560, + "labels": ["bug"], + "number": 5, + "title": "Bump peer dependency to Hapi >= 6", + "url": "https://github.com/hapijs/bell/pull/5" + } + ], + "number": 1, + "url": "https://github.com/hapijs/bell/milestone/1", + "version": "1.0.1" + } ] diff --git a/generated/modules/bell/info.json b/generated/modules/bell/info.json index 5dca88aa..ef8de5f9 100644 --- a/generated/modules/bell/info.json +++ b/generated/modules/bell/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 210, - "isPlugin": true, - "link": "https://github.com/hapijs/bell", - "name": "bell", - "package": "@hapi/bell", - "slogan": "Third-party login plugin for hapi.js.", - "sloganHtml": "Third-party login plugin for hapi.js.", - "stars": 620, - "updated": "2025-03-12T12:09:23Z", - "versions": [ - { - "branch": "v13.1.0", - "license": "BSD", - "name": "13.1.0", - "node": ">= 16" - } - ], - "versionsArray": ["13.1.0"], - "latestVersion": "13.x.x" + "api": true, + "forks": 209, + "isPlugin": true, + "latestVersion": "13.x.x", + "link": "https://github.com/hapijs/bell", + "name": "bell", + "package": "@hapi/bell", + "slogan": "Third-party login plugin for hapi.js.", + "sloganHtml": "Third-party login plugin for hapi.js.", + "stars": 620, + "updated": "2025-03-12T12:09:23Z", + "versions": [ + { + "branch": "v13.1.0", + "license": "BSD", + "name": "13.1.0", + "node": ">= 16" + } + ], + "versionsArray": ["13.1.0"] } diff --git a/generated/modules/boom/changelog.json b/generated/modules/boom/changelog.json index ef3ffd50..c05ef776 100644 --- a/generated/modules/boom/changelog.json +++ b/generated/modules/boom/changelog.json @@ -1,1357 +1,1357 @@ [ - { - "date": "2023-02-11T17:44:33Z", - "id": 7933499, - "issues": [ - { - "id": 1551745414, - "labels": ["dependency"], - "number": 299, - "title": "chore: bump hoek and lab", - "url": "https://github.com/hapijs/boom/pull/299" - }, - { - "id": 1267469467, - "labels": ["bug", "types"], - "number": 297, - "title": "Document 1st arg can be an Error", - "url": "https://github.com/hapijs/boom/pull/297" - } - ], - "number": 69, - "url": "https://github.com/hapijs/boom/milestone/69", - "version": "10.0.1" - }, - { - "date": "2022-05-02T02:47:27Z", - "id": 7932377, - "issues": [ - { - "id": 1222277974, - "labels": ["breaking changes", "dependency"], - "number": 295, - "title": "Support node v18, drop node v12", - "url": "https://github.com/hapijs/boom/pull/295" - } - ], - "number": 68, - "url": "https://github.com/hapijs/boom/milestone/68", - "version": "10.0.0" - }, - { - "date": "2021-08-23T22:23:19Z", - "id": 6910115, - "issues": [ - { - "id": 974604408, - "labels": ["bug"], - "number": 289, - "title": "fix: make reformat configurable in initialize", - "url": "https://github.com/hapijs/boom/pull/289" - } - ], - "number": 66, - "url": "https://github.com/hapijs/boom/milestone/66", - "version": "9.1.4" - }, - { - "date": "2021-07-02T03:23:36Z", - "id": 6549940, - "issues": [ - { - "id": 933563226, - "labels": ["bug"], - "number": 286, - "title": "Don't mess with instanceof checks called on subclasses", - "url": "https://github.com/hapijs/boom/pull/286" - }, - { - "id": 933007509, - "labels": [], - "number": 285, - "title": "Extending Boom and unexpected instanceof behavior", - "url": "https://github.com/hapijs/boom/issues/285" - } - ], - "number": 64, - "url": "https://github.com/hapijs/boom/milestone/64", - "version": "9.1.3" - }, - { - "date": "2021-03-16T02:10:26Z", - "id": 6219480, - "issues": [ - { - "id": 830564201, - "labels": ["types"], - "number": 281, - "title": "Add proper index type to headers property", - "url": "https://github.com/hapijs/boom/pull/281" - } - ], - "number": 63, - "url": "https://github.com/hapijs/boom/milestone/63", - "version": "9.1.2" - }, - { - "date": "2020-12-16T15:48:27Z", - "id": 5193441, - "issues": [ - { - "id": 767781175, - "labels": ["bug", "types"], - "number": 279, - "title": "TypeScript: Allow custom properties on output.payload", - "url": "https://github.com/hapijs/boom/pull/279" - }, - { - "id": 767698884, - "labels": ["documentation", "types"], - "number": 278, - "title": "Clean up d.ts comments", - "url": "https://github.com/hapijs/boom/pull/278" - }, - { - "id": 760193136, - "labels": ["bug", "types"], - "number": 277, - "title": "output.payload.attributes is not exposed in the .d.ts file", - "url": "https://github.com/hapijs/boom/issues/277" - }, - { - "id": 752101575, - "labels": ["types"], - "number": 275, - "title": "Make isBoom type definition laxer", - "url": "https://github.com/hapijs/boom/pull/275" - }, - { - "id": 709585860, - "labels": ["dependency"], - "number": 273, - "title": "upgrade lab to v24 and devDependency of typescript", - "url": "https://github.com/hapijs/boom/pull/273" - } - ], - "number": 62, - "url": "https://github.com/hapijs/boom/milestone/62", - "version": "9.1.1" - }, - { - "date": "2020-03-12T03:12:39Z", - "id": 4972083, - "issues": [ - { - "id": 571681503, - "labels": ["feature"], - "number": 266, - "title": "Add optional statusCode parameter to Boom.isBoom", - "url": "https://github.com/hapijs/boom/pull/266" - }, - { - "id": 561724306, - "labels": ["feature"], - "number": 265, - "title": "Optional second param for Boom.isBoom() to verify status code", - "url": "https://github.com/hapijs/boom/issues/265" - } - ], - "number": 61, - "url": "https://github.com/hapijs/boom/milestone/61", - "version": "9.1.0" - }, - { - "date": "2020-01-04T00:06:35Z", - "id": 4972082, - "issues": [ - { - "id": 545207986, - "labels": ["breaking changes", "dependency"], - "number": 262, - "title": "Support only node 12", - "url": "https://github.com/hapijs/boom/issues/262" - }, - { - "id": 544085781, - "labels": ["feature"], - "number": 261, - "title": "Add HTTP code 425 Too Early", - "url": "https://github.com/hapijs/boom/pull/261" - }, - { - "id": 539758313, - "labels": ["bug"], - "number": 260, - "title": "boom.unathorized adds extra space to string value scheme in WWW-Authenticate header", - "url": "https://github.com/hapijs/boom/issues/260" - } - ], - "number": 60, - "url": "https://github.com/hapijs/boom/milestone/60", - "version": "9.0.0" - }, - { - "date": "2019-09-28T05:13:21Z", - "id": 4699261, - "issues": [ - { - "id": 499724482, - "labels": ["breaking changes"], - "number": 253, - "title": "change new Boom() to new Boom.Boom()", - "url": "https://github.com/hapijs/boom/issues/253" - }, - { - "id": 499599367, - "labels": ["breaking changes", "dependency"], - "number": 252, - "title": "Drop support for node 8", - "url": "https://github.com/hapijs/boom/issues/252" - }, - { - "id": 499599110, - "labels": ["breaking changes", "types"], - "number": 251, - "title": "Add types", - "url": "https://github.com/hapijs/boom/issues/251" - }, - { - "id": 497769486, - "labels": ["bug"], - "number": 246, - "title": "boom doesn't consider message not set directly on error object when deciding whether it is a compatible error", - "url": "https://github.com/hapijs/boom/issues/246" - } - ], - "number": 58, - "url": "https://github.com/hapijs/boom/milestone/58", - "version": "8.0.1" - }, - { - "date": "2021-04-21T23:09:44Z", - "id": 6685829, - "issues": [ - { - "id": 862946328, - "labels": ["lts", "commercial"], - "number": 282, - "title": "Latest v7-commercial release (v7.4.11) is broken", - "url": "https://github.com/hapijs/boom/issues/282" - } - ], - "number": 65, - "url": "https://github.com/hapijs/boom/milestone/65", - "version": "7.4.12" - }, - { - "date": "2019-09-27T18:55:27Z", - "id": 4684621, - "issues": [ - { - "id": 498081326, - "labels": ["bug", "types"], - "number": 248, - "title": "Error TS2709: Cannot use namespace 'Boom' as a type.", - "url": "https://github.com/hapijs/boom/issues/248" - } - ], - "number": 56, - "url": "https://github.com/hapijs/boom/milestone/56", - "version": "7.4.11" - }, - { - "date": "2019-09-23T20:34:29Z", - "id": 4678666, - "issues": [ - { - "id": 497308625, - "labels": ["bug", "types"], - "number": 245, - "title": "Fix default export. Fixes #244.", - "url": "https://github.com/hapijs/boom/pull/245" - }, - { - "id": 496775580, - "labels": ["bug", "types"], - "number": 244, - "title": "Typescript - can't extend Boom", - "url": "https://github.com/hapijs/boom/issues/244" - } - ], - "number": 55, - "url": "https://github.com/hapijs/boom/milestone/55", - "version": "7.4.10" - }, - { - "date": "2019-09-21T00:10:43Z", - "id": 4678637, - "issues": [ - { - "id": 496589230, - "labels": ["bug", "types"], - "number": 243, - "title": "Improve types", - "url": "https://github.com/hapijs/boom/issues/243" - } - ], - "number": 54, - "url": "https://github.com/hapijs/boom/milestone/54", - "version": "7.4.9" - }, - { - "date": "2019-09-20T23:24:43Z", - "id": 4676178, - "issues": [ - { - "id": 496514428, - "labels": ["bug", "types"], - "number": 242, - "title": "Typescript definitions missing internal()", - "url": "https://github.com/hapijs/boom/issues/242" - }, - { - "id": 496371436, - "labels": ["types"], - "number": 241, - "title": "Ts fix", - "url": "https://github.com/hapijs/boom/pull/241" - }, - { - "id": 496323207, - "labels": ["types"], - "number": 240, - "title": "Fix types: Update static isBoom to be a type guard.", - "url": "https://github.com/hapijs/boom/pull/240" - } - ], - "number": 53, - "url": "https://github.com/hapijs/boom/milestone/53", - "version": "7.4.8" - }, - { - "date": "2019-09-20T04:15:14Z", - "id": 4675831, - "issues": [ - { - "id": 496133370, - "labels": ["types"], - "number": 239, - "title": "Missing error properties", - "url": "https://github.com/hapijs/boom/issues/239" - } - ], - "number": 52, - "url": "https://github.com/hapijs/boom/milestone/52", - "version": "7.4.7" - }, - { - "date": "2019-09-20T00:24:55Z", - "id": 4675380, - "issues": [ - { - "id": 496069367, - "labels": ["bug", "types"], - "number": 238, - "title": "Fix types: serviceUnavailable -> serverUnavailable.", - "url": "https://github.com/hapijs/boom/pull/238" - }, - { - "id": 496066851, - "labels": ["bug", "types"], - "number": 237, - "title": "Types have typo: serverUnavailable -> serviceUnavailable", - "url": "https://github.com/hapijs/boom/issues/237" - } - ], - "number": 51, - "url": "https://github.com/hapijs/boom/milestone/51", - "version": "7.4.6" - }, - { - "date": "2019-09-19T21:24:20Z", - "id": 4675379, - "issues": [ - { - "id": 416336224, - "labels": ["bug"], - "number": 216, - "title": "Handle case of message property with getter-only", - "url": "https://github.com/hapijs/boom/issues/216" - }, - { - "id": 413019030, - "labels": ["bug", "breaking changes"], - "number": 215, - "title": "`typeof` and `reformat` should not be enumerable", - "url": "https://github.com/hapijs/boom/issues/215" - } - ], - "number": 50, - "url": "https://github.com/hapijs/boom/milestone/50", - "version": "7.4.5" - }, - { - "date": "2019-09-19T20:06:00Z", - "id": 4571373, - "issues": [ - { - "id": 490208139, - "labels": ["types"], - "number": 233, - "title": "Added TS declarations", - "url": "https://github.com/hapijs/boom/pull/233" - } - ], - "number": 49, - "url": "https://github.com/hapijs/boom/milestone/49", - "version": "7.4.4" - }, - { - "date": "2019-08-14T04:54:27Z", - "id": 4184483, - "issues": [ - { - "id": 480479839, - "labels": ["dependency"], - "number": 229, - "title": "Update deps", - "url": "https://github.com/hapijs/boom/issues/229" - } - ], - "number": 48, - "url": "https://github.com/hapijs/boom/milestone/48", - "version": "7.4.3" - }, - { - "date": "2019-03-29T22:31:08Z", - "id": 4184451, - "issues": [ - { - "id": 427200874, - "labels": ["dependency"], - "number": 221, - "title": "Update deps", - "url": "https://github.com/hapijs/boom/issues/221" - } - ], - "number": 47, - "url": "https://github.com/hapijs/boom/milestone/47", - "version": "7.4.2" - }, - { - "date": "2019-03-29T21:48:57Z", - "id": 4175361, - "issues": [ - { - "id": 427189825, - "labels": ["bug"], - "number": 220, - "title": "Fix dependency", - "url": "https://github.com/hapijs/boom/issues/220" - } - ], - "number": 46, - "url": "https://github.com/hapijs/boom/milestone/46", - "version": "7.4.1" - }, - { - "date": "2019-03-27T00:50:55Z", - "id": 3856156, - "issues": [ - { - "id": 425703084, - "labels": ["non issue"], - "number": 219, - "title": "Change module namespace", - "url": "https://github.com/hapijs/boom/issues/219" - } - ], - "number": 42, - "url": "https://github.com/hapijs/boom/milestone/42", - "version": "7.4.0" - }, - { - "date": "2018-11-28T20:33:01Z", - "id": 3792170, - "issues": [ - { - "id": 385438649, - "labels": ["feature"], - "number": 211, - "title": "add debug mode to reformat()", - "url": "https://github.com/hapijs/boom/pull/211" - } - ], - "number": 41, - "url": "https://github.com/hapijs/boom/milestone/41", - "version": "7.3.0" - }, - { - "date": "2018-11-03T00:16:50Z", - "id": 3787424, - "issues": [ - { - "id": 377000683, - "labels": ["non issue"], - "number": 208, - "title": "Remove engines", - "url": "https://github.com/hapijs/boom/issues/208" - } - ], - "number": 40, - "url": "https://github.com/hapijs/boom/milestone/40", - "version": "7.2.2" - }, - { - "date": "2018-11-01T07:28:14Z", - "id": 3151282, - "issues": [ - { - "id": 376282983, - "labels": ["dependency"], - "number": 206, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/boom/issues/206" - } - ], - "number": 39, - "url": "https://github.com/hapijs/boom/milestone/39", - "version": "7.2.1" - }, - { - "date": "2018-02-28T17:43:37Z", - "id": 2886640, - "issues": [ - { - "id": 300553030, - "labels": ["feature"], - "number": 188, - "title": "424 Failed dependency implementation", - "url": "https://github.com/hapijs/boom/pull/188" - } - ], - "number": 38, - "url": "https://github.com/hapijs/boom/milestone/38", - "version": "7.2.0" - }, - { - "date": "2017-11-03T18:05:01Z", - "id": 2885272, - "issues": [ - { - "id": 271067763, - "labels": ["feature", "breaking changes"], - "number": 173, - "title": "Support instanceof", - "url": "https://github.com/hapijs/boom/issues/173" - } - ], - "number": 37, - "url": "https://github.com/hapijs/boom/milestone/37", - "version": "7.1.1" - }, - { - "date": "2017-11-03T07:24:07Z", - "id": 2884972, - "issues": [ - { - "id": 270895719, - "labels": ["feature"], - "number": 172, - "title": "Add decorate option", - "url": "https://github.com/hapijs/boom/issues/172" - } - ], - "number": 36, - "url": "https://github.com/hapijs/boom/milestone/36", - "version": "7.1.0" - }, - { - "date": "2017-11-03T07:24:09Z", - "id": 2793807, - "issues": [ - { - "id": 270846386, - "labels": ["feature", "breaking changes"], - "number": 171, - "title": "Remove wrap() and create()", - "url": "https://github.com/hapijs/boom/issues/171" - } - ], - "number": 35, - "url": "https://github.com/hapijs/boom/milestone/35", - "version": "7.0.0" - }, - { - "date": "2017-09-26T05:23:53Z", - "id": 2648780, - "issues": [ - { - "id": 260494213, - "labels": ["breaking changes"], - "number": 165, - "title": "Node v8", - "url": "https://github.com/hapijs/boom/issues/165" - } - ], - "number": 34, - "url": "https://github.com/hapijs/boom/milestone/34", - "version": "6.0.0" - }, - { - "date": "2019-03-21T23:55:56Z", - "id": 4162375, - "issues": [ - { - "id": 423988827, - "labels": ["bug", "lts"], - "number": 218, - "title": "Load the commercial version of hoek", - "url": "https://github.com/hapijs/boom/issues/218" - } - ], - "number": 44, - "url": "https://github.com/hapijs/boom/milestone/44", - "version": "5.3.1" - }, - { - "date": "2019-03-21T23:30:56Z", - "id": 4162374, - "issues": [ - { - "id": 423982247, - "labels": ["lts"], - "number": 217, - "title": "Commercial version of v5 branch", - "url": "https://github.com/hapijs/boom/issues/217" - } - ], - "number": 43, - "url": "https://github.com/hapijs/boom/milestone/43", - "version": "5.3.0" - }, - { - "date": "2017-07-18T23:45:09Z", - "id": 2547227, - "issues": [ - { - "id": 239997942, - "labels": ["feature"], - "number": 160, - "title": "Allow decorating a boom error", - "url": "https://github.com/hapijs/boom/issues/160" - } - ], - "number": 33, - "url": "https://github.com/hapijs/boom/milestone/33", - "version": "5.2.0" - }, - { - "date": "2017-05-28T21:50:42Z", - "id": 2542326, - "issues": [ - { - "id": 231896546, - "labels": ["bug"], - "number": 157, - "title": "Hide message on 500 when error is provided as data", - "url": "https://github.com/hapijs/boom/issues/157" - }, - { - "id": 231751423, - "labels": ["feature"], - "number": 156, - "title": "Added typeOf functionality", - "url": "https://github.com/hapijs/boom/pull/156" - } - ], - "number": 32, - "url": "https://github.com/hapijs/boom/milestone/32", - "version": "5.1.0" - }, - { - "date": "2017-05-25T07:53:06Z", - "id": 2542280, - "issues": [ - { - "id": 230740729, - "labels": ["bug", "breaking changes"], - "number": 154, - "title": "Boom.wrap with a provided message doesn't format the payload", - "url": "https://github.com/hapijs/boom/issues/154" - }, - { - "id": 222485996, - "labels": ["bug"], - "number": 152, - "title": "Boom.badGateway( string, Boom.anything() )", - "url": "https://github.com/hapijs/boom/issues/152" - } - ], - "number": 31, - "url": "https://github.com/hapijs/boom/milestone/31", - "version": "5.0.0" - }, - { - "date": "2017-05-25T07:25:15Z", - "id": 2399872, - "issues": [ - { - "id": 217548812, - "labels": ["bug"], - "number": 149, - "title": "fix #148 when Boom supplied to wrapper", - "url": "https://github.com/hapijs/boom/pull/149" - }, - { - "id": 217102706, - "labels": ["bug"], - "number": 148, - "title": "Remove line from wrap function", - "url": "https://github.com/hapijs/boom/issues/148" - } - ], - "number": 30, - "url": "https://github.com/hapijs/boom/milestone/30", - "version": "4.3.1" - }, - { - "date": "2017-03-21T07:17:29Z", - "id": 2068360, - "issues": [ - { - "id": 215549601, - "labels": ["feature"], - "number": 147, - "title": "Unauthorized extension for #146", - "url": "https://github.com/hapijs/boom/pull/147" - }, - { - "id": 214967535, - "labels": ["feature"], - "number": 146, - "title": "Unauthorized ", - "url": "https://github.com/hapijs/boom/issues/146" - }, - { - "id": 204346617, - "labels": ["bug"], - "number": 142, - "title": "Boom.wrap never sends custom message to client", - "url": "https://github.com/hapijs/boom/issues/142" - }, - { - "id": 185506129, - "labels": ["feature"], - "number": 139, - "title": "Adds support for `Boom.someMethod(err)`, closes #138", - "url": "https://github.com/hapijs/boom/pull/139" - }, - { - "id": 185470520, - "labels": ["feature"], - "number": 138, - "title": "Preservation of `err.name` via `Boom.create` or `Boom[someMethod]`", - "url": "https://github.com/hapijs/boom/issues/138" - }, - { - "id": 114049946, - "labels": ["feature"], - "number": 78, - "title": "Add Boom.teapot() method with documentation and tests", - "url": "https://github.com/hapijs/boom/pull/78" - } - ], - "number": 29, - "url": "https://github.com/hapijs/boom/milestone/29", - "version": "4.3.0" - }, - { - "date": "2016-10-13T16:46:10Z", - "id": 2031757, - "issues": [ - { - "id": 182656592, - "labels": ["feature"], - "number": 133, - "title": "Add 'allow' parameter to methodNotAllowed for setting 'Allow' header", - "url": "https://github.com/hapijs/boom/pull/133" - }, - { - "id": 182651855, - "labels": [], - "number": 132, - "title": "405 Method Not Allowed should provide an argument for specifying \"Allow\" header", - "url": "https://github.com/hapijs/boom/issues/132" - } - ], - "number": 28, - "url": "https://github.com/hapijs/boom/milestone/28", - "version": "4.2.0" - }, - { - "date": "2016-09-27T13:12:32Z", - "id": 1965164, - "issues": [ - { - "id": 179486484, - "labels": ["feature"], - "number": 130, - "title": "Add 402 payment required", - "url": "https://github.com/hapijs/boom/pull/130" - }, - { - "id": 179008177, - "labels": ["documentation"], - "number": 129, - "title": "Add Boom.internal() to API docs fixes #127", - "url": "https://github.com/hapijs/boom/pull/129" - } - ], - "number": 27, - "url": "https://github.com/hapijs/boom/milestone/27", - "version": "4.1.0" - }, - { - "date": "2016-08-26T13:43:49Z", - "id": 1840726, - "issues": [ - { - "id": 173449005, - "labels": ["breaking changes"], - "number": 125, - "title": "Remove deprecated serverTimeout", - "url": "https://github.com/hapijs/boom/pull/125" - }, - { - "id": 160316238, - "labels": ["breaking changes"], - "number": 118, - "title": "Remove serverTimeout()", - "url": "https://github.com/hapijs/boom/issues/118" - } - ], - "number": 26, - "url": "https://github.com/hapijs/boom/milestone/26", - "version": "4.0.0" - }, - { - "date": "2016-06-21T14:29:48Z", - "id": 1827906, - "issues": [ - { - "id": 161449921, - "labels": ["documentation"], - "number": 121, - "title": "Added .npmignore file.", - "url": "https://github.com/hapijs/boom/pull/121" - }, - { - "id": 160721752, - "labels": [], - "number": 119, - "title": "Rename serverTimeout to serverUnavailable", - "url": "https://github.com/hapijs/boom/pull/119" - }, - { - "id": 160315297, - "labels": ["bug"], - "number": 117, - "title": "serverTimeout() should be aliased to serverUnavailable()", - "url": "https://github.com/hapijs/boom/issues/117" - }, - { - "id": 152302430, - "labels": ["documentation"], - "number": 108, - "title": "Create .npmignore", - "url": "https://github.com/hapijs/boom/pull/108" - } - ], - "number": 25, - "url": "https://github.com/hapijs/boom/milestone/25", - "version": "3.2.2" - }, - { - "date": "2016-05-22T19:58:32Z", - "id": 1779449, - "issues": [ - { - "id": 156160309, - "labels": ["test", "dependency"], - "number": 113, - "title": "Updated to code 3.", - "url": "https://github.com/hapijs/boom/pull/113" - } - ], - "number": 24, - "url": "https://github.com/hapijs/boom/milestone/24", - "version": "3.2.1" - }, - { - "date": "2016-05-20T18:05:04Z", - "id": 1751616, - "issues": [ - { - "id": 155818816, - "labels": ["feature"], - "number": 112, - "title": "Added HTTP code 423 Locked", - "url": "https://github.com/hapijs/boom/pull/112" - }, - { - "id": 155631685, - "labels": ["feature"], - "number": 111, - "title": "HTTP Error 423 (Locked)", - "url": "https://github.com/hapijs/boom/issues/111" - } - ], - "number": 23, - "url": "https://github.com/hapijs/boom/milestone/23", - "version": "3.2.0" - }, - { - "date": "2016-05-06T14:51:15Z", - "id": 1534679, - "issues": [ - { - "id": 153455676, - "labels": ["test", "dependency"], - "number": 110, - "title": "Added node 6.", - "url": "https://github.com/hapijs/boom/pull/110" - } - ], - "number": 22, - "url": "https://github.com/hapijs/boom/milestone/22", - "version": "3.1.3" - }, - { - "date": "2016-01-22T15:06:12Z", - "id": 1472820, - "issues": [ - { - "id": 124157806, - "labels": ["feature"], - "number": 97, - "title": "Use quotes instead of backticks", - "url": "https://github.com/hapijs/boom/pull/97" - } - ], - "number": 21, - "url": "https://github.com/hapijs/boom/milestone/21", - "version": "3.1.2" - }, - { - "date": "2015-12-23T16:54:26Z", - "id": 1472790, - "issues": [ - { - "id": 123687574, - "labels": ["bug"], - "number": 95, - "title": "Changed prototype logic.", - "url": "https://github.com/hapijs/boom/pull/95" - } - ], - "number": 20, - "url": "https://github.com/hapijs/boom/milestone/20", - "version": "3.1.1" - }, - { - "date": "2015-12-23T16:33:16Z", - "id": 1386807, - "issues": [ - { - "id": 123521339, - "labels": ["feature", "documentation"], - "number": 94, - "title": "Cleanup for 254593fd1d09e79049692675a4f9b7b5108b36d8", - "url": "https://github.com/hapijs/boom/pull/94" - }, - { - "id": 123498857, - "labels": ["documentation"], - "number": 93, - "title": "Document Illegal", - "url": "https://github.com/hapijs/boom/issues/93" - }, - { - "id": 123498821, - "labels": ["feature"], - "number": 92, - "title": "Status Code Hash", - "url": "https://github.com/hapijs/boom/issues/92" - }, - { - "id": 123443152, - "labels": ["feature"], - "number": 91, - "title": "Add new 451 Unavailable For Legal Reasons", - "url": "https://github.com/hapijs/boom/pull/91" - } - ], - "number": 19, - "url": "https://github.com/hapijs/boom/milestone/19", - "version": "3.1.0" - }, - { - "date": "2015-10-31T17:24:27Z", - "id": 1386022, - "issues": [ - { - "id": 114422503, - "labels": ["breaking changes"], - "number": 83, - "title": "es6 style. Closes #77", - "url": "https://github.com/hapijs/boom/pull/83" - }, - { - "id": 113354828, - "labels": ["breaking changes"], - "number": 77, - "title": "Node 4 Updates", - "url": "https://github.com/hapijs/boom/issues/77" - } - ], - "number": 18, - "url": "https://github.com/hapijs/boom/milestone/18", - "version": "3.0.0" - }, - { - "date": "2015-10-30T19:16:41Z", - "id": 1377116, - "issues": [ - { - "id": 114176578, - "labels": ["dependency"], - "number": 81, - "title": "Upgrade to lab 7.x.x", - "url": "https://github.com/hapijs/boom/pull/81" - }, - { - "id": 114136243, - "labels": ["bug"], - "number": 80, - "title": "Fix ctor passing in serverError helper", - "url": "https://github.com/hapijs/boom/pull/80" - }, - { - "id": 114131875, - "labels": ["bug"], - "number": 79, - "title": "Stack trace filtering not working for serverError constructors", - "url": "https://github.com/hapijs/boom/issues/79" - } - ], - "number": 17, - "url": "https://github.com/hapijs/boom/milestone/17", - "version": "2.10.1" - }, - { - "date": "2015-10-26T13:28:25Z", - "id": 1366912, - "issues": [ - { - "id": 112442861, - "labels": ["feature"], - "number": 75, - "title": "Support Precondition Required", - "url": "https://github.com/hapijs/boom/pull/75" - }, - { - "id": 112426136, - "labels": ["feature"], - "number": 74, - "title": "Precondition required is not supported", - "url": "https://github.com/hapijs/boom/issues/74" - } - ], - "number": 16, - "url": "https://github.com/hapijs/boom/milestone/16", - "version": "2.10.0" - }, - { - "date": "2015-10-20T19:08:15Z", - "id": 1163434, - "issues": [ - { - "id": 106473501, - "labels": ["feature"], + { + "date": "2023-02-11T17:44:33Z", + "id": 7933499, + "issues": [ + { + "id": 1551745414, + "labels": ["dependency"], + "number": 299, + "title": "chore: bump hoek and lab", + "url": "https://github.com/hapijs/boom/pull/299" + }, + { + "id": 1267469467, + "labels": ["bug", "types"], + "number": 297, + "title": "Document 1st arg can be an Error", + "url": "https://github.com/hapijs/boom/pull/297" + } + ], + "number": 69, + "url": "https://github.com/hapijs/boom/milestone/69", + "version": "10.0.1" + }, + { + "date": "2022-05-02T02:47:27Z", + "id": 7932377, + "issues": [ + { + "id": 1222277974, + "labels": ["breaking changes", "dependency"], + "number": 295, + "title": "Support node v18, drop node v12", + "url": "https://github.com/hapijs/boom/pull/295" + } + ], "number": 68, - "title": "Call captureStackTrace to filter boom from traces", - "url": "https://github.com/hapijs/boom/pull/68" - }, - { - "id": 105686777, - "labels": ["feature"], - "number": 67, - "title": "Use captureStackTrace to remove boom artifacts from stack traces", - "url": "https://github.com/hapijs/boom/issues/67" - } - ], - "number": 15, - "url": "https://github.com/hapijs/boom/milestone/15", - "version": "2.9.0" - }, - { - "date": "2015-06-14T01:16:28Z", - "id": 1123645, - "issues": [ - { - "id": 88066342, - "labels": ["feature"], + "url": "https://github.com/hapijs/boom/milestone/68", + "version": "10.0.0" + }, + { + "date": "2021-08-23T22:23:19Z", + "id": 6910115, + "issues": [ + { + "id": 974604408, + "labels": ["bug"], + "number": 289, + "title": "fix: make reformat configurable in initialize", + "url": "https://github.com/hapijs/boom/pull/289" + } + ], + "number": 66, + "url": "https://github.com/hapijs/boom/milestone/66", + "version": "9.1.4" + }, + { + "date": "2021-07-02T03:23:36Z", + "id": 6549940, + "issues": [ + { + "id": 933563226, + "labels": ["bug"], + "number": 286, + "title": "Don't mess with instanceof checks called on subclasses", + "url": "https://github.com/hapijs/boom/pull/286" + }, + { + "id": 933007509, + "labels": [], + "number": 285, + "title": "Extending Boom and unexpected instanceof behavior", + "url": "https://github.com/hapijs/boom/issues/285" + } + ], + "number": 64, + "url": "https://github.com/hapijs/boom/milestone/64", + "version": "9.1.3" + }, + { + "date": "2021-03-16T02:10:26Z", + "id": 6219480, + "issues": [ + { + "id": 830564201, + "labels": ["types"], + "number": 281, + "title": "Add proper index type to headers property", + "url": "https://github.com/hapijs/boom/pull/281" + } + ], "number": 63, - "title": "Unauthorized", - "url": "https://github.com/hapijs/boom/pull/63" - }, - { - "id": 88063452, - "labels": ["feature"], + "url": "https://github.com/hapijs/boom/milestone/63", + "version": "9.1.2" + }, + { + "date": "2020-12-16T15:48:27Z", + "id": 5193441, + "issues": [ + { + "id": 767781175, + "labels": ["bug", "types"], + "number": 279, + "title": "TypeScript: Allow custom properties on output.payload", + "url": "https://github.com/hapijs/boom/pull/279" + }, + { + "id": 767698884, + "labels": ["documentation", "types"], + "number": 278, + "title": "Clean up d.ts comments", + "url": "https://github.com/hapijs/boom/pull/278" + }, + { + "id": 760193136, + "labels": ["bug", "types"], + "number": 277, + "title": "output.payload.attributes is not exposed in the .d.ts file", + "url": "https://github.com/hapijs/boom/issues/277" + }, + { + "id": 752101575, + "labels": ["types"], + "number": 275, + "title": "Make isBoom type definition laxer", + "url": "https://github.com/hapijs/boom/pull/275" + }, + { + "id": 709585860, + "labels": ["dependency"], + "number": 273, + "title": "upgrade lab to v24 and devDependency of typescript", + "url": "https://github.com/hapijs/boom/pull/273" + } + ], "number": 62, - "title": "Expose unauthorized attributes in payload", - "url": "https://github.com/hapijs/boom/issues/62" - }, - { - "id": 79147216, - "labels": [], + "url": "https://github.com/hapijs/boom/milestone/62", + "version": "9.1.1" + }, + { + "date": "2020-03-12T03:12:39Z", + "id": 4972083, + "issues": [ + { + "id": 571681503, + "labels": ["feature"], + "number": 266, + "title": "Add optional statusCode parameter to Boom.isBoom", + "url": "https://github.com/hapijs/boom/pull/266" + }, + { + "id": 561724306, + "labels": ["feature"], + "number": 265, + "title": "Optional second param for Boom.isBoom() to verify status code", + "url": "https://github.com/hapijs/boom/issues/265" + } + ], + "number": 61, + "url": "https://github.com/hapijs/boom/milestone/61", + "version": "9.1.0" + }, + { + "date": "2020-01-04T00:06:35Z", + "id": 4972082, + "issues": [ + { + "id": 545207986, + "labels": ["breaking changes", "dependency"], + "number": 262, + "title": "Support only node 12", + "url": "https://github.com/hapijs/boom/issues/262" + }, + { + "id": 544085781, + "labels": ["feature"], + "number": 261, + "title": "Add HTTP code 425 Too Early", + "url": "https://github.com/hapijs/boom/pull/261" + }, + { + "id": 539758313, + "labels": ["bug"], + "number": 260, + "title": "boom.unathorized adds extra space to string value scheme in WWW-Authenticate header", + "url": "https://github.com/hapijs/boom/issues/260" + } + ], "number": 60, - "title": "Style Cleanup", - "url": "https://github.com/hapijs/boom/issues/60" - } - ], - "number": 14, - "url": "https://github.com/hapijs/boom/milestone/14", - "version": "2.8.0" - }, - { - "date": "2015-05-21T16:30:25Z", - "id": 1070680, - "issues": [ - { - "id": 79054987, - "labels": ["documentation"], - "number": 59, - "title": "Update license attribute", - "url": "https://github.com/hapijs/boom/pull/59" - } - ], - "number": 13, - "url": "https://github.com/hapijs/boom/milestone/13", - "version": "2.7.2" - }, - { - "date": "2015-04-16T13:36:47Z", - "id": 1048927, - "issues": [ - { - "id": 68196669, - "labels": ["bug"], + "url": "https://github.com/hapijs/boom/milestone/60", + "version": "9.0.0" + }, + { + "date": "2019-09-28T05:13:21Z", + "id": 4699261, + "issues": [ + { + "id": 499724482, + "labels": ["breaking changes"], + "number": 253, + "title": "change new Boom() to new Boom.Boom()", + "url": "https://github.com/hapijs/boom/issues/253" + }, + { + "id": 499599367, + "labels": ["breaking changes", "dependency"], + "number": 252, + "title": "Drop support for node 8", + "url": "https://github.com/hapijs/boom/issues/252" + }, + { + "id": 499599110, + "labels": ["breaking changes", "types"], + "number": 251, + "title": "Add types", + "url": "https://github.com/hapijs/boom/issues/251" + }, + { + "id": 497769486, + "labels": ["bug"], + "number": 246, + "title": "boom doesn't consider message not set directly on error object when deciding whether it is a compatible error", + "url": "https://github.com/hapijs/boom/issues/246" + } + ], + "number": 58, + "url": "https://github.com/hapijs/boom/milestone/58", + "version": "8.0.1" + }, + { + "date": "2021-04-21T23:09:44Z", + "id": 6685829, + "issues": [ + { + "id": 862946328, + "labels": ["lts", "commercial"], + "number": 282, + "title": "Latest v7-commercial release (v7.4.11) is broken", + "url": "https://github.com/hapijs/boom/issues/282" + } + ], + "number": 65, + "url": "https://github.com/hapijs/boom/milestone/65", + "version": "7.4.12" + }, + { + "date": "2019-09-27T18:55:27Z", + "id": 4684621, + "issues": [ + { + "id": 498081326, + "labels": ["bug", "types"], + "number": 248, + "title": "Error TS2709: Cannot use namespace 'Boom' as a type.", + "url": "https://github.com/hapijs/boom/issues/248" + } + ], + "number": 56, + "url": "https://github.com/hapijs/boom/milestone/56", + "version": "7.4.11" + }, + { + "date": "2019-09-23T20:34:29Z", + "id": 4678666, + "issues": [ + { + "id": 497308625, + "labels": ["bug", "types"], + "number": 245, + "title": "Fix default export. Fixes #244.", + "url": "https://github.com/hapijs/boom/pull/245" + }, + { + "id": 496775580, + "labels": ["bug", "types"], + "number": 244, + "title": "Typescript - can't extend Boom", + "url": "https://github.com/hapijs/boom/issues/244" + } + ], + "number": 55, + "url": "https://github.com/hapijs/boom/milestone/55", + "version": "7.4.10" + }, + { + "date": "2019-09-21T00:10:43Z", + "id": 4678637, + "issues": [ + { + "id": 496589230, + "labels": ["bug", "types"], + "number": 243, + "title": "Improve types", + "url": "https://github.com/hapijs/boom/issues/243" + } + ], + "number": 54, + "url": "https://github.com/hapijs/boom/milestone/54", + "version": "7.4.9" + }, + { + "date": "2019-09-20T23:24:43Z", + "id": 4676178, + "issues": [ + { + "id": 496514428, + "labels": ["bug", "types"], + "number": 242, + "title": "Typescript definitions missing internal()", + "url": "https://github.com/hapijs/boom/issues/242" + }, + { + "id": 496371436, + "labels": ["types"], + "number": 241, + "title": "Ts fix", + "url": "https://github.com/hapijs/boom/pull/241" + }, + { + "id": 496323207, + "labels": ["types"], + "number": 240, + "title": "Fix types: Update static isBoom to be a type guard.", + "url": "https://github.com/hapijs/boom/pull/240" + } + ], + "number": 53, + "url": "https://github.com/hapijs/boom/milestone/53", + "version": "7.4.8" + }, + { + "date": "2019-09-20T04:15:14Z", + "id": 4675831, + "issues": [ + { + "id": 496133370, + "labels": ["types"], + "number": 239, + "title": "Missing error properties", + "url": "https://github.com/hapijs/boom/issues/239" + } + ], "number": 52, - "title": "Coerse statusCode to an Integer", - "url": "https://github.com/hapijs/boom/pull/52" - }, - { - "id": 68192912, - "labels": ["bug"], + "url": "https://github.com/hapijs/boom/milestone/52", + "version": "7.4.7" + }, + { + "date": "2019-09-20T00:24:55Z", + "id": 4675380, + "issues": [ + { + "id": 496069367, + "labels": ["bug", "types"], + "number": 238, + "title": "Fix types: serviceUnavailable -> serverUnavailable.", + "url": "https://github.com/hapijs/boom/pull/238" + }, + { + "id": 496066851, + "labels": ["bug", "types"], + "number": 237, + "title": "Types have typo: serverUnavailable -> serviceUnavailable", + "url": "https://github.com/hapijs/boom/issues/237" + } + ], "number": 51, - "title": "Make sure Boom initialize method auto cast string statusCode to Integer if possible", - "url": "https://github.com/hapijs/boom/issues/51" - } - ], - "number": 12, - "url": "https://github.com/hapijs/boom/milestone/12", - "version": "2.7.1" - }, - { - "date": "2015-04-01T15:13:59Z", - "id": 880559, - "issues": [ - { - "id": 53408174, - "labels": ["feature"], - "number": 45, - "title": "Added isServer", - "url": "https://github.com/hapijs/boom/pull/45" - }, - { - "id": 51861738, - "labels": ["feature"], + "url": "https://github.com/hapijs/boom/milestone/51", + "version": "7.4.6" + }, + { + "date": "2019-09-19T21:24:20Z", + "id": 4675379, + "issues": [ + { + "id": 416336224, + "labels": ["bug"], + "number": 216, + "title": "Handle case of message property with getter-only", + "url": "https://github.com/hapijs/boom/issues/216" + }, + { + "id": 413019030, + "labels": ["bug", "breaking changes"], + "number": 215, + "title": "`typeof` and `reformat` should not be enumerable", + "url": "https://github.com/hapijs/boom/issues/215" + } + ], + "number": 50, + "url": "https://github.com/hapijs/boom/milestone/50", + "version": "7.4.5" + }, + { + "date": "2019-09-19T20:06:00Z", + "id": 4571373, + "issues": [ + { + "id": 490208139, + "labels": ["types"], + "number": 233, + "title": "Added TS declarations", + "url": "https://github.com/hapijs/boom/pull/233" + } + ], + "number": 49, + "url": "https://github.com/hapijs/boom/milestone/49", + "version": "7.4.4" + }, + { + "date": "2019-08-14T04:54:27Z", + "id": 4184483, + "issues": [ + { + "id": 480479839, + "labels": ["dependency"], + "number": 229, + "title": "Update deps", + "url": "https://github.com/hapijs/boom/issues/229" + } + ], + "number": 48, + "url": "https://github.com/hapijs/boom/milestone/48", + "version": "7.4.3" + }, + { + "date": "2019-03-29T22:31:08Z", + "id": 4184451, + "issues": [ + { + "id": 427200874, + "labels": ["dependency"], + "number": 221, + "title": "Update deps", + "url": "https://github.com/hapijs/boom/issues/221" + } + ], + "number": 47, + "url": "https://github.com/hapijs/boom/milestone/47", + "version": "7.4.2" + }, + { + "date": "2019-03-29T21:48:57Z", + "id": 4175361, + "issues": [ + { + "id": 427189825, + "labels": ["bug"], + "number": 220, + "title": "Fix dependency", + "url": "https://github.com/hapijs/boom/issues/220" + } + ], + "number": 46, + "url": "https://github.com/hapijs/boom/milestone/46", + "version": "7.4.1" + }, + { + "date": "2019-03-27T00:50:55Z", + "id": 3856156, + "issues": [ + { + "id": 425703084, + "labels": ["non issue"], + "number": 219, + "title": "Change module namespace", + "url": "https://github.com/hapijs/boom/issues/219" + } + ], + "number": 42, + "url": "https://github.com/hapijs/boom/milestone/42", + "version": "7.4.0" + }, + { + "date": "2018-11-28T20:33:01Z", + "id": 3792170, + "issues": [ + { + "id": 385438649, + "labels": ["feature"], + "number": 211, + "title": "add debug mode to reformat()", + "url": "https://github.com/hapijs/boom/pull/211" + } + ], "number": 41, - "title": "Easy way to determine if the client or server is at fault", - "url": "https://github.com/hapijs/boom/issues/41" - } - ], - "number": 11, - "url": "https://github.com/hapijs/boom/milestone/11", - "version": "2.7.0" - }, - { - "date": "2014-11-25T22:40:50Z", - "id": 872335, - "issues": [ - { - "id": 50094279, - "labels": ["dependency"], + "url": "https://github.com/hapijs/boom/milestone/41", + "version": "7.3.0" + }, + { + "date": "2018-11-03T00:16:50Z", + "id": 3787424, + "issues": [ + { + "id": 377000683, + "labels": ["non issue"], + "number": 208, + "title": "Remove engines", + "url": "https://github.com/hapijs/boom/issues/208" + } + ], "number": 40, - "title": "Lab 5.0, code 1.0", - "url": "https://github.com/hapijs/boom/issues/40" - } - ], - "number": 10, - "url": "https://github.com/hapijs/boom/milestone/10", - "version": "2.6.1" - }, - { - "date": "2014-11-19T05:19:58Z", - "id": 829611, - "issues": [ - { - "id": 46033418, - "labels": ["feature"], + "url": "https://github.com/hapijs/boom/milestone/40", + "version": "7.2.2" + }, + { + "date": "2018-11-01T07:28:14Z", + "id": 3151282, + "issues": [ + { + "id": 376282983, + "labels": ["dependency"], + "number": 206, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/boom/issues/206" + } + ], + "number": 39, + "url": "https://github.com/hapijs/boom/milestone/39", + "version": "7.2.1" + }, + { + "date": "2018-02-28T17:43:37Z", + "id": 2886640, + "issues": [ + { + "id": 300553030, + "labels": ["feature"], + "number": 188, + "title": "424 Failed dependency implementation", + "url": "https://github.com/hapijs/boom/pull/188" + } + ], + "number": 38, + "url": "https://github.com/hapijs/boom/milestone/38", + "version": "7.2.0" + }, + { + "date": "2017-11-03T18:05:01Z", + "id": 2885272, + "issues": [ + { + "id": 271067763, + "labels": ["feature", "breaking changes"], + "number": 173, + "title": "Support instanceof", + "url": "https://github.com/hapijs/boom/issues/173" + } + ], + "number": 37, + "url": "https://github.com/hapijs/boom/milestone/37", + "version": "7.1.1" + }, + { + "date": "2017-11-03T07:24:07Z", + "id": 2884972, + "issues": [ + { + "id": 270895719, + "labels": ["feature"], + "number": 172, + "title": "Add decorate option", + "url": "https://github.com/hapijs/boom/issues/172" + } + ], + "number": 36, + "url": "https://github.com/hapijs/boom/milestone/36", + "version": "7.1.0" + }, + { + "date": "2017-11-03T07:24:09Z", + "id": 2793807, + "issues": [ + { + "id": 270846386, + "labels": ["feature", "breaking changes"], + "number": 171, + "title": "Remove wrap() and create()", + "url": "https://github.com/hapijs/boom/issues/171" + } + ], + "number": 35, + "url": "https://github.com/hapijs/boom/milestone/35", + "version": "7.0.0" + }, + { + "date": "2017-09-26T05:23:53Z", + "id": 2648780, + "issues": [ + { + "id": 260494213, + "labels": ["breaking changes"], + "number": 165, + "title": "Node v8", + "url": "https://github.com/hapijs/boom/issues/165" + } + ], + "number": 34, + "url": "https://github.com/hapijs/boom/milestone/34", + "version": "6.0.0" + }, + { + "date": "2019-03-21T23:55:56Z", + "id": 4162375, + "issues": [ + { + "id": 423988827, + "labels": ["bug", "lts"], + "number": 218, + "title": "Load the commercial version of hoek", + "url": "https://github.com/hapijs/boom/issues/218" + } + ], + "number": 44, + "url": "https://github.com/hapijs/boom/milestone/44", + "version": "5.3.1" + }, + { + "date": "2019-03-21T23:30:56Z", + "id": 4162374, + "issues": [ + { + "id": 423982247, + "labels": ["lts"], + "number": 217, + "title": "Commercial version of v5 branch", + "url": "https://github.com/hapijs/boom/issues/217" + } + ], + "number": 43, + "url": "https://github.com/hapijs/boom/milestone/43", + "version": "5.3.0" + }, + { + "date": "2017-07-18T23:45:09Z", + "id": 2547227, + "issues": [ + { + "id": 239997942, + "labels": ["feature"], + "number": 160, + "title": "Allow decorating a boom error", + "url": "https://github.com/hapijs/boom/issues/160" + } + ], "number": 33, - "title": "Added status code 429 Too Many Requests.", - "url": "https://github.com/hapijs/boom/pull/33" - } - ], - "number": 9, - "url": "https://github.com/hapijs/boom/milestone/9", - "version": "2.6.0" - }, - { - "date": "2014-10-16T23:13:11Z", - "id": 740452, - "issues": [ - { - "id": 39825884, - "labels": ["dependency"], + "url": "https://github.com/hapijs/boom/milestone/33", + "version": "5.2.0" + }, + { + "date": "2017-05-28T21:50:42Z", + "id": 2542326, + "issues": [ + { + "id": 231896546, + "labels": ["bug"], + "number": 157, + "title": "Hide message on 500 when error is provided as data", + "url": "https://github.com/hapijs/boom/issues/157" + }, + { + "id": 231751423, + "labels": ["feature"], + "number": 156, + "title": "Added typeOf functionality", + "url": "https://github.com/hapijs/boom/pull/156" + } + ], + "number": 32, + "url": "https://github.com/hapijs/boom/milestone/32", + "version": "5.1.0" + }, + { + "date": "2017-05-25T07:53:06Z", + "id": 2542280, + "issues": [ + { + "id": 230740729, + "labels": ["bug", "breaking changes"], + "number": 154, + "title": "Boom.wrap with a provided message doesn't format the payload", + "url": "https://github.com/hapijs/boom/issues/154" + }, + { + "id": 222485996, + "labels": ["bug"], + "number": 152, + "title": "Boom.badGateway( string, Boom.anything() )", + "url": "https://github.com/hapijs/boom/issues/152" + } + ], + "number": 31, + "url": "https://github.com/hapijs/boom/milestone/31", + "version": "5.0.0" + }, + { + "date": "2017-05-25T07:25:15Z", + "id": 2399872, + "issues": [ + { + "id": 217548812, + "labels": ["bug"], + "number": 149, + "title": "fix #148 when Boom supplied to wrapper", + "url": "https://github.com/hapijs/boom/pull/149" + }, + { + "id": 217102706, + "labels": ["bug"], + "number": 148, + "title": "Remove line from wrap function", + "url": "https://github.com/hapijs/boom/issues/148" + } + ], + "number": 30, + "url": "https://github.com/hapijs/boom/milestone/30", + "version": "4.3.1" + }, + { + "date": "2017-03-21T07:17:29Z", + "id": 2068360, + "issues": [ + { + "id": 215549601, + "labels": ["feature"], + "number": 147, + "title": "Unauthorized extension for #146", + "url": "https://github.com/hapijs/boom/pull/147" + }, + { + "id": 214967535, + "labels": ["feature"], + "number": 146, + "title": "Unauthorized ", + "url": "https://github.com/hapijs/boom/issues/146" + }, + { + "id": 204346617, + "labels": ["bug"], + "number": 142, + "title": "Boom.wrap never sends custom message to client", + "url": "https://github.com/hapijs/boom/issues/142" + }, + { + "id": 185506129, + "labels": ["feature"], + "number": 139, + "title": "Adds support for `Boom.someMethod(err)`, closes #138", + "url": "https://github.com/hapijs/boom/pull/139" + }, + { + "id": 185470520, + "labels": ["feature"], + "number": 138, + "title": "Preservation of `err.name` via `Boom.create` or `Boom[someMethod]`", + "url": "https://github.com/hapijs/boom/issues/138" + }, + { + "id": 114049946, + "labels": ["feature"], + "number": 78, + "title": "Add Boom.teapot() method with documentation and tests", + "url": "https://github.com/hapijs/boom/pull/78" + } + ], + "number": 29, + "url": "https://github.com/hapijs/boom/milestone/29", + "version": "4.3.0" + }, + { + "date": "2016-10-13T16:46:10Z", + "id": 2031757, + "issues": [ + { + "id": 182656592, + "labels": ["feature"], + "number": 133, + "title": "Add 'allow' parameter to methodNotAllowed for setting 'Allow' header", + "url": "https://github.com/hapijs/boom/pull/133" + }, + { + "id": 182651855, + "labels": [], + "number": 132, + "title": "405 Method Not Allowed should provide an argument for specifying \"Allow\" header", + "url": "https://github.com/hapijs/boom/issues/132" + } + ], + "number": 28, + "url": "https://github.com/hapijs/boom/milestone/28", + "version": "4.2.0" + }, + { + "date": "2016-09-27T13:12:32Z", + "id": 1965164, + "issues": [ + { + "id": 179486484, + "labels": ["feature"], + "number": 130, + "title": "Add 402 payment required", + "url": "https://github.com/hapijs/boom/pull/130" + }, + { + "id": 179008177, + "labels": ["documentation"], + "number": 129, + "title": "Add Boom.internal() to API docs fixes #127", + "url": "https://github.com/hapijs/boom/pull/129" + } + ], "number": 27, - "title": "Update to lab 4.x.x. Bumped version.", - "url": "https://github.com/hapijs/boom/pull/27" - } - ], - "number": 8, - "url": "https://github.com/hapijs/boom/milestone/8", - "version": "2.5.1" - }, - { - "date": "2014-08-02T07:11:41Z", - "id": 684352, - "issues": [ - { - "id": 39344065, - "labels": ["documentation"], + "url": "https://github.com/hapijs/boom/milestone/27", + "version": "4.1.0" + }, + { + "date": "2016-08-26T13:43:49Z", + "id": 1840726, + "issues": [ + { + "id": 173449005, + "labels": ["breaking changes"], + "number": 125, + "title": "Remove deprecated serverTimeout", + "url": "https://github.com/hapijs/boom/pull/125" + }, + { + "id": 160316238, + "labels": ["breaking changes"], + "number": 118, + "title": "Remove serverTimeout()", + "url": "https://github.com/hapijs/boom/issues/118" + } + ], "number": 26, - "title": "Rename spumko to hapijs", - "url": "https://github.com/hapijs/boom/issues/26" - }, - { - "id": 38568536, - "labels": ["feature"], + "url": "https://github.com/hapijs/boom/milestone/26", + "version": "4.0.0" + }, + { + "date": "2016-06-21T14:29:48Z", + "id": 1827906, + "issues": [ + { + "id": 161449921, + "labels": ["documentation"], + "number": 121, + "title": "Added .npmignore file.", + "url": "https://github.com/hapijs/boom/pull/121" + }, + { + "id": 160721752, + "labels": [], + "number": 119, + "title": "Rename serverTimeout to serverUnavailable", + "url": "https://github.com/hapijs/boom/pull/119" + }, + { + "id": 160315297, + "labels": ["bug"], + "number": 117, + "title": "serverTimeout() should be aliased to serverUnavailable()", + "url": "https://github.com/hapijs/boom/issues/117" + }, + { + "id": 152302430, + "labels": ["documentation"], + "number": 108, + "title": "Create .npmignore", + "url": "https://github.com/hapijs/boom/pull/108" + } + ], "number": 25, - "title": "Add a 422 badData method", - "url": "https://github.com/hapijs/boom/pull/25" - } - ], - "number": 7, - "url": "https://github.com/hapijs/boom/milestone/7", - "version": "2.5.0" - }, - { - "date": "2014-06-08T04:50:25Z", - "id": 613839, - "issues": [ - { - "id": 35228158, - "labels": ["bug"], + "url": "https://github.com/hapijs/boom/milestone/25", + "version": "3.2.2" + }, + { + "date": "2016-05-22T19:58:32Z", + "id": 1779449, + "issues": [ + { + "id": 156160309, + "labels": ["test", "dependency"], + "number": 113, + "title": "Updated to code 3.", + "url": "https://github.com/hapijs/boom/pull/113" + } + ], + "number": 24, + "url": "https://github.com/hapijs/boom/milestone/24", + "version": "3.2.1" + }, + { + "date": "2016-05-20T18:05:04Z", + "id": 1751616, + "issues": [ + { + "id": 155818816, + "labels": ["feature"], + "number": 112, + "title": "Added HTTP code 423 Locked", + "url": "https://github.com/hapijs/boom/pull/112" + }, + { + "id": 155631685, + "labels": ["feature"], + "number": 111, + "title": "HTTP Error 423 (Locked)", + "url": "https://github.com/hapijs/boom/issues/111" + } + ], "number": 23, - "title": "Default message to http status", - "url": "https://github.com/hapijs/boom/issues/23" - } - ], - "number": 5, - "url": "https://github.com/hapijs/boom/milestone/5", - "version": "2.4.2" - }, - { - "date": "2014-04-08T07:33:16Z", - "id": 623569, - "issues": [ - { - "id": 31048905, - "labels": ["feature"], + "url": "https://github.com/hapijs/boom/milestone/23", + "version": "3.2.0" + }, + { + "date": "2016-05-06T14:51:15Z", + "id": 1534679, + "issues": [ + { + "id": 153455676, + "labels": ["test", "dependency"], + "number": 110, + "title": "Added node 6.", + "url": "https://github.com/hapijs/boom/pull/110" + } + ], "number": 22, - "title": "Upgrade dependencies", - "url": "https://github.com/hapijs/boom/issues/22" - } - ], - "number": 6, - "url": "https://github.com/hapijs/boom/milestone/6", - "version": "2.4.1" - }, - { - "date": "2014-03-29T07:12:45Z", - "id": 613838, - "issues": [ - { - "id": 30438883, - "labels": ["feature"], + "url": "https://github.com/hapijs/boom/milestone/22", + "version": "3.1.3" + }, + { + "date": "2016-01-22T15:06:12Z", + "id": 1472820, + "issues": [ + { + "id": 124157806, + "labels": ["feature"], + "number": 97, + "title": "Use quotes instead of backticks", + "url": "https://github.com/hapijs/boom/pull/97" + } + ], "number": 21, - "title": "Allow every helper to set data property", - "url": "https://github.com/hapijs/boom/issues/21" - } - ], - "number": 4, - "url": "https://github.com/hapijs/boom/milestone/4", - "version": "2.4.0" - }, - { - "date": "2014-03-29T07:06:21Z", - "id": 584489, - "issues": [ - { - "id": 30410593, - "labels": ["bug"], + "url": "https://github.com/hapijs/boom/milestone/21", + "version": "3.1.2" + }, + { + "date": "2015-12-23T16:54:26Z", + "id": 1472790, + "issues": [ + { + "id": 123687574, + "labels": ["bug"], + "number": 95, + "title": "Changed prototype logic.", + "url": "https://github.com/hapijs/boom/pull/95" + } + ], "number": 20, - "title": "Internal errors (500) should never expose err.message", - "url": "https://github.com/hapijs/boom/issues/20" - } - ], - "number": 2, - "url": "https://github.com/hapijs/boom/milestone/2", - "version": "2.3.0" - }, - { - "date": "2014-03-06T21:14:18Z", - "id": 589824, - "issues": [ - { - "id": 28915135, - "labels": ["test"], + "url": "https://github.com/hapijs/boom/milestone/20", + "version": "3.1.1" + }, + { + "date": "2015-12-23T16:33:16Z", + "id": 1386807, + "issues": [ + { + "id": 123521339, + "labels": ["feature", "documentation"], + "number": 94, + "title": "Cleanup for 254593fd1d09e79049692675a4f9b7b5108b36d8", + "url": "https://github.com/hapijs/boom/pull/94" + }, + { + "id": 123498857, + "labels": ["documentation"], + "number": 93, + "title": "Document Illegal", + "url": "https://github.com/hapijs/boom/issues/93" + }, + { + "id": 123498821, + "labels": ["feature"], + "number": 92, + "title": "Status Code Hash", + "url": "https://github.com/hapijs/boom/issues/92" + }, + { + "id": 123443152, + "labels": ["feature"], + "number": 91, + "title": "Add new 451 Unavailable For Legal Reasons", + "url": "https://github.com/hapijs/boom/pull/91" + } + ], "number": 19, - "title": "Bring coverage back to 100% after lab fix", - "url": "https://github.com/hapijs/boom/issues/19" - } - ], - "number": 3, - "url": "https://github.com/hapijs/boom/milestone/3", - "version": "2.2.2" - }, - { - "date": "2014-03-01T19:22:33Z", - "id": 580325, - "issues": [ - { - "id": 28416878, - "labels": ["bug"], + "url": "https://github.com/hapijs/boom/milestone/19", + "version": "3.1.0" + }, + { + "date": "2015-10-31T17:24:27Z", + "id": 1386022, + "issues": [ + { + "id": 114422503, + "labels": ["breaking changes"], + "number": 83, + "title": "es6 style. Closes #77", + "url": "https://github.com/hapijs/boom/pull/83" + }, + { + "id": 113354828, + "labels": ["breaking changes"], + "number": 77, + "title": "Node 4 Updates", + "url": "https://github.com/hapijs/boom/issues/77" + } + ], + "number": 18, + "url": "https://github.com/hapijs/boom/milestone/18", + "version": "3.0.0" + }, + { + "date": "2015-10-30T19:16:41Z", + "id": 1377116, + "issues": [ + { + "id": 114176578, + "labels": ["dependency"], + "number": 81, + "title": "Upgrade to lab 7.x.x", + "url": "https://github.com/hapijs/boom/pull/81" + }, + { + "id": 114136243, + "labels": ["bug"], + "number": 80, + "title": "Fix ctor passing in serverError helper", + "url": "https://github.com/hapijs/boom/pull/80" + }, + { + "id": 114131875, + "labels": ["bug"], + "number": 79, + "title": "Stack trace filtering not working for serverError constructors", + "url": "https://github.com/hapijs/boom/issues/79" + } + ], "number": 17, - "title": "Don't override data if user error already have a data attribute", - "url": "https://github.com/hapijs/boom/pull/17" - } - ], - "number": 1, - "url": "https://github.com/hapijs/boom/milestone/1", - "version": "2.2.1" - } + "url": "https://github.com/hapijs/boom/milestone/17", + "version": "2.10.1" + }, + { + "date": "2015-10-26T13:28:25Z", + "id": 1366912, + "issues": [ + { + "id": 112442861, + "labels": ["feature"], + "number": 75, + "title": "Support Precondition Required", + "url": "https://github.com/hapijs/boom/pull/75" + }, + { + "id": 112426136, + "labels": ["feature"], + "number": 74, + "title": "Precondition required is not supported", + "url": "https://github.com/hapijs/boom/issues/74" + } + ], + "number": 16, + "url": "https://github.com/hapijs/boom/milestone/16", + "version": "2.10.0" + }, + { + "date": "2015-10-20T19:08:15Z", + "id": 1163434, + "issues": [ + { + "id": 106473501, + "labels": ["feature"], + "number": 68, + "title": "Call captureStackTrace to filter boom from traces", + "url": "https://github.com/hapijs/boom/pull/68" + }, + { + "id": 105686777, + "labels": ["feature"], + "number": 67, + "title": "Use captureStackTrace to remove boom artifacts from stack traces", + "url": "https://github.com/hapijs/boom/issues/67" + } + ], + "number": 15, + "url": "https://github.com/hapijs/boom/milestone/15", + "version": "2.9.0" + }, + { + "date": "2015-06-14T01:16:28Z", + "id": 1123645, + "issues": [ + { + "id": 88066342, + "labels": ["feature"], + "number": 63, + "title": "Unauthorized", + "url": "https://github.com/hapijs/boom/pull/63" + }, + { + "id": 88063452, + "labels": ["feature"], + "number": 62, + "title": "Expose unauthorized attributes in payload", + "url": "https://github.com/hapijs/boom/issues/62" + }, + { + "id": 79147216, + "labels": [], + "number": 60, + "title": "Style Cleanup", + "url": "https://github.com/hapijs/boom/issues/60" + } + ], + "number": 14, + "url": "https://github.com/hapijs/boom/milestone/14", + "version": "2.8.0" + }, + { + "date": "2015-05-21T16:30:25Z", + "id": 1070680, + "issues": [ + { + "id": 79054987, + "labels": ["documentation"], + "number": 59, + "title": "Update license attribute", + "url": "https://github.com/hapijs/boom/pull/59" + } + ], + "number": 13, + "url": "https://github.com/hapijs/boom/milestone/13", + "version": "2.7.2" + }, + { + "date": "2015-04-16T13:36:47Z", + "id": 1048927, + "issues": [ + { + "id": 68196669, + "labels": ["bug"], + "number": 52, + "title": "Coerse statusCode to an Integer", + "url": "https://github.com/hapijs/boom/pull/52" + }, + { + "id": 68192912, + "labels": ["bug"], + "number": 51, + "title": "Make sure Boom initialize method auto cast string statusCode to Integer if possible", + "url": "https://github.com/hapijs/boom/issues/51" + } + ], + "number": 12, + "url": "https://github.com/hapijs/boom/milestone/12", + "version": "2.7.1" + }, + { + "date": "2015-04-01T15:13:59Z", + "id": 880559, + "issues": [ + { + "id": 53408174, + "labels": ["feature"], + "number": 45, + "title": "Added isServer", + "url": "https://github.com/hapijs/boom/pull/45" + }, + { + "id": 51861738, + "labels": ["feature"], + "number": 41, + "title": "Easy way to determine if the client or server is at fault", + "url": "https://github.com/hapijs/boom/issues/41" + } + ], + "number": 11, + "url": "https://github.com/hapijs/boom/milestone/11", + "version": "2.7.0" + }, + { + "date": "2014-11-25T22:40:50Z", + "id": 872335, + "issues": [ + { + "id": 50094279, + "labels": ["dependency"], + "number": 40, + "title": "Lab 5.0, code 1.0", + "url": "https://github.com/hapijs/boom/issues/40" + } + ], + "number": 10, + "url": "https://github.com/hapijs/boom/milestone/10", + "version": "2.6.1" + }, + { + "date": "2014-11-19T05:19:58Z", + "id": 829611, + "issues": [ + { + "id": 46033418, + "labels": ["feature"], + "number": 33, + "title": "Added status code 429 Too Many Requests.", + "url": "https://github.com/hapijs/boom/pull/33" + } + ], + "number": 9, + "url": "https://github.com/hapijs/boom/milestone/9", + "version": "2.6.0" + }, + { + "date": "2014-10-16T23:13:11Z", + "id": 740452, + "issues": [ + { + "id": 39825884, + "labels": ["dependency"], + "number": 27, + "title": "Update to lab 4.x.x. Bumped version.", + "url": "https://github.com/hapijs/boom/pull/27" + } + ], + "number": 8, + "url": "https://github.com/hapijs/boom/milestone/8", + "version": "2.5.1" + }, + { + "date": "2014-08-02T07:11:41Z", + "id": 684352, + "issues": [ + { + "id": 39344065, + "labels": ["documentation"], + "number": 26, + "title": "Rename spumko to hapijs", + "url": "https://github.com/hapijs/boom/issues/26" + }, + { + "id": 38568536, + "labels": ["feature"], + "number": 25, + "title": "Add a 422 badData method", + "url": "https://github.com/hapijs/boom/pull/25" + } + ], + "number": 7, + "url": "https://github.com/hapijs/boom/milestone/7", + "version": "2.5.0" + }, + { + "date": "2014-06-08T04:50:25Z", + "id": 613839, + "issues": [ + { + "id": 35228158, + "labels": ["bug"], + "number": 23, + "title": "Default message to http status", + "url": "https://github.com/hapijs/boom/issues/23" + } + ], + "number": 5, + "url": "https://github.com/hapijs/boom/milestone/5", + "version": "2.4.2" + }, + { + "date": "2014-04-08T07:33:16Z", + "id": 623569, + "issues": [ + { + "id": 31048905, + "labels": ["feature"], + "number": 22, + "title": "Upgrade dependencies", + "url": "https://github.com/hapijs/boom/issues/22" + } + ], + "number": 6, + "url": "https://github.com/hapijs/boom/milestone/6", + "version": "2.4.1" + }, + { + "date": "2014-03-29T07:12:45Z", + "id": 613838, + "issues": [ + { + "id": 30438883, + "labels": ["feature"], + "number": 21, + "title": "Allow every helper to set data property", + "url": "https://github.com/hapijs/boom/issues/21" + } + ], + "number": 4, + "url": "https://github.com/hapijs/boom/milestone/4", + "version": "2.4.0" + }, + { + "date": "2014-03-29T07:06:21Z", + "id": 584489, + "issues": [ + { + "id": 30410593, + "labels": ["bug"], + "number": 20, + "title": "Internal errors (500) should never expose err.message", + "url": "https://github.com/hapijs/boom/issues/20" + } + ], + "number": 2, + "url": "https://github.com/hapijs/boom/milestone/2", + "version": "2.3.0" + }, + { + "date": "2014-03-06T21:14:18Z", + "id": 589824, + "issues": [ + { + "id": 28915135, + "labels": ["test"], + "number": 19, + "title": "Bring coverage back to 100% after lab fix", + "url": "https://github.com/hapijs/boom/issues/19" + } + ], + "number": 3, + "url": "https://github.com/hapijs/boom/milestone/3", + "version": "2.2.2" + }, + { + "date": "2014-03-01T19:22:33Z", + "id": 580325, + "issues": [ + { + "id": 28416878, + "labels": ["bug"], + "number": 17, + "title": "Don't override data if user error already have a data attribute", + "url": "https://github.com/hapijs/boom/pull/17" + } + ], + "number": 1, + "url": "https://github.com/hapijs/boom/milestone/1", + "version": "2.2.1" + } ] diff --git a/generated/modules/boom/info.json b/generated/modules/boom/info.json index ddadbf01..531d98f1 100644 --- a/generated/modules/boom/info.json +++ b/generated/modules/boom/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 191, - "isPlugin": false, - "link": "https://github.com/hapijs/boom", - "name": "boom", - "package": "@hapi/boom", - "slogan": "HTTP-friendly error objects.", - "sloganHtml": "HTTP-friendly error objects.", - "stars": 2925, - "updated": "2024-10-23T14:38:54Z", - "versions": [ - { - "branch": "v10.0.1", - "license": "BSD", - "name": "10.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["10.0.1"], - "latestVersion": "10.x.x" + "api": true, + "forks": 188, + "isPlugin": false, + "latestVersion": "10.x.x", + "link": "https://github.com/hapijs/boom", + "name": "boom", + "package": "@hapi/boom", + "slogan": "HTTP-friendly error objects.", + "sloganHtml": "HTTP-friendly error objects.", + "stars": 2923, + "updated": "2024-10-23T14:38:54Z", + "versions": [ + { + "branch": "v10.0.1", + "license": "BSD", + "name": "10.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["10.0.1"] } diff --git a/generated/modules/bossy/changelog.json b/generated/modules/bossy/changelog.json index a4d2f914..dc4d0b72 100644 --- a/generated/modules/bossy/changelog.json +++ b/generated/modules/bossy/changelog.json @@ -1,583 +1,583 @@ [ - { - "date": "2023-02-11T19:12:41Z", - "id": 9033252, - "issues": [ - { - "id": 1551788890, - "labels": ["dependency"], - "number": 83, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/bossy/pull/83" - } - ], - "number": 25, - "url": "https://github.com/hapijs/bossy/milestone/25", - "version": "6.0.1" - }, - { - "date": "2023-02-11T19:12:39Z", - "id": 7938954, - "issues": [ - { - "id": 1223532655, - "labels": ["breaking changes", "dependency"], - "number": 82, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/bossy/pull/82" - } - ], - "number": 24, - "url": "https://github.com/hapijs/bossy/milestone/24", - "version": "6.0.0" - }, - { - "date": "2022-05-05T01:38:12Z", - "id": 6424902, - "issues": [ - { - "id": 807270160, - "labels": ["bug"], - "number": 78, - "title": "Fix display of defaults for json args and zero", - "url": "https://github.com/hapijs/bossy/pull/78" - } - ], - "number": 23, - "url": "https://github.com/hapijs/bossy/milestone/23", - "version": "5.1.1" - }, - { - "date": "2021-02-12T03:46:19Z", - "id": 6419950, - "issues": [ - { - "id": 792735609, - "labels": ["feature"], - "number": 77, - "title": "Implement object argument type", - "url": "https://github.com/hapijs/bossy/pull/77" - }, - { - "id": 792680257, - "labels": ["feature"], - "number": 76, - "title": "Implement negation of boolean arguments", - "url": "https://github.com/hapijs/bossy/pull/76" - } - ], - "number": 22, - "url": "https://github.com/hapijs/bossy/milestone/22", - "version": "5.1.0" - }, - { - "date": "2021-02-12T03:46:45Z", - "id": 4972602, - "issues": [ - { - "id": 709586214, - "labels": [], - "number": 74, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/bossy/pull/74" - } - ], - "number": 21, - "url": "https://github.com/hapijs/bossy/milestone/21", - "version": "5.0.1" - }, - { - "date": "2020-01-04T09:20:18Z", - "id": 4655630, - "issues": [ - { - "id": 545262632, - "labels": ["dependency"], - "number": 70, - "title": "Only node 12", - "url": "https://github.com/hapijs/bossy/issues/70" - } - ], - "number": 20, - "url": "https://github.com/hapijs/bossy/milestone/20", - "version": "5.0.0" - }, - { - "date": "2019-09-12T23:32:18Z", - "id": 4556335, - "issues": [ - { - "id": 493073848, - "labels": ["dependency"], - "number": 66, - "title": "Update joi", - "url": "https://github.com/hapijs/bossy/issues/66" - } - ], - "number": 19, - "url": "https://github.com/hapijs/bossy/milestone/19", - "version": "4.1.3" - }, - { - "date": "2019-08-07T19:25:08Z", - "id": 4212623, - "issues": [ - { - "id": 478098818, - "labels": ["dependency"], - "number": 63, - "title": "Update deps", - "url": "https://github.com/hapijs/bossy/issues/63" - } - ], - "number": 18, - "url": "https://github.com/hapijs/bossy/milestone/18", - "version": "4.1.2" - }, - { - "date": "2019-04-09T06:33:09Z", - "id": 4184224, - "issues": [ - { - "id": 430790358, - "labels": ["dependency"], - "number": 62, - "title": "Update deps", - "url": "https://github.com/hapijs/bossy/issues/62" - } - ], - "number": 17, - "url": "https://github.com/hapijs/bossy/milestone/17", - "version": "4.1.1" - }, - { - "date": "2019-03-29T20:31:05Z", - "id": 3787481, - "issues": [ - { - "id": 427150619, - "labels": ["non issue"], - "number": 61, - "title": "Change module namespace", - "url": "https://github.com/hapijs/bossy/issues/61" - } - ], - "number": 16, - "url": "https://github.com/hapijs/bossy/milestone/16", - "version": "4.1.0" - }, - { - "date": "2018-11-01T07:31:08Z", - "id": 3787480, - "issues": [ - { - "id": 376283874, - "labels": ["dependency"], - "number": 58, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/bossy/issues/58" - } - ], - "number": 15, - "url": "https://github.com/hapijs/bossy/milestone/15", - "version": "4.0.3" - }, - { - "date": "2018-11-01T07:29:44Z", - "id": 2885241, - "issues": [ - { - "id": 375801064, - "labels": ["non issue"], - "number": 57, - "title": "Cleanup", - "url": "https://github.com/hapijs/bossy/issues/57" - } - ], - "number": 14, - "url": "https://github.com/hapijs/bossy/milestone/14", - "version": "4.0.2" - }, - { - "date": "2017-11-03T06:46:40Z", - "id": 2860414, - "issues": [ - { - "id": 270890379, - "labels": ["dependency"], - "number": 55, - "title": "Use Boom for errors", - "url": "https://github.com/hapijs/bossy/issues/55" - } - ], - "number": 13, - "url": "https://github.com/hapijs/bossy/milestone/13", - "version": "4.0.1" - }, - { - "date": "2017-10-23T19:41:21Z", - "id": 2167852, - "issues": [ - { - "id": 267790323, - "labels": ["breaking changes", "dependency"], - "number": 54, - "title": "Node v8", - "url": "https://github.com/hapijs/bossy/issues/54" - } - ], - "number": 12, - "url": "https://github.com/hapijs/bossy/milestone/12", - "version": "4.0.0" - }, - { - "date": "2016-12-01T03:42:08Z", - "id": 2167851, - "issues": [ - { - "id": 192747215, - "labels": ["dependency"], - "number": 52, - "title": "node 7", - "url": "https://github.com/hapijs/bossy/issues/52" - } - ], - "number": 11, - "url": "https://github.com/hapijs/bossy/milestone/11", - "version": "3.0.3" - }, - { - "date": "2016-12-01T03:40:57Z", - "id": 1912487, - "issues": [], - "number": 10, - "url": "https://github.com/hapijs/bossy/milestone/10", - "version": "3.0.2" - }, - { - "date": "2016-07-29T19:12:34Z", - "id": 1910730, - "issues": [ - { - "id": 168221444, - "labels": ["dependency"], - "number": 49, - "title": "Update deps", - "url": "https://github.com/hapijs/bossy/issues/49" - } - ], - "number": 9, - "url": "https://github.com/hapijs/bossy/milestone/9", - "version": "3.0.1" - }, - { - "date": "2016-07-28T23:42:25Z", - "id": 1294360, - "issues": [ - { - "id": 150876152, - "labels": ["feature", "breaking changes"], - "number": 47, - "title": "Upgrade to current hapi.js standards", - "url": "https://github.com/hapijs/bossy/pull/47" - }, - { - "id": 150629488, - "labels": ["feature"], - "number": 46, - "title": "Upgrade to current hapi.js standards", - "url": "https://github.com/hapijs/bossy/issues/46" - }, - { - "id": 105122258, - "labels": ["feature"], - "number": 43, - "title": "Show default value when printing options", - "url": "https://github.com/hapijs/bossy/pull/43" - } - ], - "number": 8, - "url": "https://github.com/hapijs/bossy/milestone/8", - "version": "3.0.0" - }, - { - "date": "2015-07-05T20:56:06Z", - "id": 874508, - "issues": [ - { - "id": 91856141, - "labels": ["feature"], - "number": 41, - "title": "Add `multiple` option parameter", - "url": "https://github.com/hapijs/bossy/pull/41" - }, - { - "id": 91580434, - "labels": ["documentation"], - "number": 40, - "title": "update project style", - "url": "https://github.com/hapijs/bossy/pull/40" - }, - { - "id": 91543895, - "labels": ["documentation"], - "number": 39, - "title": "Update project style", - "url": "https://github.com/hapijs/bossy/issues/39" - }, - { - "id": 88509508, - "labels": ["feature"], - "number": 37, - "title": "Enable multiple values to be passed in", - "url": "https://github.com/hapijs/bossy/pull/37" - }, - { - "id": 87878220, - "labels": ["feature"], - "number": 36, - "title": "Support multiple values for an option", - "url": "https://github.com/hapijs/bossy/issues/36" - }, - { - "id": 84046113, - "labels": ["feature", "breaking changes"], - "number": 35, - "title": "Validate input arguments using Joi", - "url": "https://github.com/hapijs/bossy/pull/35" - }, - { - "id": 49456871, - "labels": ["breaking changes"], + { + "date": "2023-02-11T19:12:41Z", + "id": 9033252, + "issues": [ + { + "id": 1551788890, + "labels": ["dependency"], + "number": 83, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/bossy/pull/83" + } + ], + "number": 25, + "url": "https://github.com/hapijs/bossy/milestone/25", + "version": "6.0.1" + }, + { + "date": "2023-02-11T19:12:39Z", + "id": 7938954, + "issues": [ + { + "id": 1223532655, + "labels": ["breaking changes", "dependency"], + "number": 82, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/bossy/pull/82" + } + ], "number": 24, - "title": "Cleanup", - "url": "https://github.com/hapijs/bossy/pull/24" - } - ], - "number": 7, - "url": "https://github.com/hapijs/bossy/milestone/7", - "version": "2.0.0" - }, - { - "date": "2015-06-28T01:09:51Z", - "id": 790485, - "issues": [ - { - "id": 59498394, - "labels": ["test"], - "number": 32, - "title": "Update to Lab 5.x.x and Code 1.x.x", - "url": "https://github.com/hapijs/bossy/pull/32" - }, - { - "id": 58942308, - "labels": ["dependency"], - "number": 31, - "title": "Update .travis.yml", - "url": "https://github.com/hapijs/bossy/pull/31" - }, - { - "id": 51919651, - "labels": ["feature"], - "number": 29, - "title": "fix minor lint", - "url": "https://github.com/hapijs/bossy/pull/29" - }, - { - "id": 51756823, - "labels": ["feature"], - "number": 28, - "title": "Allow numeric arguments to be passed in without spaces", - "url": "https://github.com/hapijs/bossy/pull/28" - }, - { - "id": 51751655, - "labels": ["feature"], - "number": 27, - "title": "Bossy should support numeric arguments without spaces", - "url": "https://github.com/hapijs/bossy/issues/27" - }, - { - "id": 49935115, - "labels": ["feature"], - "number": 26, - "title": "Add help type", - "url": "https://github.com/hapijs/bossy/pull/26" - }, - { - "id": 49425529, - "labels": [], + "url": "https://github.com/hapijs/bossy/milestone/24", + "version": "6.0.0" + }, + { + "date": "2022-05-05T01:38:12Z", + "id": 6424902, + "issues": [ + { + "id": 807270160, + "labels": ["bug"], + "number": 78, + "title": "Fix display of defaults for json args and zero", + "url": "https://github.com/hapijs/bossy/pull/78" + } + ], "number": 23, - "title": "Slice", - "url": "https://github.com/hapijs/bossy/issues/23" - } - ], - "number": 6, - "url": "https://github.com/hapijs/bossy/milestone/6", - "version": "1.0.3" - }, - { - "date": "2014-09-15T19:01:49Z", - "id": 787737, - "issues": [ - { - "id": 42803772, - "labels": ["bug"], + "url": "https://github.com/hapijs/bossy/milestone/23", + "version": "5.1.1" + }, + { + "date": "2021-02-12T03:46:19Z", + "id": 6419950, + "issues": [ + { + "id": 792735609, + "labels": ["feature"], + "number": 77, + "title": "Implement object argument type", + "url": "https://github.com/hapijs/bossy/pull/77" + }, + { + "id": 792680257, + "labels": ["feature"], + "number": 76, + "title": "Implement negation of boolean arguments", + "url": "https://github.com/hapijs/bossy/pull/76" + } + ], + "number": 22, + "url": "https://github.com/hapijs/bossy/milestone/22", + "version": "5.1.0" + }, + { + "date": "2021-02-12T03:46:45Z", + "id": 4972602, + "issues": [ + { + "id": 709586214, + "labels": [], + "number": 74, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/bossy/pull/74" + } + ], + "number": 21, + "url": "https://github.com/hapijs/bossy/milestone/21", + "version": "5.0.1" + }, + { + "date": "2020-01-04T09:20:18Z", + "id": 4655630, + "issues": [ + { + "id": 545262632, + "labels": ["dependency"], + "number": 70, + "title": "Only node 12", + "url": "https://github.com/hapijs/bossy/issues/70" + } + ], "number": 20, - "title": "Populate all aliases.", - "url": "https://github.com/hapijs/bossy/pull/20" - }, - { - "id": 42660694, - "labels": ["bug"], + "url": "https://github.com/hapijs/bossy/milestone/20", + "version": "5.0.0" + }, + { + "date": "2019-09-12T23:32:18Z", + "id": 4556335, + "issues": [ + { + "id": 493073848, + "labels": ["dependency"], + "number": 66, + "title": "Update joi", + "url": "https://github.com/hapijs/bossy/issues/66" + } + ], + "number": 19, + "url": "https://github.com/hapijs/bossy/milestone/19", + "version": "4.1.3" + }, + { + "date": "2019-08-07T19:25:08Z", + "id": 4212623, + "issues": [ + { + "id": 478098818, + "labels": ["dependency"], + "number": 63, + "title": "Update deps", + "url": "https://github.com/hapijs/bossy/issues/63" + } + ], "number": 18, - "title": "Alias keys should be assigned argument value", - "url": "https://github.com/hapijs/bossy/issues/18" - } - ], - "number": 5, - "url": "https://github.com/hapijs/bossy/milestone/5", - "version": "1.0.2" - }, - { - "date": "2014-09-12T15:45:37Z", - "id": 787670, - "issues": [ - { - "id": 42641127, - "labels": ["bug"], + "url": "https://github.com/hapijs/bossy/milestone/18", + "version": "4.1.2" + }, + { + "date": "2019-04-09T06:33:09Z", + "id": 4184224, + "issues": [ + { + "id": 430790358, + "labels": ["dependency"], + "number": 62, + "title": "Update deps", + "url": "https://github.com/hapijs/bossy/issues/62" + } + ], "number": 17, - "title": "Format unknown option error message", - "url": "https://github.com/hapijs/bossy/pull/17" - }, - { - "id": 42639344, - "labels": ["bug"], + "url": "https://github.com/hapijs/bossy/milestone/17", + "version": "4.1.1" + }, + { + "date": "2019-03-29T20:31:05Z", + "id": 3787481, + "issues": [ + { + "id": 427150619, + "labels": ["non issue"], + "number": 61, + "title": "Change module namespace", + "url": "https://github.com/hapijs/bossy/issues/61" + } + ], "number": 16, - "title": "Unhelpful message for unknown argument", - "url": "https://github.com/hapijs/bossy/issues/16" - } - ], - "number": 4, - "url": "https://github.com/hapijs/bossy/milestone/4", - "version": "1.0.1" - }, - { - "date": "2014-09-12T14:41:57Z", - "id": 785743, - "issues": [ - { - "id": 42579957, - "labels": ["feature"], + "url": "https://github.com/hapijs/bossy/milestone/16", + "version": "4.1.0" + }, + { + "date": "2018-11-01T07:31:08Z", + "id": 3787480, + "issues": [ + { + "id": 376283874, + "labels": ["dependency"], + "number": 58, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/bossy/issues/58" + } + ], "number": 15, - "title": "Support colorizing usage information", - "url": "https://github.com/hapijs/bossy/pull/15" - }, - { - "id": 42561942, - "labels": ["feature"], + "url": "https://github.com/hapijs/bossy/milestone/15", + "version": "4.0.3" + }, + { + "date": "2018-11-01T07:29:44Z", + "id": 2885241, + "issues": [ + { + "id": 375801064, + "labels": ["non issue"], + "number": 57, + "title": "Cleanup", + "url": "https://github.com/hapijs/bossy/issues/57" + } + ], "number": 14, - "title": "Add valid definition option for arguments", - "url": "https://github.com/hapijs/bossy/pull/14" - }, - { - "id": 42558729, - "labels": ["bug"], + "url": "https://github.com/hapijs/bossy/milestone/14", + "version": "4.0.2" + }, + { + "date": "2017-11-03T06:46:40Z", + "id": 2860414, + "issues": [ + { + "id": 270890379, + "labels": ["dependency"], + "number": 55, + "title": "Use Boom for errors", + "url": "https://github.com/hapijs/bossy/issues/55" + } + ], "number": 13, - "title": "Orders usage message with -shortname, --longname", - "url": "https://github.com/hapijs/bossy/pull/13" - }, - { - "id": 42545371, - "labels": ["feature"], + "url": "https://github.com/hapijs/bossy/milestone/13", + "version": "4.0.1" + }, + { + "date": "2017-10-23T19:41:21Z", + "id": 2167852, + "issues": [ + { + "id": 267790323, + "labels": ["breaking changes", "dependency"], + "number": 54, + "title": "Node v8", + "url": "https://github.com/hapijs/bossy/issues/54" + } + ], "number": 12, - "title": "Add `valid` property to definition objects", - "url": "https://github.com/hapijs/bossy/issues/12" - }, - { - "id": 42543908, - "labels": ["bug"], + "url": "https://github.com/hapijs/bossy/milestone/12", + "version": "4.0.0" + }, + { + "date": "2016-12-01T03:42:08Z", + "id": 2167851, + "issues": [ + { + "id": 192747215, + "labels": ["dependency"], + "number": 52, + "title": "node 7", + "url": "https://github.com/hapijs/bossy/issues/52" + } + ], "number": 11, - "title": "Order alias and full name correctly on usage", - "url": "https://github.com/hapijs/bossy/issues/11" - }, - { - "id": 42539995, - "labels": ["feature"], + "url": "https://github.com/hapijs/bossy/milestone/11", + "version": "3.0.3" + }, + { + "date": "2016-12-01T03:40:57Z", + "id": 1912487, + "issues": [], "number": 10, - "title": "Colorize the usage/help output", - "url": "https://github.com/hapijs/bossy/issues/10" - } - ], - "number": 3, - "url": "https://github.com/hapijs/bossy/milestone/3", - "version": "1.0.0" - }, - { - "date": "2014-09-11T02:31:57Z", - "id": 785291, - "issues": [ - { - "id": 42482949, - "labels": ["feature"], + "url": "https://github.com/hapijs/bossy/milestone/10", + "version": "3.0.2" + }, + { + "date": "2016-07-29T19:12:34Z", + "id": 1910730, + "issues": [ + { + "id": 168221444, + "labels": ["dependency"], + "number": 49, + "title": "Update deps", + "url": "https://github.com/hapijs/bossy/issues/49" + } + ], "number": 9, - "title": "Can override argv", - "url": "https://github.com/hapijs/bossy/pull/9" - }, - { - "id": 42482095, - "labels": ["feature"], + "url": "https://github.com/hapijs/bossy/milestone/9", + "version": "3.0.1" + }, + { + "date": "2016-07-28T23:42:25Z", + "id": 1294360, + "issues": [ + { + "id": 150876152, + "labels": ["feature", "breaking changes"], + "number": 47, + "title": "Upgrade to current hapi.js standards", + "url": "https://github.com/hapijs/bossy/pull/47" + }, + { + "id": 150629488, + "labels": ["feature"], + "number": 46, + "title": "Upgrade to current hapi.js standards", + "url": "https://github.com/hapijs/bossy/issues/46" + }, + { + "id": 105122258, + "labels": ["feature"], + "number": 43, + "title": "Show default value when printing options", + "url": "https://github.com/hapijs/bossy/pull/43" + } + ], "number": 8, - "title": "Support null defaults for boolean", - "url": "https://github.com/hapijs/bossy/pull/8" - }, - { - "id": 42482016, - "labels": ["feature"], + "url": "https://github.com/hapijs/bossy/milestone/8", + "version": "3.0.0" + }, + { + "date": "2015-07-05T20:56:06Z", + "id": 874508, + "issues": [ + { + "id": 91856141, + "labels": ["feature"], + "number": 41, + "title": "Add `multiple` option parameter", + "url": "https://github.com/hapijs/bossy/pull/41" + }, + { + "id": 91580434, + "labels": ["documentation"], + "number": 40, + "title": "update project style", + "url": "https://github.com/hapijs/bossy/pull/40" + }, + { + "id": 91543895, + "labels": ["documentation"], + "number": 39, + "title": "Update project style", + "url": "https://github.com/hapijs/bossy/issues/39" + }, + { + "id": 88509508, + "labels": ["feature"], + "number": 37, + "title": "Enable multiple values to be passed in", + "url": "https://github.com/hapijs/bossy/pull/37" + }, + { + "id": 87878220, + "labels": ["feature"], + "number": 36, + "title": "Support multiple values for an option", + "url": "https://github.com/hapijs/bossy/issues/36" + }, + { + "id": 84046113, + "labels": ["feature", "breaking changes"], + "number": 35, + "title": "Validate input arguments using Joi", + "url": "https://github.com/hapijs/bossy/pull/35" + }, + { + "id": 49456871, + "labels": ["breaking changes"], + "number": 24, + "title": "Cleanup", + "url": "https://github.com/hapijs/bossy/pull/24" + } + ], "number": 7, - "title": "Allow boolean to be defaulted to null", - "url": "https://github.com/hapijs/bossy/issues/7" - }, - { - "id": 42448642, - "labels": ["feature"], + "url": "https://github.com/hapijs/bossy/milestone/7", + "version": "2.0.0" + }, + { + "date": "2015-06-28T01:09:51Z", + "id": 790485, + "issues": [ + { + "id": 59498394, + "labels": ["test"], + "number": 32, + "title": "Update to Lab 5.x.x and Code 1.x.x", + "url": "https://github.com/hapijs/bossy/pull/32" + }, + { + "id": 58942308, + "labels": ["dependency"], + "number": 31, + "title": "Update .travis.yml", + "url": "https://github.com/hapijs/bossy/pull/31" + }, + { + "id": 51919651, + "labels": ["feature"], + "number": 29, + "title": "fix minor lint", + "url": "https://github.com/hapijs/bossy/pull/29" + }, + { + "id": 51756823, + "labels": ["feature"], + "number": 28, + "title": "Allow numeric arguments to be passed in without spaces", + "url": "https://github.com/hapijs/bossy/pull/28" + }, + { + "id": 51751655, + "labels": ["feature"], + "number": 27, + "title": "Bossy should support numeric arguments without spaces", + "url": "https://github.com/hapijs/bossy/issues/27" + }, + { + "id": 49935115, + "labels": ["feature"], + "number": 26, + "title": "Add help type", + "url": "https://github.com/hapijs/bossy/pull/26" + }, + { + "id": 49425529, + "labels": [], + "number": 23, + "title": "Slice", + "url": "https://github.com/hapijs/bossy/issues/23" + } + ], "number": 6, - "title": "Support argv being passed in options to parse", - "url": "https://github.com/hapijs/bossy/issues/6" - } - ], - "number": 2, - "url": "https://github.com/hapijs/bossy/milestone/2", - "version": "0.0.2" - }, - { - "date": "2014-09-10T18:26:07Z", - "id": 780949, - "issues": [ - { - "id": 42160660, - "labels": ["feature"], + "url": "https://github.com/hapijs/bossy/milestone/6", + "version": "1.0.3" + }, + { + "date": "2014-09-15T19:01:49Z", + "id": 787737, + "issues": [ + { + "id": 42803772, + "labels": ["bug"], + "number": 20, + "title": "Populate all aliases.", + "url": "https://github.com/hapijs/bossy/pull/20" + }, + { + "id": 42660694, + "labels": ["bug"], + "number": 18, + "title": "Alias keys should be assigned argument value", + "url": "https://github.com/hapijs/bossy/issues/18" + } + ], + "number": 5, + "url": "https://github.com/hapijs/bossy/milestone/5", + "version": "1.0.2" + }, + { + "date": "2014-09-12T15:45:37Z", + "id": 787670, + "issues": [ + { + "id": 42641127, + "labels": ["bug"], + "number": 17, + "title": "Format unknown option error message", + "url": "https://github.com/hapijs/bossy/pull/17" + }, + { + "id": 42639344, + "labels": ["bug"], + "number": 16, + "title": "Unhelpful message for unknown argument", + "url": "https://github.com/hapijs/bossy/issues/16" + } + ], "number": 4, - "title": "Adding help formatting", - "url": "https://github.com/hapijs/bossy/pull/4" - }, - { - "id": 42158418, - "labels": ["feature"], + "url": "https://github.com/hapijs/bossy/milestone/4", + "version": "1.0.1" + }, + { + "date": "2014-09-12T14:41:57Z", + "id": 785743, + "issues": [ + { + "id": 42579957, + "labels": ["feature"], + "number": 15, + "title": "Support colorizing usage information", + "url": "https://github.com/hapijs/bossy/pull/15" + }, + { + "id": 42561942, + "labels": ["feature"], + "number": 14, + "title": "Add valid definition option for arguments", + "url": "https://github.com/hapijs/bossy/pull/14" + }, + { + "id": 42558729, + "labels": ["bug"], + "number": 13, + "title": "Orders usage message with -shortname, --longname", + "url": "https://github.com/hapijs/bossy/pull/13" + }, + { + "id": 42545371, + "labels": ["feature"], + "number": 12, + "title": "Add `valid` property to definition objects", + "url": "https://github.com/hapijs/bossy/issues/12" + }, + { + "id": 42543908, + "labels": ["bug"], + "number": 11, + "title": "Order alias and full name correctly on usage", + "url": "https://github.com/hapijs/bossy/issues/11" + }, + { + "id": 42539995, + "labels": ["feature"], + "number": 10, + "title": "Colorize the usage/help output", + "url": "https://github.com/hapijs/bossy/issues/10" + } + ], + "number": 3, + "url": "https://github.com/hapijs/bossy/milestone/3", + "version": "1.0.0" + }, + { + "date": "2014-09-11T02:31:57Z", + "id": 785291, + "issues": [ + { + "id": 42482949, + "labels": ["feature"], + "number": 9, + "title": "Can override argv", + "url": "https://github.com/hapijs/bossy/pull/9" + }, + { + "id": 42482095, + "labels": ["feature"], + "number": 8, + "title": "Support null defaults for boolean", + "url": "https://github.com/hapijs/bossy/pull/8" + }, + { + "id": 42482016, + "labels": ["feature"], + "number": 7, + "title": "Allow boolean to be defaulted to null", + "url": "https://github.com/hapijs/bossy/issues/7" + }, + { + "id": 42448642, + "labels": ["feature"], + "number": 6, + "title": "Support argv being passed in options to parse", + "url": "https://github.com/hapijs/bossy/issues/6" + } + ], "number": 2, - "title": "Implement function for displaying usage", - "url": "https://github.com/hapijs/bossy/issues/2" - }, - { - "id": 42130981, - "labels": ["feature"], + "url": "https://github.com/hapijs/bossy/milestone/2", + "version": "0.0.2" + }, + { + "date": "2014-09-10T18:26:07Z", + "id": 780949, + "issues": [ + { + "id": 42160660, + "labels": ["feature"], + "number": 4, + "title": "Adding help formatting", + "url": "https://github.com/hapijs/bossy/pull/4" + }, + { + "id": 42158418, + "labels": ["feature"], + "number": 2, + "title": "Implement function for displaying usage", + "url": "https://github.com/hapijs/bossy/issues/2" + }, + { + "id": 42130981, + "labels": ["feature"], + "number": 1, + "title": "Lab 4, defaults, and require", + "url": "https://github.com/hapijs/bossy/pull/1" + } + ], "number": 1, - "title": "Lab 4, defaults, and require", - "url": "https://github.com/hapijs/bossy/pull/1" - } - ], - "number": 1, - "url": "https://github.com/hapijs/bossy/milestone/1", - "version": "0.0.1" - } + "url": "https://github.com/hapijs/bossy/milestone/1", + "version": "0.0.1" + } ] diff --git a/generated/modules/bossy/info.json b/generated/modules/bossy/info.json index 93a932d0..938a6f87 100644 --- a/generated/modules/bossy/info.json +++ b/generated/modules/bossy/info.json @@ -1,28 +1,28 @@ { - "api": true, - "forks": 30, - "isPlugin": false, - "link": "https://github.com/hapijs/bossy", - "name": "bossy", - "package": "@hapi/bossy", - "slogan": "Command line options parser.", - "sloganHtml": "Command line options parser.", - "stars": 46, - "updated": "2024-10-23T15:40:09Z", - "versions": [ - { - "branch": "v5.1.1", - "license": "BSD", - "name": "5.1.1", - "node": ">= 16" - }, - { - "branch": "v6.0.1", - "license": "BSD", - "name": "6.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.1", "5.1.1"], - "latestVersion": "6.x.x" + "api": true, + "forks": 30, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/bossy", + "name": "bossy", + "package": "@hapi/bossy", + "slogan": "Command line options parser.", + "sloganHtml": "Command line options parser.", + "stars": 46, + "updated": "2024-10-23T15:40:09Z", + "versions": [ + { + "branch": "v5.1.1", + "license": "BSD", + "name": "5.1.1", + "node": ">= 16" + }, + { + "branch": "v6.0.1", + "license": "BSD", + "name": "6.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.1", "5.1.1"] } diff --git a/generated/modules/bounce/changelog.json b/generated/modules/bounce/changelog.json index 47a8b98f..a5616fc6 100644 --- a/generated/modules/bounce/changelog.json +++ b/generated/modules/bounce/changelog.json @@ -1,242 +1,242 @@ [ - { - "date": "2024-10-23T15:48:17Z", - "id": 11785180, - "issues": [ - { - "id": 2608793051, - "labels": ["bug"], - "number": 38, - "title": "Fix background() missing return option support", - "url": "https://github.com/hapijs/bounce/pull/38" - } - ], - "number": 17, - "url": "https://github.com/hapijs/bounce/milestone/17", - "version": "3.0.2" - }, - { - "date": "2023-02-11T17:54:18Z", - "id": 7933511, - "issues": [ - { - "id": 1551765352, - "labels": ["dependency"], - "number": 35, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/bounce/pull/35" - } - ], - "number": 16, - "url": "https://github.com/hapijs/bounce/milestone/16", - "version": "3.0.1" - }, - { - "date": "2023-02-11T17:47:09Z", - "id": 7933510, - "issues": [ - { - "id": 1222419541, - "labels": ["dependency", "breaking changes"], - "number": 33, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/bounce/pull/33" - } - ], - "number": 15, - "url": "https://github.com/hapijs/bounce/milestone/15", - "version": "3.0.0" - }, - { - "date": "2020-01-04T22:28:38Z", - "id": 4973165, - "issues": [ - { - "id": 545340004, - "labels": ["dependency", "breaking changes"], - "number": 23, - "title": "Only node 12", - "url": "https://github.com/hapijs/bounce/issues/23" - } - ], - "number": 13, - "url": "https://github.com/hapijs/bounce/milestone/13", - "version": "2.0.0" - }, - { - "date": "2019-10-15T06:45:47Z", - "id": 4443962, - "issues": [ - { - "id": 507040279, - "labels": ["bug", "dependency"], - "number": 21, - "title": "Fix hoek contain bug", - "url": "https://github.com/hapijs/bounce/issues/21" - } - ], - "number": 11, - "url": "https://github.com/hapijs/bounce/milestone/11", - "version": "1.3.2" - }, - { - "date": "2019-06-26T17:24:58Z", - "id": 4185508, - "issues": [ - { - "id": 461090363, - "labels": ["bug", "dependency"], + { + "date": "2024-10-23T15:48:17Z", + "id": 11785180, + "issues": [ + { + "id": 2608793051, + "labels": ["bug"], + "number": 38, + "title": "Fix background() missing return option support", + "url": "https://github.com/hapijs/bounce/pull/38" + } + ], + "number": 17, + "url": "https://github.com/hapijs/bounce/milestone/17", + "version": "3.0.2" + }, + { + "date": "2023-02-11T17:54:18Z", + "id": 7933511, + "issues": [ + { + "id": 1551765352, + "labels": ["dependency"], + "number": 35, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/bounce/pull/35" + } + ], "number": 16, - "title": "Treat hoek assertion as system", - "url": "https://github.com/hapijs/bounce/issues/16" - } - ], - "number": 10, - "url": "https://github.com/hapijs/bounce/milestone/10", - "version": "1.3.1" - }, - { - "date": "2019-03-30T20:27:28Z", - "id": 3811309, - "issues": [ - { - "id": 427322680, - "labels": ["dependency"], + "url": "https://github.com/hapijs/bounce/milestone/16", + "version": "3.0.1" + }, + { + "date": "2023-02-11T17:47:09Z", + "id": 7933510, + "issues": [ + { + "id": 1222419541, + "labels": ["dependency", "breaking changes"], + "number": 33, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/bounce/pull/33" + } + ], "number": 15, - "title": "Change module namespace", - "url": "https://github.com/hapijs/bounce/issues/15" - } - ], - "number": 9, - "url": "https://github.com/hapijs/bounce/milestone/9", - "version": "1.3.0" - }, - { - "date": "2018-11-11T02:10:06Z", - "id": 3792172, - "issues": [ - { - "id": 378513258, - "labels": ["dependency"], + "url": "https://github.com/hapijs/bounce/milestone/15", + "version": "3.0.0" + }, + { + "date": "2020-01-04T22:28:38Z", + "id": 4973165, + "issues": [ + { + "id": 545340004, + "labels": ["dependency", "breaking changes"], + "number": 23, + "title": "Only node 12", + "url": "https://github.com/hapijs/bounce/issues/23" + } + ], "number": 13, - "title": "Fix contain() options", - "url": "https://github.com/hapijs/bounce/pull/13" - } - ], - "number": 8, - "url": "https://github.com/hapijs/bounce/milestone/8", - "version": "1.2.3" - }, - { - "date": "2018-11-03T00:17:57Z", - "id": 3787503, - "issues": [ - { - "id": 377000725, - "labels": ["non issue"], - "number": 12, - "title": "Remove engines", - "url": "https://github.com/hapijs/bounce/issues/12" - } - ], - "number": 7, - "url": "https://github.com/hapijs/bounce/milestone/7", - "version": "1.2.2" - }, - { - "date": "2018-11-01T07:32:37Z", - "id": 2889933, - "issues": [ - { - "id": 376284416, - "labels": ["dependency"], + "url": "https://github.com/hapijs/bounce/milestone/13", + "version": "2.0.0" + }, + { + "date": "2019-10-15T06:45:47Z", + "id": 4443962, + "issues": [ + { + "id": 507040279, + "labels": ["bug", "dependency"], + "number": 21, + "title": "Fix hoek contain bug", + "url": "https://github.com/hapijs/bounce/issues/21" + } + ], + "number": 11, + "url": "https://github.com/hapijs/bounce/milestone/11", + "version": "1.3.2" + }, + { + "date": "2019-06-26T17:24:58Z", + "id": 4185508, + "issues": [ + { + "id": 461090363, + "labels": ["bug", "dependency"], + "number": 16, + "title": "Treat hoek assertion as system", + "url": "https://github.com/hapijs/bounce/issues/16" + } + ], "number": 10, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/bounce/issues/10" - } - ], - "number": 6, - "url": "https://github.com/hapijs/bounce/milestone/6", - "version": "1.2.1" - }, - { - "date": "2017-11-06T09:36:32Z", - "id": 2889597, - "issues": [ - { - "id": 271410347, - "labels": ["feature"], + "url": "https://github.com/hapijs/bounce/milestone/10", + "version": "1.3.1" + }, + { + "date": "2019-03-30T20:27:28Z", + "id": 3811309, + "issues": [ + { + "id": 427322680, + "labels": ["dependency"], + "number": 15, + "title": "Change module namespace", + "url": "https://github.com/hapijs/bounce/issues/15" + } + ], + "number": 9, + "url": "https://github.com/hapijs/bounce/milestone/9", + "version": "1.3.0" + }, + { + "date": "2018-11-11T02:10:06Z", + "id": 3792172, + "issues": [ + { + "id": 378513258, + "labels": ["dependency"], + "number": 13, + "title": "Fix contain() options", + "url": "https://github.com/hapijs/bounce/pull/13" + } + ], + "number": 8, + "url": "https://github.com/hapijs/bounce/milestone/8", + "version": "1.2.3" + }, + { + "date": "2018-11-03T00:17:57Z", + "id": 3787503, + "issues": [ + { + "id": 377000725, + "labels": ["non issue"], + "number": 12, + "title": "Remove engines", + "url": "https://github.com/hapijs/bounce/issues/12" + } + ], + "number": 7, + "url": "https://github.com/hapijs/bounce/milestone/7", + "version": "1.2.2" + }, + { + "date": "2018-11-01T07:32:37Z", + "id": 2889933, + "issues": [ + { + "id": 376284416, + "labels": ["dependency"], + "number": 10, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/bounce/issues/10" + } + ], "number": 6, - "title": "Support background functions", - "url": "https://github.com/hapijs/bounce/issues/6" - } - ], - "number": 5, - "url": "https://github.com/hapijs/bounce/milestone/5", - "version": "1.2.0" - }, - { - "date": "2017-11-06T07:23:16Z", - "id": 2885490, - "issues": [ - { - "id": 271380424, - "labels": ["feature"], + "url": "https://github.com/hapijs/bounce/milestone/6", + "version": "1.2.1" + }, + { + "date": "2017-11-06T09:36:32Z", + "id": 2889597, + "issues": [ + { + "id": 271410347, + "labels": ["feature"], + "number": 6, + "title": "Support background functions", + "url": "https://github.com/hapijs/bounce/issues/6" + } + ], "number": 5, - "title": "Background processing with error protection", - "url": "https://github.com/hapijs/bounce/issues/5" - } - ], - "number": 4, - "url": "https://github.com/hapijs/bounce/milestone/4", - "version": "1.1.0" - }, - { - "date": "2017-11-03T09:41:02Z", - "id": 2885246, - "issues": [ - { - "id": 270920928, - "labels": ["bug"], + "url": "https://github.com/hapijs/bounce/milestone/5", + "version": "1.2.0" + }, + { + "date": "2017-11-06T07:23:16Z", + "id": 2885490, + "issues": [ + { + "id": 271380424, + "labels": ["feature"], + "number": 5, + "title": "Background processing with error protection", + "url": "https://github.com/hapijs/bounce/issues/5" + } + ], "number": 4, - "title": "Ignore boomified system errors", - "url": "https://github.com/hapijs/bounce/issues/4" - } - ], - "number": 3, - "url": "https://github.com/hapijs/bounce/milestone/3", - "version": "1.0.3" - }, - { - "date": "2017-11-03T06:49:25Z", - "id": 2884309, - "issues": [ - { - "id": 270890774, - "labels": ["dependency"], + "url": "https://github.com/hapijs/bounce/milestone/4", + "version": "1.1.0" + }, + { + "date": "2017-11-03T09:41:02Z", + "id": 2885246, + "issues": [ + { + "id": 270920928, + "labels": ["bug"], + "number": 4, + "title": "Ignore boomified system errors", + "url": "https://github.com/hapijs/bounce/issues/4" + } + ], "number": 3, - "title": "Update boom", - "url": "https://github.com/hapijs/bounce/issues/3" - } - ], - "number": 2, - "url": "https://github.com/hapijs/bounce/milestone/2", - "version": "1.0.2" - }, - { - "date": "2017-11-02T17:57:26Z", - "id": 2884308, - "issues": [ - { - "id": 270722048, - "labels": ["dependency"], + "url": "https://github.com/hapijs/bounce/milestone/3", + "version": "1.0.3" + }, + { + "date": "2017-11-03T06:49:25Z", + "id": 2884309, + "issues": [ + { + "id": 270890774, + "labels": ["dependency"], + "number": 3, + "title": "Update boom", + "url": "https://github.com/hapijs/bounce/issues/3" + } + ], "number": 2, - "title": "Hoek missing from dependencies", - "url": "https://github.com/hapijs/bounce/issues/2" - } - ], - "number": 1, - "url": "https://github.com/hapijs/bounce/milestone/1", - "version": "1.0.1" - } + "url": "https://github.com/hapijs/bounce/milestone/2", + "version": "1.0.2" + }, + { + "date": "2017-11-02T17:57:26Z", + "id": 2884308, + "issues": [ + { + "id": 270722048, + "labels": ["dependency"], + "number": 2, + "title": "Hoek missing from dependencies", + "url": "https://github.com/hapijs/bounce/issues/2" + } + ], + "number": 1, + "url": "https://github.com/hapijs/bounce/milestone/1", + "version": "1.0.1" + } ] diff --git a/generated/modules/bounce/info.json b/generated/modules/bounce/info.json index 679dc944..954046e8 100644 --- a/generated/modules/bounce/info.json +++ b/generated/modules/bounce/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 13, - "isPlugin": false, - "link": "https://github.com/hapijs/bounce", - "name": "bounce", - "package": "@hapi/bounce", - "slogan": "Selective error catching and rewrite rules.", - "sloganHtml": "Selective error catching and rewrite rules.", - "stars": 176, - "updated": "2024-10-23T15:47:48Z", - "versions": [ - { - "branch": "v3.0.2", - "license": "BSD", - "name": "3.0.2", - "node": ">= 16" - } - ], - "versionsArray": ["3.0.2"], - "latestVersion": "3.x.x" + "api": true, + "forks": 13, + "isPlugin": false, + "latestVersion": "3.x.x", + "link": "https://github.com/hapijs/bounce", + "name": "bounce", + "package": "@hapi/bounce", + "slogan": "Selective error catching and rewrite rules.", + "sloganHtml": "Selective error catching and rewrite rules.", + "stars": 176, + "updated": "2024-10-23T15:47:48Z", + "versions": [ + { + "branch": "v3.0.2", + "license": "BSD", + "name": "3.0.2", + "node": ">= 16" + } + ], + "versionsArray": ["3.0.2"] } diff --git a/generated/modules/bourne/changelog.json b/generated/modules/bourne/changelog.json index 66918d67..43bf83dd 100644 --- a/generated/modules/bourne/changelog.json +++ b/generated/modules/bourne/changelog.json @@ -1,151 +1,151 @@ [ - { - "date": "2022-04-08T15:01:04Z", - "id": 4972543, - "issues": [ - { - "id": 1196297054, - "labels": ["feature", "types"], - "number": 26, - "title": "Add Typescript types", - "url": "https://github.com/hapijs/bourne/pull/26" - }, - { - "id": 709586811, - "labels": [], - "number": 22, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/bourne/pull/22" - } - ], - "number": 9, - "url": "https://github.com/hapijs/bourne/milestone/9", - "version": "2.1.0" - }, - { - "date": "2020-01-04T09:10:54Z", - "id": 4972542, - "issues": [ - { - "id": 545261614, - "labels": ["dependency", "breaking changes"], - "number": 17, - "title": "Only node 12", - "url": "https://github.com/hapijs/bourne/issues/17" - } - ], - "number": 8, - "url": "https://github.com/hapijs/bourne/milestone/8", - "version": "2.0.0" - }, - { - "date": "2019-04-28T19:07:05Z", - "id": 4265696, - "issues": [ - { - "id": 438087158, - "labels": ["bug", "security"], - "number": 10, - "title": "Fix uppercase hex strings validating as safe", - "url": "https://github.com/hapijs/bourne/pull/10" - } - ], - "number": 6, - "url": "https://github.com/hapijs/bourne/milestone/6", - "version": "1.3.2" - }, - { - "date": "2019-04-27T19:39:27Z", - "id": 4184137, - "issues": [ - { - "id": 437977002, - "labels": ["feature"], + { + "date": "2022-04-08T15:01:04Z", + "id": 4972543, + "issues": [ + { + "id": 1196297054, + "labels": ["feature", "types"], + "number": 26, + "title": "Add Typescript types", + "url": "https://github.com/hapijs/bourne/pull/26" + }, + { + "id": 709586811, + "labels": [], + "number": 22, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/bourne/pull/22" + } + ], "number": 9, - "title": "Add safeParse()", - "url": "https://github.com/hapijs/bourne/issues/9" - } - ], - "number": 5, - "url": "https://github.com/hapijs/bourne/milestone/5", - "version": "1.3.0" - }, - { - "date": "2019-04-27T19:38:20Z", - "id": 4170674, - "issues": [ - { - "id": 427141763, - "labels": ["non issue"], + "url": "https://github.com/hapijs/bourne/milestone/9", + "version": "2.1.0" + }, + { + "date": "2020-01-04T09:10:54Z", + "id": 4972542, + "issues": [ + { + "id": 545261614, + "labels": ["dependency", "breaking changes"], + "number": 17, + "title": "Only node 12", + "url": "https://github.com/hapijs/bourne/issues/17" + } + ], "number": 8, - "title": "Change module namespace", - "url": "https://github.com/hapijs/bourne/issues/8" - } - ], - "number": 4, - "url": "https://github.com/hapijs/bourne/milestone/4", - "version": "1.2.0" - }, - { - "date": "2019-03-25T16:54:21Z", - "id": 4029941, - "issues": [ - { - "id": 408288980, - "labels": ["bug", "security"], - "number": 7, - "title": "Don't assume `hasOwnProperty` is safe", - "url": "https://github.com/hapijs/bourne/pull/7" - } - ], - "number": 3, - "url": "https://github.com/hapijs/bourne/milestone/3", - "version": "1.1.2" - }, - { - "date": "2019-02-04T21:26:15Z", - "id": 4023137, - "issues": [ - { - "id": 405924175, - "labels": ["feature"], + "url": "https://github.com/hapijs/bourne/milestone/8", + "version": "2.0.0" + }, + { + "date": "2019-04-28T19:07:05Z", + "id": 4265696, + "issues": [ + { + "id": 438087158, + "labels": ["bug", "security"], + "number": 10, + "title": "Fix uppercase hex strings validating as safe", + "url": "https://github.com/hapijs/bourne/pull/10" + } + ], + "number": 6, + "url": "https://github.com/hapijs/bourne/milestone/6", + "version": "1.3.2" + }, + { + "date": "2019-04-27T19:39:27Z", + "id": 4184137, + "issues": [ + { + "id": 437977002, + "labels": ["feature"], + "number": 9, + "title": "Add safeParse()", + "url": "https://github.com/hapijs/bourne/issues/9" + } + ], "number": 5, - "title": "Use syntax available down to Node 4.", - "url": "https://github.com/hapijs/bourne/pull/5" - }, - { - "id": 405907547, - "labels": ["bug"], + "url": "https://github.com/hapijs/bourne/milestone/5", + "version": "1.3.0" + }, + { + "date": "2019-04-27T19:38:20Z", + "id": 4170674, + "issues": [ + { + "id": 427141763, + "labels": ["non issue"], + "number": 8, + "title": "Change module namespace", + "url": "https://github.com/hapijs/bourne/issues/8" + } + ], "number": 4, - "title": "Improve regex to only flag keys", - "url": "https://github.com/hapijs/bourne/issues/4" - } - ], - "number": 2, - "url": "https://github.com/hapijs/bourne/milestone/2", - "version": "1.1.1" - }, - { - "date": "2019-02-01T22:41:40Z", - "id": 4023109, - "issues": [ - { - "id": 405898476, - "labels": ["bug", "security"], + "url": "https://github.com/hapijs/bourne/milestone/4", + "version": "1.2.0" + }, + { + "date": "2019-03-25T16:54:21Z", + "id": 4029941, + "issues": [ + { + "id": 408288980, + "labels": ["bug", "security"], + "number": 7, + "title": "Don't assume `hasOwnProperty` is safe", + "url": "https://github.com/hapijs/bourne/pull/7" + } + ], "number": 3, - "title": "Handle escaped unicode characters", - "url": "https://github.com/hapijs/bourne/issues/3" - }, - { - "id": 405583120, - "labels": ["feature"], + "url": "https://github.com/hapijs/bourne/milestone/3", + "version": "1.1.2" + }, + { + "date": "2019-02-04T21:26:15Z", + "id": 4023137, + "issues": [ + { + "id": 405924175, + "labels": ["feature"], + "number": 5, + "title": "Use syntax available down to Node 4.", + "url": "https://github.com/hapijs/bourne/pull/5" + }, + { + "id": 405907547, + "labels": ["bug"], + "number": 4, + "title": "Improve regex to only flag keys", + "url": "https://github.com/hapijs/bourne/issues/4" + } + ], "number": 2, - "title": "Expose validation logic", - "url": "https://github.com/hapijs/bourne/issues/2" - } - ], - "number": 1, - "url": "https://github.com/hapijs/bourne/milestone/1", - "version": "1.1.0" - } + "url": "https://github.com/hapijs/bourne/milestone/2", + "version": "1.1.1" + }, + { + "date": "2019-02-01T22:41:40Z", + "id": 4023109, + "issues": [ + { + "id": 405898476, + "labels": ["bug", "security"], + "number": 3, + "title": "Handle escaped unicode characters", + "url": "https://github.com/hapijs/bourne/issues/3" + }, + { + "id": 405583120, + "labels": ["feature"], + "number": 2, + "title": "Expose validation logic", + "url": "https://github.com/hapijs/bourne/issues/2" + } + ], + "number": 1, + "url": "https://github.com/hapijs/bourne/milestone/1", + "version": "1.1.0" + } ] diff --git a/generated/modules/bourne/info.json b/generated/modules/bourne/info.json index c38fa4cd..56dcfbf2 100644 --- a/generated/modules/bourne/info.json +++ b/generated/modules/bourne/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 11, - "isPlugin": false, - "link": "https://github.com/hapijs/bourne", - "name": "bourne", - "package": "@hapi/bourne", - "slogan": "JSON.parse() drop-in replacement with prototype poisoning protection.", - "sloganHtml": "JSON.parse() drop-in replacement with prototype poisoning protection.", - "stars": 179, - "updated": "2024-10-23T15:09:24Z", - "versions": [ - { - "branch": "v3.0.0", - "license": "BSD", - "name": "3.0.0", - "node": ">= 16" - } - ], - "versionsArray": ["3.0.0"], - "latestVersion": "3.x.x" + "api": true, + "forks": 12, + "isPlugin": false, + "latestVersion": "3.x.x", + "link": "https://github.com/hapijs/bourne", + "name": "bourne", + "package": "@hapi/bourne", + "slogan": "JSON.parse() drop-in replacement with prototype poisoning protection.", + "sloganHtml": "JSON.parse() drop-in replacement with prototype poisoning protection.", + "stars": 180, + "updated": "2024-10-23T15:09:24Z", + "versions": [ + { + "branch": "v3.0.0", + "license": "BSD", + "name": "3.0.0", + "node": ">= 16" + } + ], + "versionsArray": ["3.0.0"] } diff --git a/generated/modules/call/changelog.json b/generated/modules/call/changelog.json index 48d02406..509559ed 100644 --- a/generated/modules/call/changelog.json +++ b/generated/modules/call/changelog.json @@ -1,497 +1,497 @@ [ - { - "date": "2020-11-18T03:40:51Z", - "id": 5088090, - "issues": [ - { - "id": 709587135, - "labels": [], - "number": 62, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/call/pull/62" - } - ], - "number": 28, - "url": "https://github.com/hapijs/call/milestone/28", - "version": "8.0.1" - }, - { - "date": "2020-02-10T08:57:02Z", - "id": 5087621, - "issues": [ - { - "id": 562411665, - "labels": ["breaking changes"], - "number": 56, - "title": "Switch tables to maps", - "url": "https://github.com/hapijs/call/issues/56" - } - ], - "number": 27, - "url": "https://github.com/hapijs/call/milestone/27", - "version": "8.0.0" - }, - { - "date": "2020-02-10T05:41:04Z", - "id": 4973175, - "issues": [ - { - "id": 562337121, - "labels": ["non issue"], - "number": 55, - "title": "Switch to use maps", - "url": "https://github.com/hapijs/call/issues/55" - } - ], - "number": 26, - "url": "https://github.com/hapijs/call/milestone/26", - "version": "7.0.1" - }, - { - "date": "2020-01-04T22:38:39Z", - "id": 4973174, - "issues": [ - { - "id": 545340358, - "labels": ["breaking changes", "dependency"], - "number": 54, - "title": "Only node 12", - "url": "https://github.com/hapijs/call/issues/54" - } - ], - "number": 25, - "url": "https://github.com/hapijs/call/milestone/25", - "version": "7.0.0" - }, - { - "date": "2019-11-01T22:12:31Z", - "id": 4800345, - "issues": [ - { - "id": 516372482, - "labels": ["non issue"], - "number": 52, - "title": "Special case '/'", - "url": "https://github.com/hapijs/call/issues/52" - } - ], - "number": 23, - "url": "https://github.com/hapijs/call/milestone/23", - "version": "6.0.1" - }, - { - "date": "2019-10-30T23:54:22Z", - "id": 4800344, - "issues": [ - { - "id": 515053533, - "labels": ["feature"], - "number": 51, - "title": "Improve performance", - "url": "https://github.com/hapijs/call/issues/51" - }, - { - "id": 515053384, - "labels": ["breaking changes", "dependency"], - "number": 50, - "title": "Drop node 8", - "url": "https://github.com/hapijs/call/issues/50" - } - ], - "number": 22, - "url": "https://github.com/hapijs/call/milestone/22", - "version": "6.0.0" - }, - { - "date": "2020-02-13T19:45:13Z", - "id": 4800343, - "issues": [ - { - "id": 564909227, - "labels": ["bug"], - "number": 57, - "title": "Check method exists", - "url": "https://github.com/hapijs/call/issues/57" - } - ], - "number": 21, - "url": "https://github.com/hapijs/call/milestone/21", - "version": "5.1.3" - }, - { - "date": "2019-10-30T23:48:27Z", - "id": 4571381, - "issues": [ - { - "id": 511558453, - "labels": ["bug"], - "number": 49, - "title": "Fix typo: wilcard -> wildcard", - "url": "https://github.com/hapijs/call/pull/49" - } - ], - "number": 20, - "url": "https://github.com/hapijs/call/milestone/20", - "version": "5.1.2" - }, - { - "date": "2019-08-14T05:02:31Z", - "id": 4185543, - "issues": [ - { - "id": 480482031, - "labels": ["dependency"], - "number": 42, - "title": "Update deps", - "url": "https://github.com/hapijs/call/issues/42" - } - ], - "number": 19, - "url": "https://github.com/hapijs/call/milestone/19", - "version": "5.1.1" - }, - { - "date": "2019-03-30T20:46:45Z", - "id": 3792173, - "issues": [ - { - "id": 427326182, - "labels": ["dependency"], - "number": 41, - "title": "Change module namespace", - "url": "https://github.com/hapijs/call/issues/41" - } - ], - "number": 16, - "url": "https://github.com/hapijs/call/milestone/16", - "version": "5.1.0" - }, - { - "date": "2018-11-03T00:18:57Z", - "id": 3787551, - "issues": [ - { - "id": 377000797, - "labels": ["non issue"], - "number": 37, - "title": "Remove engines", - "url": "https://github.com/hapijs/call/issues/37" - } - ], - "number": 15, - "url": "https://github.com/hapijs/call/milestone/15", - "version": "5.0.3" - }, - { - "date": "2018-11-01T07:48:36Z", - "id": 2885250, - "issues": [ - { - "id": 376288492, - "labels": ["dependency"], - "number": 36, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/call/issues/36" - } - ], - "number": 14, - "url": "https://github.com/hapijs/call/milestone/14", - "version": "5.0.2" - }, - { - "date": "2017-11-03T06:52:08Z", - "id": 2793872, - "issues": [ - { - "id": 270891101, - "labels": ["dependency"], - "number": 34, - "title": "Update boom", - "url": "https://github.com/hapijs/call/issues/34" - } - ], - "number": 13, - "url": "https://github.com/hapijs/call/milestone/13", - "version": "5.0.1" - }, - { - "date": "2017-09-26T06:13:48Z", - "id": 2546741, - "issues": [ - { - "id": 260501822, - "labels": ["breaking changes"], - "number": 33, - "title": "Node 8", - "url": "https://github.com/hapijs/call/issues/33" - } - ], - "number": 12, - "url": "https://github.com/hapijs/call/milestone/12", - "version": "5.0.0" - }, - { - "date": "2020-02-13T19:49:15Z", - "id": 4162828, - "issues": [ - { - "id": 564911945, - "labels": ["bug"], - "number": 58, - "title": "Check method exists", - "url": "https://github.com/hapijs/call/issues/58" - } - ], - "number": 18, - "url": "https://github.com/hapijs/call/milestone/18", - "version": "4.1.1" - }, - { - "date": "2019-03-22T06:11:06Z", - "id": 4162827, - "issues": [ - { - "id": 424061147, - "labels": ["lts"], - "number": 40, - "title": "Commercial version of v4 branch", - "url": "https://github.com/hapijs/call/issues/40" - } - ], - "number": 17, - "url": "https://github.com/hapijs/call/milestone/17", - "version": "4.1.0" - }, - { - "date": "2017-05-28T05:58:30Z", - "id": 2399111, - "issues": [ - { - "id": 231848669, - "labels": ["dependency"], - "number": 32, - "title": "Update deps.", - "url": "https://github.com/hapijs/call/issues/32" - } - ], - "number": 11, - "url": "https://github.com/hapijs/call/milestone/11", - "version": "4.0.2" - }, - { - "date": "2017-03-20T20:44:53Z", - "id": 2165085, - "issues": [ - { - "id": 208859594, - "labels": ["bug"], - "number": 29, - "title": "Apply path segment normalization", - "url": "https://github.com/hapijs/call/pull/29" - }, - { - "id": 207262414, - "labels": ["bug"], + { + "date": "2020-11-18T03:40:51Z", + "id": 5088090, + "issues": [ + { + "id": 709587135, + "labels": [], + "number": 62, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/call/pull/62" + } + ], "number": 28, - "title": "No \"Path Segment Normalization\"?", - "url": "https://github.com/hapijs/call/issues/28" - } - ], - "number": 10, - "url": "https://github.com/hapijs/call/milestone/10", - "version": "4.0.1" - }, - { - "date": "2016-11-29T23:41:49Z", - "id": 2162634, - "issues": [ - { - "id": 181883501, - "labels": ["breaking changes", "bug"], - "number": 24, - "title": "{path*} segments disappear when empty", - "url": "https://github.com/hapijs/call/issues/24" - } - ], - "number": 9, - "url": "https://github.com/hapijs/call/milestone/9", - "version": "4.0.0" - }, - { - "date": "2016-11-29T01:51:02Z", - "id": 1907950, - "issues": [ - { - "id": 192167038, - "labels": ["dependency"], + "url": "https://github.com/hapijs/call/milestone/28", + "version": "8.0.1" + }, + { + "date": "2020-02-10T08:57:02Z", + "id": 5087621, + "issues": [ + { + "id": 562411665, + "labels": ["breaking changes"], + "number": 56, + "title": "Switch tables to maps", + "url": "https://github.com/hapijs/call/issues/56" + } + ], + "number": 27, + "url": "https://github.com/hapijs/call/milestone/27", + "version": "8.0.0" + }, + { + "date": "2020-02-10T05:41:04Z", + "id": 4973175, + "issues": [ + { + "id": 562337121, + "labels": ["non issue"], + "number": 55, + "title": "Switch to use maps", + "url": "https://github.com/hapijs/call/issues/55" + } + ], "number": 26, - "title": "Update deps", - "url": "https://github.com/hapijs/call/issues/26" - } - ], - "number": 8, - "url": "https://github.com/hapijs/call/milestone/8", - "version": "3.0.4" - }, - { - "date": "2016-07-27T19:27:19Z", - "id": 1862375, - "issues": [ - { - "id": 167935502, - "labels": ["documentation"], + "url": "https://github.com/hapijs/call/milestone/26", + "version": "7.0.1" + }, + { + "date": "2020-01-04T22:38:39Z", + "id": 4973174, + "issues": [ + { + "id": 545340358, + "labels": ["breaking changes", "dependency"], + "number": 54, + "title": "Only node 12", + "url": "https://github.com/hapijs/call/issues/54" + } + ], + "number": 25, + "url": "https://github.com/hapijs/call/milestone/25", + "version": "7.0.0" + }, + { + "date": "2019-11-01T22:12:31Z", + "id": 4800345, + "issues": [ + { + "id": 516372482, + "labels": ["non issue"], + "number": 52, + "title": "Special case '/'", + "url": "https://github.com/hapijs/call/issues/52" + } + ], "number": 23, - "title": "npmignore", - "url": "https://github.com/hapijs/call/issues/23" - } - ], - "number": 7, - "url": "https://github.com/hapijs/call/milestone/7", - "version": "3.0.3" - }, - { - "date": "2016-07-04T04:14:46Z", - "id": 1777297, - "issues": [ - { - "id": 162536403, - "labels": ["bug", "security"], + "url": "https://github.com/hapijs/call/milestone/23", + "version": "6.0.1" + }, + { + "date": "2019-10-30T23:54:22Z", + "id": 4800344, + "issues": [ + { + "id": 515053533, + "labels": ["feature"], + "number": 51, + "title": "Improve performance", + "url": "https://github.com/hapijs/call/issues/51" + }, + { + "id": 515053384, + "labels": ["breaking changes", "dependency"], + "number": 50, + "title": "Drop node 8", + "url": "https://github.com/hapijs/call/issues/50" + } + ], + "number": 22, + "url": "https://github.com/hapijs/call/milestone/22", + "version": "6.0.0" + }, + { + "date": "2020-02-13T19:45:13Z", + "id": 4800343, + "issues": [ + { + "id": 564909227, + "labels": ["bug"], + "number": 57, + "title": "Check method exists", + "url": "https://github.com/hapijs/call/issues/57" + } + ], "number": 21, - "title": "Fix empty segment bug", - "url": "https://github.com/hapijs/call/pull/21" - } - ], - "number": 6, - "url": "https://github.com/hapijs/call/milestone/6", - "version": "3.0.2" - }, - { - "date": "2016-05-19T18:07:15Z", - "id": 1387510, - "issues": [ - { - "id": 155616371, - "labels": ["test", "documentation", "dependency"], + "url": "https://github.com/hapijs/call/milestone/21", + "version": "5.1.3" + }, + { + "date": "2019-10-30T23:48:27Z", + "id": 4571381, + "issues": [ + { + "id": 511558453, + "labels": ["bug"], + "number": 49, + "title": "Fix typo: wilcard -> wildcard", + "url": "https://github.com/hapijs/call/pull/49" + } + ], "number": 20, - "title": "Test on node v6, update dependencies", - "url": "https://github.com/hapijs/call/pull/20" - }, - { - "id": 112832683, - "labels": ["bug"], + "url": "https://github.com/hapijs/call/milestone/20", + "version": "5.1.2" + }, + { + "date": "2019-08-14T05:02:31Z", + "id": 4185543, + "issues": [ + { + "id": 480482031, + "labels": ["dependency"], + "number": 42, + "title": "Update deps", + "url": "https://github.com/hapijs/call/issues/42" + } + ], + "number": 19, + "url": "https://github.com/hapijs/call/milestone/19", + "version": "5.1.1" + }, + { + "date": "2019-03-30T20:46:45Z", + "id": 3792173, + "issues": [ + { + "id": 427326182, + "labels": ["dependency"], + "number": 41, + "title": "Change module namespace", + "url": "https://github.com/hapijs/call/issues/41" + } + ], "number": 16, - "title": "fix TypeError if path /constructor/foo is accessed", - "url": "https://github.com/hapijs/call/pull/16" - } - ], - "number": 5, - "url": "https://github.com/hapijs/call/milestone/5", - "version": "3.0.1" - }, - { - "date": "2015-11-01T19:45:59Z", - "id": 1184036, - "issues": [ - { - "id": 114486265, - "labels": ["breaking changes"], - "number": 17, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/call/issues/17" - } - ], - "number": 4, - "url": "https://github.com/hapijs/call/milestone/4", - "version": "3.0.0" - }, - { - "date": "2015-06-28T03:31:29Z", - "id": 877225, - "issues": [ - { - "id": 91545060, - "labels": ["documentation"], + "url": "https://github.com/hapijs/call/milestone/16", + "version": "5.1.0" + }, + { + "date": "2018-11-03T00:18:57Z", + "id": 3787551, + "issues": [ + { + "id": 377000797, + "labels": ["non issue"], + "number": 37, + "title": "Remove engines", + "url": "https://github.com/hapijs/call/issues/37" + } + ], + "number": 15, + "url": "https://github.com/hapijs/call/milestone/15", + "version": "5.0.3" + }, + { + "date": "2018-11-01T07:48:36Z", + "id": 2885250, + "issues": [ + { + "id": 376288492, + "labels": ["dependency"], + "number": 36, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/call/issues/36" + } + ], "number": 14, - "title": "Update project style", - "url": "https://github.com/hapijs/call/issues/14" - } - ], - "number": 3, - "url": "https://github.com/hapijs/call/milestone/3", - "version": "2.0.2" - }, - { - "date": "2014-11-23T08:42:01Z", - "id": 877224, - "issues": [ - { - "id": 49818880, - "labels": ["feature"], + "url": "https://github.com/hapijs/call/milestone/14", + "version": "5.0.2" + }, + { + "date": "2017-11-03T06:52:08Z", + "id": 2793872, + "issues": [ + { + "id": 270891101, + "labels": ["dependency"], + "number": 34, + "title": "Update boom", + "url": "https://github.com/hapijs/call/issues/34" + } + ], + "number": 13, + "url": "https://github.com/hapijs/call/milestone/13", + "version": "5.0.1" + }, + { + "date": "2017-09-26T06:13:48Z", + "id": 2546741, + "issues": [ + { + "id": 260501822, + "labels": ["breaking changes"], + "number": 33, + "title": "Node 8", + "url": "https://github.com/hapijs/call/issues/33" + } + ], + "number": 12, + "url": "https://github.com/hapijs/call/milestone/12", + "version": "5.0.0" + }, + { + "date": "2020-02-13T19:49:15Z", + "id": 4162828, + "issues": [ + { + "id": 564911945, + "labels": ["bug"], + "number": 58, + "title": "Check method exists", + "url": "https://github.com/hapijs/call/issues/58" + } + ], + "number": 18, + "url": "https://github.com/hapijs/call/milestone/18", + "version": "4.1.1" + }, + { + "date": "2019-03-22T06:11:06Z", + "id": 4162827, + "issues": [ + { + "id": 424061147, + "labels": ["lts"], + "number": 40, + "title": "Commercial version of v4 branch", + "url": "https://github.com/hapijs/call/issues/40" + } + ], + "number": 17, + "url": "https://github.com/hapijs/call/milestone/17", + "version": "4.1.0" + }, + { + "date": "2017-05-28T05:58:30Z", + "id": 2399111, + "issues": [ + { + "id": 231848669, + "labels": ["dependency"], + "number": 32, + "title": "Update deps.", + "url": "https://github.com/hapijs/call/issues/32" + } + ], "number": 11, - "title": "Performance tweaks", - "url": "https://github.com/hapijs/call/issues/11" - } - ], - "number": 2, - "url": "https://github.com/hapijs/call/milestone/2", - "version": "2.0.1" - }, - { - "date": "2014-11-23T08:41:31Z", - "id": 811763, - "issues": [ - { - "id": 49719970, - "labels": ["feature"], + "url": "https://github.com/hapijs/call/milestone/11", + "version": "4.0.2" + }, + { + "date": "2017-03-20T20:44:53Z", + "id": 2165085, + "issues": [ + { + "id": 208859594, + "labels": ["bug"], + "number": 29, + "title": "Apply path segment normalization", + "url": "https://github.com/hapijs/call/pull/29" + }, + { + "id": 207262414, + "labels": ["bug"], + "number": 28, + "title": "No \"Path Segment Normalization\"?", + "url": "https://github.com/hapijs/call/issues/28" + } + ], "number": 10, - "title": "Support route id", - "url": "https://github.com/hapijs/call/issues/10" - }, - { - "id": 49675454, - "labels": ["bug"], + "url": "https://github.com/hapijs/call/milestone/10", + "version": "4.0.1" + }, + { + "date": "2016-11-29T23:41:49Z", + "id": 2162634, + "issues": [ + { + "id": 181883501, + "labels": ["breaking changes", "bug"], + "number": 24, + "title": "{path*} segments disappear when empty", + "url": "https://github.com/hapijs/call/issues/24" + } + ], "number": 9, - "title": "/a/{p}/{p*} conflicts with /a/{p*} (which is not reachable)", - "url": "https://github.com/hapijs/call/issues/9" - }, - { - "id": 49673511, - "labels": ["bug"], + "url": "https://github.com/hapijs/call/milestone/9", + "version": "4.0.0" + }, + { + "date": "2016-11-29T01:51:02Z", + "id": 1907950, + "issues": [ + { + "id": 192167038, + "labels": ["dependency"], + "number": 26, + "title": "Update deps", + "url": "https://github.com/hapijs/call/issues/26" + } + ], "number": 8, - "title": "'/a/b/{p*}' is more specific than '/{p*5}'", - "url": "https://github.com/hapijs/call/issues/8" - }, - { - "id": 49512259, - "labels": ["bug"], + "url": "https://github.com/hapijs/call/milestone/8", + "version": "3.0.4" + }, + { + "date": "2016-07-27T19:27:19Z", + "id": 1862375, + "issues": [ + { + "id": 167935502, + "labels": ["documentation"], + "number": 23, + "title": "npmignore", + "url": "https://github.com/hapijs/call/issues/23" + } + ], "number": 7, - "title": "/a/b/{p*} is more specific than /a/{b}/{c}", - "url": "https://github.com/hapijs/call/issues/7" - }, - { - "id": 49511928, - "labels": ["bug"], + "url": "https://github.com/hapijs/call/milestone/7", + "version": "3.0.3" + }, + { + "date": "2016-07-04T04:14:46Z", + "id": 1777297, + "issues": [ + { + "id": 162536403, + "labels": ["bug", "security"], + "number": 21, + "title": "Fix empty segment bug", + "url": "https://github.com/hapijs/call/pull/21" + } + ], "number": 6, - "title": "'/a/{b*}' is less specific than '/a/{b}/{c*}'", - "url": "https://github.com/hapijs/call/issues/6" - }, - { - "id": 47051533, - "labels": ["feature"], + "url": "https://github.com/hapijs/call/milestone/6", + "version": "3.0.2" + }, + { + "date": "2016-05-19T18:07:15Z", + "id": 1387510, + "issues": [ + { + "id": 155616371, + "labels": ["test", "documentation", "dependency"], + "number": 20, + "title": "Test on node v6, update dependencies", + "url": "https://github.com/hapijs/call/pull/20" + }, + { + "id": 112832683, + "labels": ["bug"], + "number": 16, + "title": "fix TypeError if path /constructor/foo is accessed", + "url": "https://github.com/hapijs/call/pull/16" + } + ], + "number": 5, + "url": "https://github.com/hapijs/call/milestone/5", + "version": "3.0.1" + }, + { + "date": "2015-11-01T19:45:59Z", + "id": 1184036, + "issues": [ + { + "id": 114486265, + "labels": ["breaking changes"], + "number": 17, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/call/issues/17" + } + ], + "number": 4, + "url": "https://github.com/hapijs/call/milestone/4", + "version": "3.0.0" + }, + { + "date": "2015-06-28T03:31:29Z", + "id": 877225, + "issues": [ + { + "id": 91545060, + "labels": ["documentation"], + "number": 14, + "title": "Update project style", + "url": "https://github.com/hapijs/call/issues/14" + } + ], "number": 3, - "title": "Support for flexible routes", - "url": "https://github.com/hapijs/call/issues/3" - }, - { - "id": 46978014, - "labels": ["bug"], + "url": "https://github.com/hapijs/call/milestone/3", + "version": "2.0.2" + }, + { + "date": "2014-11-23T08:42:01Z", + "id": 877224, + "issues": [ + { + "id": 49818880, + "labels": ["feature"], + "number": 11, + "title": "Performance tweaks", + "url": "https://github.com/hapijs/call/issues/11" + } + ], "number": 2, - "title": "Match case-insensitive paths with no params", - "url": "https://github.com/hapijs/call/pull/2" - } - ], - "number": 1, - "url": "https://github.com/hapijs/call/milestone/1", - "version": "2.0.0" - } + "url": "https://github.com/hapijs/call/milestone/2", + "version": "2.0.1" + }, + { + "date": "2014-11-23T08:41:31Z", + "id": 811763, + "issues": [ + { + "id": 49719970, + "labels": ["feature"], + "number": 10, + "title": "Support route id", + "url": "https://github.com/hapijs/call/issues/10" + }, + { + "id": 49675454, + "labels": ["bug"], + "number": 9, + "title": "/a/{p}/{p*} conflicts with /a/{p*} (which is not reachable)", + "url": "https://github.com/hapijs/call/issues/9" + }, + { + "id": 49673511, + "labels": ["bug"], + "number": 8, + "title": "'/a/b/{p*}' is more specific than '/{p*5}'", + "url": "https://github.com/hapijs/call/issues/8" + }, + { + "id": 49512259, + "labels": ["bug"], + "number": 7, + "title": "/a/b/{p*} is more specific than /a/{b}/{c}", + "url": "https://github.com/hapijs/call/issues/7" + }, + { + "id": 49511928, + "labels": ["bug"], + "number": 6, + "title": "'/a/{b*}' is less specific than '/a/{b}/{c*}'", + "url": "https://github.com/hapijs/call/issues/6" + }, + { + "id": 47051533, + "labels": ["feature"], + "number": 3, + "title": "Support for flexible routes", + "url": "https://github.com/hapijs/call/issues/3" + }, + { + "id": 46978014, + "labels": ["bug"], + "number": 2, + "title": "Match case-insensitive paths with no params", + "url": "https://github.com/hapijs/call/pull/2" + } + ], + "number": 1, + "url": "https://github.com/hapijs/call/milestone/1", + "version": "2.0.0" + } ] diff --git a/generated/modules/call/info.json b/generated/modules/call/info.json index 630bfff7..7ef74023 100644 --- a/generated/modules/call/info.json +++ b/generated/modules/call/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 27, - "isPlugin": false, - "link": "https://github.com/hapijs/call", - "name": "call", - "package": "@hapi/call", - "slogan": "Simple HTTP Router.", - "sloganHtml": "Simple HTTP Router.", - "stars": 37, - "updated": "2024-10-23T15:38:49Z", - "versions": [ - { - "branch": "v9.0.1", - "license": "BSD", - "name": "9.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["9.0.1"], - "latestVersion": "9.x.x" + "api": true, + "forks": 27, + "isPlugin": false, + "latestVersion": "9.x.x", + "link": "https://github.com/hapijs/call", + "name": "call", + "package": "@hapi/call", + "slogan": "Simple HTTP Router.", + "sloganHtml": "Simple HTTP Router.", + "stars": 37, + "updated": "2024-10-23T15:38:49Z", + "versions": [ + { + "branch": "v9.0.1", + "license": "BSD", + "name": "9.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["9.0.1"] } diff --git a/generated/modules/catbox-memcached/changelog.json b/generated/modules/catbox-memcached/changelog.json index c8b7def8..930376a7 100644 --- a/generated/modules/catbox-memcached/changelog.json +++ b/generated/modules/catbox-memcached/changelog.json @@ -1,121 +1,121 @@ [ - { - "date": "2020-01-04T23:47:47Z", - "id": 4973204, - "issues": [ - { - "id": 545346428, - "labels": ["breaking changes", "dependency"], - "number": 44, - "title": "Only node 12", - "url": "https://github.com/hapijs/catbox-memcached/issues/44" - } - ], - "number": 8, - "url": "https://github.com/hapijs/catbox-memcached/milestone/8", - "version": "3.0.0" - }, - { - "date": "2019-08-14T05:13:21Z", - "id": 4247472, - "issues": [ - { - "id": 480484206, - "labels": ["dependency"], - "number": 38, - "title": "Update deps", - "url": "https://github.com/hapijs/catbox-memcached/issues/38" - } - ], - "number": 6, - "url": "https://github.com/hapijs/catbox-memcached/milestone/6", - "version": "2.1.1" - }, - { - "date": "2019-04-22T05:34:34Z", - "id": 3811305, - "issues": [ - { - "id": 435603867, - "labels": ["dependency"], - "number": 35, - "title": "Change module namespace", - "url": "https://github.com/hapijs/catbox-memcached/issues/35" - } - ], - "number": 5, - "url": "https://github.com/hapijs/catbox-memcached/milestone/5", - "version": "2.1.0" - }, - { - "date": "2018-11-11T01:57:52Z", - "id": 3811304, - "issues": [ - { - "id": 173417307, - "labels": ["bug"], - "number": 21, - "title": "Remove test connections", - "url": "https://github.com/hapijs/catbox-memcached/issues/21" - } - ], - "number": 4, - "url": "https://github.com/hapijs/catbox-memcached/milestone/4", - "version": "2.0.5" - }, - { - "date": "2018-11-11T01:50:38Z", - "id": 874036, - "issues": [ - { - "id": 109089751, - "labels": ["test", "dependency"], - "number": 17, - "title": "upgrade to lab 6 minor fixes license fix", - "url": "https://github.com/hapijs/catbox-memcached/pull/17" - }, - { - "id": 46658630, - "labels": ["bug"], - "number": 9, - "title": "Using catbox-memcache with yar, response body is replaced with `true`", - "url": "https://github.com/hapijs/catbox-memcached/issues/9" - } - ], - "number": 3, - "url": "https://github.com/hapijs/catbox-memcached/milestone/3", - "version": "1.1.1" - }, - { - "date": "2014-11-20T10:53:48Z", - "id": 740870, - "issues": [ - { - "id": 40491890, - "labels": ["bug"], + { + "date": "2020-01-04T23:47:47Z", + "id": 4973204, + "issues": [ + { + "id": 545346428, + "labels": ["breaking changes", "dependency"], + "number": 44, + "title": "Only node 12", + "url": "https://github.com/hapijs/catbox-memcached/issues/44" + } + ], + "number": 8, + "url": "https://github.com/hapijs/catbox-memcached/milestone/8", + "version": "3.0.0" + }, + { + "date": "2019-08-14T05:13:21Z", + "id": 4247472, + "issues": [ + { + "id": 480484206, + "labels": ["dependency"], + "number": 38, + "title": "Update deps", + "url": "https://github.com/hapijs/catbox-memcached/issues/38" + } + ], + "number": 6, + "url": "https://github.com/hapijs/catbox-memcached/milestone/6", + "version": "2.1.1" + }, + { + "date": "2019-04-22T05:34:34Z", + "id": 3811305, + "issues": [ + { + "id": 435603867, + "labels": ["dependency"], + "number": 35, + "title": "Change module namespace", + "url": "https://github.com/hapijs/catbox-memcached/issues/35" + } + ], "number": 5, - "title": "Hapi hangs if the memcached server is down", - "url": "https://github.com/hapijs/catbox-memcached/issues/5" - } - ], - "number": 2, - "url": "https://github.com/hapijs/catbox-memcached/milestone/2", - "version": "1.0.3" - }, - { - "date": "2014-08-03T06:32:01Z", - "id": 740869, - "issues": [ - { - "id": 39364577, - "labels": ["documentation"], + "url": "https://github.com/hapijs/catbox-memcached/milestone/5", + "version": "2.1.0" + }, + { + "date": "2018-11-11T01:57:52Z", + "id": 3811304, + "issues": [ + { + "id": 173417307, + "labels": ["bug"], + "number": 21, + "title": "Remove test connections", + "url": "https://github.com/hapijs/catbox-memcached/issues/21" + } + ], "number": 4, - "title": "Rename spumko to hapijs", - "url": "https://github.com/hapijs/catbox-memcached/issues/4" - } - ], - "number": 1, - "url": "https://github.com/hapijs/catbox-memcached/milestone/1", - "version": "1.0.2" - } + "url": "https://github.com/hapijs/catbox-memcached/milestone/4", + "version": "2.0.5" + }, + { + "date": "2018-11-11T01:50:38Z", + "id": 874036, + "issues": [ + { + "id": 109089751, + "labels": ["test", "dependency"], + "number": 17, + "title": "upgrade to lab 6 minor fixes license fix", + "url": "https://github.com/hapijs/catbox-memcached/pull/17" + }, + { + "id": 46658630, + "labels": ["bug"], + "number": 9, + "title": "Using catbox-memcache with yar, response body is replaced with `true`", + "url": "https://github.com/hapijs/catbox-memcached/issues/9" + } + ], + "number": 3, + "url": "https://github.com/hapijs/catbox-memcached/milestone/3", + "version": "1.1.1" + }, + { + "date": "2014-11-20T10:53:48Z", + "id": 740870, + "issues": [ + { + "id": 40491890, + "labels": ["bug"], + "number": 5, + "title": "Hapi hangs if the memcached server is down", + "url": "https://github.com/hapijs/catbox-memcached/issues/5" + } + ], + "number": 2, + "url": "https://github.com/hapijs/catbox-memcached/milestone/2", + "version": "1.0.3" + }, + { + "date": "2014-08-03T06:32:01Z", + "id": 740869, + "issues": [ + { + "id": 39364577, + "labels": ["documentation"], + "number": 4, + "title": "Rename spumko to hapijs", + "url": "https://github.com/hapijs/catbox-memcached/issues/4" + } + ], + "number": 1, + "url": "https://github.com/hapijs/catbox-memcached/milestone/1", + "version": "1.0.2" + } ] diff --git a/generated/modules/catbox-memcached/info.json b/generated/modules/catbox-memcached/info.json index 23dab06a..c7915264 100644 --- a/generated/modules/catbox-memcached/info.json +++ b/generated/modules/catbox-memcached/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 17, - "isPlugin": false, - "link": "https://github.com/hapijs/catbox-memcached", - "name": "catbox-memcached", - "package": "@hapi/catbox-memcached", - "slogan": "Memcached adaptor for [catbox](https://github.com/hapijs/catbox).", - "sloganHtml": "Memcached adaptor for catbox.", - "stars": 11, - "updated": "2022-11-06T04:05:12Z", - "versions": [ - { - "branch": "v4.0.0", - "license": "BSD", - "name": "4.0.0", - "node": ">= 16" - } - ], - "versionsArray": ["4.0.0"], - "latestVersion": "4.x.x" + "api": true, + "forks": 17, + "isPlugin": false, + "latestVersion": "4.x.x", + "link": "https://github.com/hapijs/catbox-memcached", + "name": "catbox-memcached", + "package": "@hapi/catbox-memcached", + "slogan": "Memcached adaptor for [catbox](https://github.com/hapijs/catbox).", + "sloganHtml": "Memcached adaptor for catbox.", + "stars": 11, + "updated": "2022-11-06T04:05:12Z", + "versions": [ + { + "branch": "v4.0.0", + "license": "BSD", + "name": "4.0.0", + "node": ">= 16" + } + ], + "versionsArray": ["4.0.0"] } diff --git a/generated/modules/catbox-memory/changelog.json b/generated/modules/catbox-memory/changelog.json index 5aa0e7be..a92cb20d 100644 --- a/generated/modules/catbox-memory/changelog.json +++ b/generated/modules/catbox-memory/changelog.json @@ -1,610 +1,610 @@ [ - { - "date": "2024-06-12T07:47:17Z", - "id": 11174568, - "issues": [ - { - "id": 2326839466, - "labels": ["types"], - "number": 90, - "title": "feat: 🎸 bring in typings from DT", - "url": "https://github.com/hapijs/catbox-memory/pull/90" - } - ], - "number": 31, - "url": "https://github.com/hapijs/catbox-memory/milestone/31", - "version": "6.0.2" - }, - { - "date": "2023-02-11T20:53:06Z", - "id": 7956512, - "issues": [ - { - "id": 1551775886, - "labels": ["dependency"], - "number": 87, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/catbox-memory/pull/87" - } - ], - "number": 30, - "url": "https://github.com/hapijs/catbox-memory/milestone/30", - "version": "6.0.1" - }, - { - "date": "2023-02-11T20:53:04Z", - "id": 7956511, - "issues": [ - { - "id": 1229112091, - "labels": ["breaking changes", "dependency"], - "number": 86, - "title": "Support node v18 and drop node v12, make exports ESM-friendly", - "url": "https://github.com/hapijs/catbox-memory/pull/86" - } - ], - "number": 29, - "url": "https://github.com/hapijs/catbox-memory/milestone/29", - "version": "6.0.0" - }, - { - "date": "2021-04-09T14:32:33Z", - "id": 4973210, - "issues": [ - { - "id": 854343814, - "labels": ["bug"], - "number": 83, - "title": "fix: make class extendable", - "url": "https://github.com/hapijs/catbox-memory/pull/83" - }, - { - "id": 709588185, - "labels": [], - "number": 81, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/catbox-memory/pull/81" - } - ], - "number": 27, - "url": "https://github.com/hapijs/catbox-memory/milestone/27", - "version": "5.0.1" - }, - { - "date": "2020-01-04T23:51:40Z", - "id": 4973209, - "issues": [ - { - "id": 545346706, - "labels": ["breaking changes", "dependency"], - "number": 77, - "title": "Only node 12", - "url": "https://github.com/hapijs/catbox-memory/issues/77" - } - ], - "number": 26, - "url": "https://github.com/hapijs/catbox-memory/milestone/26", - "version": "5.0.0" - }, - { - "date": "2019-08-14T05:16:56Z", - "id": 4192032, - "issues": [ - { - "id": 480484872, - "labels": ["dependency"], - "number": 69, - "title": "Update deps", - "url": "https://github.com/hapijs/catbox-memory/issues/69" - } - ], - "number": 22, - "url": "https://github.com/hapijs/catbox-memory/milestone/22", - "version": "4.1.1" - }, - { - "date": "2019-04-02T04:16:28Z", - "id": 3792179, - "issues": [ - { - "id": 428015540, - "labels": ["breaking changes"], - "number": 66, - "title": "Remove allowMixedContent option", - "url": "https://github.com/hapijs/catbox-memory/issues/66" - }, - { - "id": 428011636, - "labels": ["dependency"], - "number": 65, - "title": "Change module namespace", - "url": "https://github.com/hapijs/catbox-memory/issues/65" - }, - { - "id": 427016256, - "labels": ["bug"], - "number": 64, - "title": "Typo _timeDue vs _timerDue", - "url": "https://github.com/hapijs/catbox-memory/issues/64" - } - ], - "number": 19, - "url": "https://github.com/hapijs/catbox-memory/milestone/19", - "version": "4.1.0" - }, - { - "date": "2018-11-03T00:22:37Z", - "id": 3787568, - "issues": [ - { - "id": 377001016, - "labels": ["non issue"], - "number": 61, - "title": "Remove engines", - "url": "https://github.com/hapijs/catbox-memory/issues/61" - } - ], - "number": 16, - "url": "https://github.com/hapijs/catbox-memory/milestone/16", - "version": "4.0.1" - }, - { - "date": "2018-11-01T07:55:29Z", - "id": 3232157, - "issues": [ - { - "id": 376290023, - "labels": ["dependency"], - "number": 57, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/catbox-memory/issues/57" - }, - { - "id": 291387296, - "labels": ["feature"], - "number": 55, - "title": "Buffers can change while in cache", - "url": "https://github.com/hapijs/catbox-memory/issues/55" - }, - { - "id": 40329249, - "labels": ["feature", "breaking changes"], - "number": 8, - "title": "Large overhead from expires times when highly populated", - "url": "https://github.com/hapijs/catbox-memory/issues/8" - } - ], - "number": 15, - "url": "https://github.com/hapijs/catbox-memory/milestone/15", - "version": "4.0.0" - }, - { - "date": "2020-07-04T19:49:13Z", - "id": 4218721, - "issues": [], - "number": 24, - "url": "https://github.com/hapijs/catbox-memory/milestone/24", - "version": "3.2.2" - }, - { - "date": "2019-04-10T20:02:31Z", - "id": 4218718, - "issues": [ - { - "id": 431685969, - "labels": ["dependency"], - "number": 67, - "title": "Change module namespace v3", - "url": "https://github.com/hapijs/catbox-memory/issues/67" - } - ], - "number": 23, - "url": "https://github.com/hapijs/catbox-memory/milestone/23", - "version": "3.2.0" - }, - { - "date": "2018-11-03T00:22:38Z", - "id": 3792175, - "issues": [ - { - "id": 377000991, - "labels": ["non issue"], - "number": 60, - "title": "Remove engines", - "url": "https://github.com/hapijs/catbox-memory/issues/60" - } - ], - "number": 18, - "url": "https://github.com/hapijs/catbox-memory/milestone/18", - "version": "3.1.4" - }, - { - "date": "2018-11-02T23:51:52Z", - "id": 3788968, - "issues": [ - { - "id": 376542606, - "labels": ["dependency", "lts"], - "number": 58, - "title": "Update deps", - "url": "https://github.com/hapijs/catbox-memory/issues/58" - } - ], - "number": 17, - "url": "https://github.com/hapijs/catbox-memory/milestone/17", - "version": "3.1.3" - }, - { - "date": "2018-03-31T00:21:48Z", - "id": 2886665, - "issues": [ - { - "id": 307174415, - "labels": ["bug"], - "number": 56, - "title": "Remove new Buffer usage", - "url": "https://github.com/hapijs/catbox-memory/pull/56" - } - ], - "number": 14, - "url": "https://github.com/hapijs/catbox-memory/milestone/14", - "version": "3.1.2" - }, - { - "date": "2017-11-03T18:21:08Z", - "id": 2885231, - "issues": [ - { - "id": 271071868, - "labels": ["bug", "dependency"], - "number": 54, - "title": "Fix new Boom", - "url": "https://github.com/hapijs/catbox-memory/issues/54" - } - ], - "number": 13, - "url": "https://github.com/hapijs/catbox-memory/milestone/13", - "version": "3.1.1" - }, - { - "date": "2017-11-03T06:30:54Z", - "id": 2794088, - "issues": [ - { - "id": 270888337, - "labels": ["feature"], - "number": 53, - "title": "Replace hash with Map", - "url": "https://github.com/hapijs/catbox-memory/issues/53" - }, - { - "id": 270882433, - "labels": ["feature"], - "number": 52, - "title": "Sync client for catbox 10", - "url": "https://github.com/hapijs/catbox-memory/issues/52" - }, - { - "id": 261769688, - "labels": ["feature"], - "number": 48, - "title": "Use big-time for long timeout support", - "url": "https://github.com/hapijs/catbox-memory/pull/48" - } - ], - "number": 12, - "url": "https://github.com/hapijs/catbox-memory/milestone/12", - "version": "3.1.0" - }, - { - "date": "2017-09-26T08:32:25Z", - "id": 2093695, - "issues": [ - { - "id": 260536176, - "labels": ["breaking changes"], - "number": 47, - "title": "Node 8", - "url": "https://github.com/hapijs/catbox-memory/issues/47" - } - ], - "number": 11, - "url": "https://github.com/hapijs/catbox-memory/milestone/11", - "version": "3.0.0" - }, - { - "date": "2019-03-24T23:41:01Z", - "id": 4167560, - "issues": [ - { - "id": 424673809, - "labels": ["lts"], - "number": 63, - "title": "Commercial version of v2 branch", - "url": "https://github.com/hapijs/catbox-memory/issues/63" - } - ], - "number": 20, - "url": "https://github.com/hapijs/catbox-memory/milestone/20", - "version": "2.1.0" - }, - { - "date": "2016-10-26T00:31:03Z", - "id": 1813506, - "issues": [ - { - "id": 185267905, - "labels": ["test", "dependency"], - "number": 43, - "title": "Update deps", - "url": "https://github.com/hapijs/catbox-memory/pull/43" - }, - { - "id": 182483834, - "labels": ["bug"], - "number": 42, - "title": "fix: cancel timeouts on drop", - "url": "https://github.com/hapijs/catbox-memory/pull/42" - } - ], - "number": 10, - "url": "https://github.com/hapijs/catbox-memory/milestone/10", - "version": "2.0.4" - }, - { - "date": "2016-06-07T13:53:12Z", - "id": 1388862, - "issues": [ - { - "id": 158928573, - "labels": ["feature"], - "number": 38, - "title": "Add .npmignore", - "url": "https://github.com/hapijs/catbox-memory/issues/38" - }, - { - "id": 157498801, - "labels": ["documentation"], - "number": 37, - "title": "add note to readme about the limitation of ttl", - "url": "https://github.com/hapijs/catbox-memory/pull/37" - } - ], - "number": 9, - "url": "https://github.com/hapijs/catbox-memory/milestone/9", - "version": "2.0.3" - }, - { - "date": "2015-11-02T14:04:07Z", - "id": 1261292, - "issues": [ - { - "id": 114503757, - "labels": ["dependency"], - "number": 33, - "title": "Update hapijs/catbox to 7.0.0", - "url": "https://github.com/hapijs/catbox-memory/issues/33" - } - ], - "number": 8, - "url": "https://github.com/hapijs/catbox-memory/milestone/8", - "version": "2.0.1" - }, - { - "date": "2015-08-18T19:31:47Z", - "id": 842606, - "issues": [ - { - "id": 101731190, - "labels": ["dependency"], - "number": 32, - "title": "v1.1.2", - "url": "https://github.com/hapijs/catbox-memory/pull/32" - }, - { - "id": 65567972, - "labels": ["bug"], + { + "date": "2024-06-12T07:47:17Z", + "id": 11174568, + "issues": [ + { + "id": 2326839466, + "labels": ["types"], + "number": 90, + "title": "feat: 🎸 bring in typings from DT", + "url": "https://github.com/hapijs/catbox-memory/pull/90" + } + ], + "number": 31, + "url": "https://github.com/hapijs/catbox-memory/milestone/31", + "version": "6.0.2" + }, + { + "date": "2023-02-11T20:53:06Z", + "id": 7956512, + "issues": [ + { + "id": 1551775886, + "labels": ["dependency"], + "number": 87, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/catbox-memory/pull/87" + } + ], + "number": 30, + "url": "https://github.com/hapijs/catbox-memory/milestone/30", + "version": "6.0.1" + }, + { + "date": "2023-02-11T20:53:04Z", + "id": 7956511, + "issues": [ + { + "id": 1229112091, + "labels": ["breaking changes", "dependency"], + "number": 86, + "title": "Support node v18 and drop node v12, make exports ESM-friendly", + "url": "https://github.com/hapijs/catbox-memory/pull/86" + } + ], + "number": 29, + "url": "https://github.com/hapijs/catbox-memory/milestone/29", + "version": "6.0.0" + }, + { + "date": "2021-04-09T14:32:33Z", + "id": 4973210, + "issues": [ + { + "id": 854343814, + "labels": ["bug"], + "number": 83, + "title": "fix: make class extendable", + "url": "https://github.com/hapijs/catbox-memory/pull/83" + }, + { + "id": 709588185, + "labels": [], + "number": 81, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/catbox-memory/pull/81" + } + ], "number": 27, - "title": "Clean up timers when the cache is stopped.", - "url": "https://github.com/hapijs/catbox-memory/pull/27" - }, - { - "id": 59502343, - "labels": ["test"], + "url": "https://github.com/hapijs/catbox-memory/milestone/27", + "version": "5.0.1" + }, + { + "date": "2020-01-04T23:51:40Z", + "id": 4973209, + "issues": [ + { + "id": 545346706, + "labels": ["breaking changes", "dependency"], + "number": 77, + "title": "Only node 12", + "url": "https://github.com/hapijs/catbox-memory/issues/77" + } + ], "number": 26, - "title": "Remove Makefile in favor of npm scripts and enable linting", - "url": "https://github.com/hapijs/catbox-memory/pull/26" - }, - { - "id": 48546116, - "labels": ["non issue"], - "number": 24, - "title": "add node 0.11 to travis file", - "url": "https://github.com/hapijs/catbox-memory/pull/24" - } - ], - "number": 7, - "url": "https://github.com/hapijs/catbox-memory/milestone/7", - "version": "1.1.2" - }, - { - "date": "2014-10-30T14:33:24Z", - "id": 799815, - "issues": [ - { - "id": 46954907, - "labels": [], - "number": 23, - "title": "version 1.1.1. update to catbox 4 and lab 5 (replace chai with code)", - "url": "https://github.com/hapijs/catbox-memory/pull/23" - }, - { - "id": 46954343, - "labels": ["dependency"], + "url": "https://github.com/hapijs/catbox-memory/milestone/26", + "version": "5.0.0" + }, + { + "date": "2019-08-14T05:16:56Z", + "id": 4192032, + "issues": [ + { + "id": 480484872, + "labels": ["dependency"], + "number": 69, + "title": "Update deps", + "url": "https://github.com/hapijs/catbox-memory/issues/69" + } + ], "number": 22, - "title": "Update to Lab 5", - "url": "https://github.com/hapijs/catbox-memory/issues/22" - }, - { - "id": 46954293, - "labels": ["dependency"], - "number": 21, - "title": "Update to catbox 4", - "url": "https://github.com/hapijs/catbox-memory/issues/21" - } - ], - "number": 6, - "url": "https://github.com/hapijs/catbox-memory/milestone/6", - "version": "1.1.1" - }, - { - "date": "2014-09-11T17:31:19Z", - "id": 755318, - "issues": [ - { - "id": 42549630, - "labels": ["feature"], - "number": 17, - "title": "Bump version to 1.1.0", - "url": "https://github.com/hapijs/catbox-memory/pull/17" - }, - { - "id": 42549358, - "labels": ["feature"], + "url": "https://github.com/hapijs/catbox-memory/milestone/22", + "version": "4.1.1" + }, + { + "date": "2019-04-02T04:16:28Z", + "id": 3792179, + "issues": [ + { + "id": 428015540, + "labels": ["breaking changes"], + "number": 66, + "title": "Remove allowMixedContent option", + "url": "https://github.com/hapijs/catbox-memory/issues/66" + }, + { + "id": 428011636, + "labels": ["dependency"], + "number": 65, + "title": "Change module namespace", + "url": "https://github.com/hapijs/catbox-memory/issues/65" + }, + { + "id": 427016256, + "labels": ["bug"], + "number": 64, + "title": "Typo _timeDue vs _timerDue", + "url": "https://github.com/hapijs/catbox-memory/issues/64" + } + ], + "number": 19, + "url": "https://github.com/hapijs/catbox-memory/milestone/19", + "version": "4.1.0" + }, + { + "date": "2018-11-03T00:22:37Z", + "id": 3787568, + "issues": [ + { + "id": 377001016, + "labels": ["non issue"], + "number": 61, + "title": "Remove engines", + "url": "https://github.com/hapijs/catbox-memory/issues/61" + } + ], "number": 16, - "title": "Release 1.1.0", - "url": "https://github.com/hapijs/catbox-memory/issues/16" - }, - { - "id": 42319779, - "labels": ["feature"], + "url": "https://github.com/hapijs/catbox-memory/milestone/16", + "version": "4.0.1" + }, + { + "date": "2018-11-01T07:55:29Z", + "id": 3232157, + "issues": [ + { + "id": 376290023, + "labels": ["dependency"], + "number": 57, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/catbox-memory/issues/57" + }, + { + "id": 291387296, + "labels": ["feature"], + "number": 55, + "title": "Buffers can change while in cache", + "url": "https://github.com/hapijs/catbox-memory/issues/55" + }, + { + "id": 40329249, + "labels": ["feature", "breaking changes"], + "number": 8, + "title": "Large overhead from expires times when highly populated", + "url": "https://github.com/hapijs/catbox-memory/issues/8" + } + ], "number": 15, - "title": "Add support for Buffers", - "url": "https://github.com/hapijs/catbox-memory/pull/15" - }, - { - "id": 41133545, - "labels": ["documentation"], + "url": "https://github.com/hapijs/catbox-memory/milestone/15", + "version": "4.0.0" + }, + { + "date": "2020-07-04T19:49:13Z", + "id": 4218721, + "issues": [], + "number": 24, + "url": "https://github.com/hapijs/catbox-memory/milestone/24", + "version": "3.2.2" + }, + { + "date": "2019-04-10T20:02:31Z", + "id": 4218718, + "issues": [ + { + "id": 431685969, + "labels": ["dependency"], + "number": 67, + "title": "Change module namespace v3", + "url": "https://github.com/hapijs/catbox-memory/issues/67" + } + ], + "number": 23, + "url": "https://github.com/hapijs/catbox-memory/milestone/23", + "version": "3.2.0" + }, + { + "date": "2018-11-03T00:22:38Z", + "id": 3792175, + "issues": [ + { + "id": 377000991, + "labels": ["non issue"], + "number": 60, + "title": "Remove engines", + "url": "https://github.com/hapijs/catbox-memory/issues/60" + } + ], + "number": 18, + "url": "https://github.com/hapijs/catbox-memory/milestone/18", + "version": "3.1.4" + }, + { + "date": "2018-11-02T23:51:52Z", + "id": 3788968, + "issues": [ + { + "id": 376542606, + "labels": ["dependency", "lts"], + "number": 58, + "title": "Update deps", + "url": "https://github.com/hapijs/catbox-memory/issues/58" + } + ], + "number": 17, + "url": "https://github.com/hapijs/catbox-memory/milestone/17", + "version": "3.1.3" + }, + { + "date": "2018-03-31T00:21:48Z", + "id": 2886665, + "issues": [ + { + "id": 307174415, + "labels": ["bug"], + "number": 56, + "title": "Remove new Buffer usage", + "url": "https://github.com/hapijs/catbox-memory/pull/56" + } + ], "number": 14, - "title": "Add build status to README", - "url": "https://github.com/hapijs/catbox-memory/pull/14" - }, - { - "id": 41082457, - "labels": ["documentation"], + "url": "https://github.com/hapijs/catbox-memory/milestone/14", + "version": "3.1.2" + }, + { + "date": "2017-11-03T18:21:08Z", + "id": 2885231, + "issues": [ + { + "id": 271071868, + "labels": ["bug", "dependency"], + "number": 54, + "title": "Fix new Boom", + "url": "https://github.com/hapijs/catbox-memory/issues/54" + } + ], "number": 13, - "title": "Add build status to readme", - "url": "https://github.com/hapijs/catbox-memory/issues/13" - }, - { - "id": 41080095, - "labels": ["documentation"], + "url": "https://github.com/hapijs/catbox-memory/milestone/13", + "version": "3.1.1" + }, + { + "date": "2017-11-03T06:30:54Z", + "id": 2794088, + "issues": [ + { + "id": 270888337, + "labels": ["feature"], + "number": 53, + "title": "Replace hash with Map", + "url": "https://github.com/hapijs/catbox-memory/issues/53" + }, + { + "id": 270882433, + "labels": ["feature"], + "number": 52, + "title": "Sync client for catbox 10", + "url": "https://github.com/hapijs/catbox-memory/issues/52" + }, + { + "id": 261769688, + "labels": ["feature"], + "number": 48, + "title": "Use big-time for long timeout support", + "url": "https://github.com/hapijs/catbox-memory/pull/48" + } + ], "number": 12, - "title": "Update owner", - "url": "https://github.com/hapijs/catbox-memory/pull/12" - }, - { - "id": 35935900, - "labels": ["feature"], - "number": 5, - "title": "Option to store buffer data ", - "url": "https://github.com/hapijs/catbox-memory/pull/5" - } - ], - "number": 5, - "url": "https://github.com/hapijs/catbox-memory/milestone/5", - "version": "1.1.0" - }, - { - "date": "2014-08-15T17:30:16Z", - "id": 740856, - "issues": [ - { - "id": 40365124, - "labels": ["test"], + "url": "https://github.com/hapijs/catbox-memory/milestone/12", + "version": "3.1.0" + }, + { + "date": "2017-09-26T08:32:25Z", + "id": 2093695, + "issues": [ + { + "id": 260536176, + "labels": ["breaking changes"], + "number": 47, + "title": "Node 8", + "url": "https://github.com/hapijs/catbox-memory/issues/47" + } + ], "number": 11, - "title": "Up version and use lab 4", - "url": "https://github.com/hapijs/catbox-memory/pull/11" - }, - { - "id": 40362397, - "labels": ["bug"], + "url": "https://github.com/hapijs/catbox-memory/milestone/11", + "version": "3.0.0" + }, + { + "date": "2019-03-24T23:41:01Z", + "id": 4167560, + "issues": [ + { + "id": 424673809, + "labels": ["lts"], + "number": 63, + "title": "Commercial version of v2 branch", + "url": "https://github.com/hapijs/catbox-memory/issues/63" + } + ], + "number": 20, + "url": "https://github.com/hapijs/catbox-memory/milestone/20", + "version": "2.1.0" + }, + { + "date": "2016-10-26T00:31:03Z", + "id": 1813506, + "issues": [ + { + "id": 185267905, + "labels": ["test", "dependency"], + "number": 43, + "title": "Update deps", + "url": "https://github.com/hapijs/catbox-memory/pull/43" + }, + { + "id": 182483834, + "labels": ["bug"], + "number": 42, + "title": "fix: cancel timeouts on drop", + "url": "https://github.com/hapijs/catbox-memory/pull/42" + } + ], "number": 10, - "title": "Fix total byteSize tracking in connection", - "url": "https://github.com/hapijs/catbox-memory/pull/10" - }, - { - "id": 40359381, - "labels": ["feature"], + "url": "https://github.com/hapijs/catbox-memory/milestone/10", + "version": "2.0.4" + }, + { + "date": "2016-06-07T13:53:12Z", + "id": 1388862, + "issues": [ + { + "id": 158928573, + "labels": ["feature"], + "number": 38, + "title": "Add .npmignore", + "url": "https://github.com/hapijs/catbox-memory/issues/38" + }, + { + "id": 157498801, + "labels": ["documentation"], + "number": 37, + "title": "add note to readme about the limitation of ttl", + "url": "https://github.com/hapijs/catbox-memory/pull/37" + } + ], "number": 9, - "title": "Create named classes for cache objects", - "url": "https://github.com/hapijs/catbox-memory/pull/9" - }, - { - "id": 40328780, - "labels": ["bug"], + "url": "https://github.com/hapijs/catbox-memory/milestone/9", + "version": "2.0.3" + }, + { + "date": "2015-11-02T14:04:07Z", + "id": 1261292, + "issues": [ + { + "id": 114503757, + "labels": ["dependency"], + "number": 33, + "title": "Update hapijs/catbox to 7.0.0", + "url": "https://github.com/hapijs/catbox-memory/issues/33" + } + ], + "number": 8, + "url": "https://github.com/hapijs/catbox-memory/milestone/8", + "version": "2.0.1" + }, + { + "date": "2015-08-18T19:31:47Z", + "id": 842606, + "issues": [ + { + "id": 101731190, + "labels": ["dependency"], + "number": 32, + "title": "v1.1.2", + "url": "https://github.com/hapijs/catbox-memory/pull/32" + }, + { + "id": 65567972, + "labels": ["bug"], + "number": 27, + "title": "Clean up timers when the cache is stopped.", + "url": "https://github.com/hapijs/catbox-memory/pull/27" + }, + { + "id": 59502343, + "labels": ["test"], + "number": 26, + "title": "Remove Makefile in favor of npm scripts and enable linting", + "url": "https://github.com/hapijs/catbox-memory/pull/26" + }, + { + "id": 48546116, + "labels": ["non issue"], + "number": 24, + "title": "add node 0.11 to travis file", + "url": "https://github.com/hapijs/catbox-memory/pull/24" + } + ], "number": 7, - "title": "Memory limit does not restrict data size properly", - "url": "https://github.com/hapijs/catbox-memory/issues/7" - } - ], - "number": 4, - "url": "https://github.com/hapijs/catbox-memory/milestone/4", - "version": "1.0.5" - }, - { - "date": "2014-08-03T05:31:39Z", - "id": 687675, - "issues": [ - { - "id": 39363794, - "labels": ["documentation"], + "url": "https://github.com/hapijs/catbox-memory/milestone/7", + "version": "1.1.2" + }, + { + "date": "2014-10-30T14:33:24Z", + "id": 799815, + "issues": [ + { + "id": 46954907, + "labels": [], + "number": 23, + "title": "version 1.1.1. update to catbox 4 and lab 5 (replace chai with code)", + "url": "https://github.com/hapijs/catbox-memory/pull/23" + }, + { + "id": 46954343, + "labels": ["dependency"], + "number": 22, + "title": "Update to Lab 5", + "url": "https://github.com/hapijs/catbox-memory/issues/22" + }, + { + "id": 46954293, + "labels": ["dependency"], + "number": 21, + "title": "Update to catbox 4", + "url": "https://github.com/hapijs/catbox-memory/issues/21" + } + ], "number": 6, - "title": "Rename spumko to hapijs", - "url": "https://github.com/hapijs/catbox-memory/issues/6" - } - ], - "number": 3, - "url": "https://github.com/hapijs/catbox-memory/milestone/3", - "version": "1.0.4" - }, - { - "date": "2014-06-11T05:49:27Z", - "id": 665044, - "issues": [ - { - "id": 35453536, - "labels": ["non issue"], + "url": "https://github.com/hapijs/catbox-memory/milestone/6", + "version": "1.1.1" + }, + { + "date": "2014-09-11T17:31:19Z", + "id": 755318, + "issues": [ + { + "id": 42549630, + "labels": ["feature"], + "number": 17, + "title": "Bump version to 1.1.0", + "url": "https://github.com/hapijs/catbox-memory/pull/17" + }, + { + "id": 42549358, + "labels": ["feature"], + "number": 16, + "title": "Release 1.1.0", + "url": "https://github.com/hapijs/catbox-memory/issues/16" + }, + { + "id": 42319779, + "labels": ["feature"], + "number": 15, + "title": "Add support for Buffers", + "url": "https://github.com/hapijs/catbox-memory/pull/15" + }, + { + "id": 41133545, + "labels": ["documentation"], + "number": 14, + "title": "Add build status to README", + "url": "https://github.com/hapijs/catbox-memory/pull/14" + }, + { + "id": 41082457, + "labels": ["documentation"], + "number": 13, + "title": "Add build status to readme", + "url": "https://github.com/hapijs/catbox-memory/issues/13" + }, + { + "id": 41080095, + "labels": ["documentation"], + "number": 12, + "title": "Update owner", + "url": "https://github.com/hapijs/catbox-memory/pull/12" + }, + { + "id": 35935900, + "labels": ["feature"], + "number": 5, + "title": "Option to store buffer data ", + "url": "https://github.com/hapijs/catbox-memory/pull/5" + } + ], + "number": 5, + "url": "https://github.com/hapijs/catbox-memory/milestone/5", + "version": "1.1.0" + }, + { + "date": "2014-08-15T17:30:16Z", + "id": 740856, + "issues": [ + { + "id": 40365124, + "labels": ["test"], + "number": 11, + "title": "Up version and use lab 4", + "url": "https://github.com/hapijs/catbox-memory/pull/11" + }, + { + "id": 40362397, + "labels": ["bug"], + "number": 10, + "title": "Fix total byteSize tracking in connection", + "url": "https://github.com/hapijs/catbox-memory/pull/10" + }, + { + "id": 40359381, + "labels": ["feature"], + "number": 9, + "title": "Create named classes for cache objects", + "url": "https://github.com/hapijs/catbox-memory/pull/9" + }, + { + "id": 40328780, + "labels": ["bug"], + "number": 7, + "title": "Memory limit does not restrict data size properly", + "url": "https://github.com/hapijs/catbox-memory/issues/7" + } + ], "number": 4, - "title": "Move large ttl (over 32bit) check from catbox", - "url": "https://github.com/hapijs/catbox-memory/issues/4" - } - ], - "number": 2, - "url": "https://github.com/hapijs/catbox-memory/milestone/2", - "version": "1.0.3" - }, - { - "date": "2014-05-20T21:31:46Z", - "id": 665026, - "issues": [ - { - "id": 33929631, - "labels": [], + "url": "https://github.com/hapijs/catbox-memory/milestone/4", + "version": "1.0.5" + }, + { + "date": "2014-08-03T05:31:39Z", + "id": 687675, + "issues": [ + { + "id": 39363794, + "labels": ["documentation"], + "number": 6, + "title": "Rename spumko to hapijs", + "url": "https://github.com/hapijs/catbox-memory/issues/6" + } + ], + "number": 3, + "url": "https://github.com/hapijs/catbox-memory/milestone/3", + "version": "1.0.4" + }, + { + "date": "2014-06-11T05:49:27Z", + "id": 665044, + "issues": [ + { + "id": 35453536, + "labels": ["non issue"], + "number": 4, + "title": "Move large ttl (over 32bit) check from catbox", + "url": "https://github.com/hapijs/catbox-memory/issues/4" + } + ], "number": 2, - "title": "Bring coverage back to 100%", - "url": "https://github.com/hapijs/catbox-memory/issues/2" - }, - { - "id": 31613151, - "labels": ["bug"], + "url": "https://github.com/hapijs/catbox-memory/milestone/2", + "version": "1.0.3" + }, + { + "date": "2014-05-20T21:31:46Z", + "id": 665026, + "issues": [ + { + "id": 33929631, + "labels": [], + "number": 2, + "title": "Bring coverage back to 100%", + "url": "https://github.com/hapijs/catbox-memory/issues/2" + }, + { + "id": 31613151, + "labels": ["bug"], + "number": 1, + "title": "why peer depend instead of verify in parent", + "url": "https://github.com/hapijs/catbox-memory/issues/1" + } + ], "number": 1, - "title": "why peer depend instead of verify in parent", - "url": "https://github.com/hapijs/catbox-memory/issues/1" - } - ], - "number": 1, - "url": "https://github.com/hapijs/catbox-memory/milestone/1", - "version": "1.0.2" - } + "url": "https://github.com/hapijs/catbox-memory/milestone/1", + "version": "1.0.2" + } ] diff --git a/generated/modules/catbox-memory/info.json b/generated/modules/catbox-memory/info.json index 2bb3a259..f52cda73 100644 --- a/generated/modules/catbox-memory/info.json +++ b/generated/modules/catbox-memory/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 29, - "isPlugin": false, - "link": "https://github.com/hapijs/catbox-memory", - "name": "catbox-memory", - "package": "@hapi/catbox-memory", - "slogan": "Memory adaptor for [catbox](https://github.com/hapijs/catbox).", - "sloganHtml": "Memory adaptor for catbox.", - "stars": 33, - "updated": "2024-10-23T15:27:21Z", - "versions": [ - { - "branch": "v6.0.2", - "license": "BSD", - "name": "6.0.2", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.2"], - "latestVersion": "6.x.x" + "api": true, + "forks": 29, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/catbox-memory", + "name": "catbox-memory", + "package": "@hapi/catbox-memory", + "slogan": "Memory adaptor for [catbox](https://github.com/hapijs/catbox).", + "sloganHtml": "Memory adaptor for catbox.", + "stars": 33, + "updated": "2024-10-23T15:27:21Z", + "versions": [ + { + "branch": "v6.0.2", + "license": "BSD", + "name": "6.0.2", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.2"] } diff --git a/generated/modules/catbox-object/changelog.json b/generated/modules/catbox-object/changelog.json index 070aecc2..02044efe 100644 --- a/generated/modules/catbox-object/changelog.json +++ b/generated/modules/catbox-object/changelog.json @@ -1,66 +1,66 @@ [ - { - "date": "2023-02-11T20:43:44Z", - "id": 8207137, - "issues": [ - { - "id": 1551799762, - "labels": ["dependency"], - "number": 14, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/catbox-object/pull/14" - } - ], - "number": 5, - "url": "https://github.com/hapijs/catbox-object/milestone/5", - "version": "3.0.1" - }, - { - "date": "2022-07-19T01:07:18Z", - "id": 8207136, - "issues": [ - { - "id": 1307369682, - "labels": ["dependency", "breaking changes"], - "number": 13, - "title": "Support for node v18, change default export, ESM tests", - "url": "https://github.com/hapijs/catbox-object/pull/13" - } - ], - "number": 4, - "url": "https://github.com/hapijs/catbox-object/milestone/4", - "version": "3.0.0" - }, - { - "date": "2020-01-04T23:56:03Z", - "id": 4571408, - "issues": [ - { - "id": 545347051, - "labels": ["dependency", "breaking changes"], - "number": 6, - "title": "Only node 12", - "url": "https://github.com/hapijs/catbox-object/issues/6" - } - ], - "number": 2, - "url": "https://github.com/hapijs/catbox-object/milestone/2", - "version": "2.0.0" - }, - { - "date": "2019-08-14T05:23:12Z", - "id": 4571407, - "issues": [ - { - "id": 480486023, - "labels": ["dependency"], + { + "date": "2023-02-11T20:43:44Z", + "id": 8207137, + "issues": [ + { + "id": 1551799762, + "labels": ["dependency"], + "number": 14, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/catbox-object/pull/14" + } + ], + "number": 5, + "url": "https://github.com/hapijs/catbox-object/milestone/5", + "version": "3.0.1" + }, + { + "date": "2022-07-19T01:07:18Z", + "id": 8207136, + "issues": [ + { + "id": 1307369682, + "labels": ["dependency", "breaking changes"], + "number": 13, + "title": "Support for node v18, change default export, ESM tests", + "url": "https://github.com/hapijs/catbox-object/pull/13" + } + ], + "number": 4, + "url": "https://github.com/hapijs/catbox-object/milestone/4", + "version": "3.0.0" + }, + { + "date": "2020-01-04T23:56:03Z", + "id": 4571408, + "issues": [ + { + "id": 545347051, + "labels": ["dependency", "breaking changes"], + "number": 6, + "title": "Only node 12", + "url": "https://github.com/hapijs/catbox-object/issues/6" + } + ], + "number": 2, + "url": "https://github.com/hapijs/catbox-object/milestone/2", + "version": "2.0.0" + }, + { + "date": "2019-08-14T05:23:12Z", + "id": 4571407, + "issues": [ + { + "id": 480486023, + "labels": ["dependency"], + "number": 1, + "title": "Update deps", + "url": "https://github.com/hapijs/catbox-object/issues/1" + } + ], "number": 1, - "title": "Update deps", - "url": "https://github.com/hapijs/catbox-object/issues/1" - } - ], - "number": 1, - "url": "https://github.com/hapijs/catbox-object/milestone/1", - "version": "1.0.1" - } + "url": "https://github.com/hapijs/catbox-object/milestone/1", + "version": "1.0.1" + } ] diff --git a/generated/modules/catbox-object/info.json b/generated/modules/catbox-object/info.json index fe74c0a2..58ddaa15 100644 --- a/generated/modules/catbox-object/info.json +++ b/generated/modules/catbox-object/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 6, - "isPlugin": false, - "link": "https://github.com/hapijs/catbox-object", - "name": "catbox-object", - "package": "@hapi/catbox-object", - "slogan": "Object cache adaptor for [catbox](https://github.com/hapijs/catbox).", - "sloganHtml": "Object cache adaptor for catbox.", - "stars": 2, - "updated": "2024-10-23T15:26:43Z", - "versions": [ - { - "branch": "v3.0.1", - "license": "BSD", - "name": "3.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["3.0.1"], - "latestVersion": "3.x.x" + "api": true, + "forks": 6, + "isPlugin": false, + "latestVersion": "3.x.x", + "link": "https://github.com/hapijs/catbox-object", + "name": "catbox-object", + "package": "@hapi/catbox-object", + "slogan": "Object cache adaptor for [catbox](https://github.com/hapijs/catbox).", + "sloganHtml": "Object cache adaptor for catbox.", + "stars": 2, + "updated": "2024-10-23T15:26:43Z", + "versions": [ + { + "branch": "v3.0.1", + "license": "BSD", + "name": "3.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["3.0.1"] } diff --git a/generated/modules/catbox-redis/changelog.json b/generated/modules/catbox-redis/changelog.json index 09ee36cb..fcfda1f4 100644 --- a/generated/modules/catbox-redis/changelog.json +++ b/generated/modules/catbox-redis/changelog.json @@ -1,566 +1,571 @@ [ - { - "date": "2023-08-04T14:08:43Z", - "id": 9742778, - "issues": [ - { - "id": 1836786182, - "labels": ["types"], - "number": 128, - "title": "chore: enable lab type tests", - "url": "https://github.com/hapijs/catbox-redis/pull/128" - }, - { - "id": 1728985300, - "labels": ["types"], - "number": 126, - "title": "feat: 🎸 add and improve typings from DT", - "url": "https://github.com/hapijs/catbox-redis/pull/126" - } - ], - "number": 33, - "url": "https://github.com/hapijs/catbox-redis/milestone/33", - "version": "7.0.2" - }, - { - "date": "2023-02-11T20:47:35Z", - "id": 8594995, - "issues": [ - { - "id": 1551794468, - "labels": ["dependency"], - "number": 125, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/catbox-redis/pull/125" - } - ], - "number": 32, - "url": "https://github.com/hapijs/catbox-redis/milestone/32", - "version": "7.0.1" - }, - { - "date": "2022-10-29T20:22:54Z", - "id": 8572322, - "issues": [ - { - "id": 1420078139, - "labels": ["feature", "breaking changes", "test", "dependency"], - "number": 123, - "title": "Support for node v18, ESM tests, upgrade ioredis", - "url": "https://github.com/hapijs/catbox-redis/pull/123" - } - ], - "number": 31, - "url": "https://github.com/hapijs/catbox-redis/milestone/31", - "version": "7.0.0" - }, - { - "date": "2020-09-26T17:17:28Z", - "id": 5639237, - "issues": [ - { - "id": 684080446, - "labels": [], - "number": 117, - "title": "update deps and use travis templates", - "url": "https://github.com/hapijs/catbox-redis/pull/117" - } - ], - "number": 29, - "url": "https://github.com/hapijs/catbox-redis/milestone/29", - "version": "6.0.2" - }, - { - "date": "2020-07-10T03:45:28Z", - "id": 4973216, - "issues": [ - { - "id": 625320892, - "labels": ["feature"], - "number": 115, - "title": "Redis Configuration Options", - "url": "https://github.com/hapijs/catbox-redis/issues/115" - } - ], - "number": 28, - "url": "https://github.com/hapijs/catbox-redis/milestone/28", - "version": "6.0.1" - }, - { - "date": "2020-01-05T00:09:14Z", - "id": 4724152, - "issues": [ - { - "id": 545347365, - "labels": ["breaking changes", "dependency"], - "number": 112, - "title": "Only node 12", - "url": "https://github.com/hapijs/catbox-redis/issues/112" - } - ], - "number": 27, - "url": "https://github.com/hapijs/catbox-redis/milestone/27", - "version": "6.0.0" - }, - { - "date": "2019-10-05T16:44:57Z", - "id": 4655620, - "issues": [ - { - "id": 500922253, - "labels": ["feature"], - "number": 109, - "title": "Use PSETEX instead of SET and PEXP", - "url": "https://github.com/hapijs/catbox-redis/pull/109" - } - ], - "number": 26, - "url": "https://github.com/hapijs/catbox-redis/milestone/26", - "version": "5.0.5" - }, - { - "date": "2019-09-12T23:28:30Z", - "id": 4574261, - "issues": [ - { - "id": 493071343, - "labels": ["dependency"], - "number": 107, - "title": "Update joi", - "url": "https://github.com/hapijs/catbox-redis/issues/107" - }, - { - "id": 477134554, - "labels": ["bug"], - "number": 103, - "title": "Example \"db\" parameter error", - "url": "https://github.com/hapijs/catbox-redis/issues/103" - } - ], - "number": 25, - "url": "https://github.com/hapijs/catbox-redis/milestone/25", - "version": "5.0.4" - }, - { - "date": "2019-09-12T23:19:33Z", - "id": 4328680, - "issues": [ - { - "id": 480885699, - "labels": ["dependency"], - "number": 106, - "title": "Update deps", - "url": "https://github.com/hapijs/catbox-redis/issues/106" - } - ], - "number": 24, - "url": "https://github.com/hapijs/catbox-redis/milestone/24", - "version": "5.0.3" - }, - { - "date": "2019-05-19T17:35:25Z", - "id": 4260187, - "issues": [ - { - "id": 444402134, - "labels": ["bug"], - "number": 102, - "title": "Allowing empty password", - "url": "https://github.com/hapijs/catbox-redis/issues/102" - } - ], - "number": 23, - "url": "https://github.com/hapijs/catbox-redis/milestone/23", - "version": "5.0.2" - }, - { - "date": "2019-04-25T17:09:05Z", - "id": 4245854, - "issues": [ - { - "id": 437305546, - "labels": ["bug"], - "number": 100, - "title": "hotfix: redis tls opt is an object, not boolean", - "url": "https://github.com/hapijs/catbox-redis/pull/100" - } - ], - "number": 22, - "url": "https://github.com/hapijs/catbox-redis/milestone/22", - "version": "5.0.1" - }, - { - "date": "2019-04-21T21:08:14Z", - "id": 4245853, - "issues": [ - { - "id": 435545762, - "labels": ["breaking changes"], - "number": 98, - "title": "Switch to use Redis pexpire", - "url": "https://github.com/hapijs/catbox-redis/issues/98" - }, - { - "id": 435545706, - "labels": ["feature", "breaking changes"], - "number": 97, - "title": "Refactor options", - "url": "https://github.com/hapijs/catbox-redis/issues/97" - }, - { - "id": 435450991, - "labels": ["dependency"], - "number": 96, - "title": "Change module namespace", - "url": "https://github.com/hapijs/catbox-redis/issues/96" - } - ], - "number": 21, - "url": "https://github.com/hapijs/catbox-redis/milestone/21", - "version": "5.0.0" - }, - { - "date": "2019-04-20T22:53:16Z", - "id": 2933425, - "issues": [ - { - "id": 282086422, - "labels": [], - "number": 79, - "title": "Don't mess with provided clients", - "url": "https://github.com/hapijs/catbox-redis/pull/79" - } - ], - "number": 20, - "url": "https://github.com/hapijs/catbox-redis/milestone/20", - "version": "v4.1.0" - }, - { - "date": "2019-04-20T22:53:17Z", - "id": 2933423, - "issues": [ - { - "id": 254894805, - "labels": ["feature"], - "number": 69, - "title": "added support for dropSegment", - "url": "https://github.com/hapijs/catbox-redis/pull/69" - } - ], - "number": 18, - "url": "https://github.com/hapijs/catbox-redis/milestone/18", - "version": "v4.0.1" - }, - { - "date": "2017-11-23T13:08:20Z", - "id": 2417006, - "issues": [ - { - "id": 273219206, - "labels": ["breaking changes", "dependency"], - "number": 77, - "title": "Update to work with Catbox 10 (Hapi 17)", - "url": "https://github.com/hapijs/catbox-redis/pull/77" - } - ], - "number": 15, - "url": "https://github.com/hapijs/catbox-redis/milestone/15", - "version": "v4.0.0" - }, - { - "date": "2017-11-23T13:08:13Z", - "id": 2773636, - "issues": [], - "number": 16, - "url": "https://github.com/hapijs/catbox-redis/milestone/16", - "version": "v3.2.0" - }, - { - "date": "2017-11-23T13:08:10Z", - "id": 2814552, - "issues": [ - { - "id": 262119827, - "labels": ["feature"], - "number": 74, - "title": "Ensure the client really is ready", - "url": "https://github.com/hapijs/catbox-redis/pull/74" - } - ], - "number": 17, - "url": "https://github.com/hapijs/catbox-redis/milestone/17", - "version": "v3.1.1" - }, - { - "date": "2017-09-18T10:32:27Z", - "id": 2417005, - "issues": [ - { - "id": 258432110, - "labels": ["dependency"], - "number": 72, - "title": "Upgrade `ioredis` to `3.x.x`", - "url": "https://github.com/hapijs/catbox-redis/pull/72" - }, - { - "id": 258432084, - "labels": ["dependency"], - "number": 71, - "title": "chore(package): update ioredis to v3", - "url": "https://github.com/hapijs/catbox-redis/pull/71" - } - ], - "number": 14, - "url": "https://github.com/hapijs/catbox-redis/milestone/14", - "version": "v3.1.0" - }, - { - "date": "2017-09-18T10:32:22Z", - "id": 2417004, - "issues": [], - "number": 13, - "url": "https://github.com/hapijs/catbox-redis/milestone/13", - "version": "v3.0.3" - }, - { - "date": "2017-03-28T15:36:28Z", - "id": 2393875, - "issues": [ - { - "id": 217594881, - "labels": ["dependency"], - "number": 62, - "title": "update dependencies", - "url": "https://github.com/hapijs/catbox-redis/pull/62" - }, - { - "id": 176389024, - "labels": ["feature", "support", "breaking changes", "dependency"], - "number": 53, - "title": "Move to `ioredis`", - "url": "https://github.com/hapijs/catbox-redis/pull/53" - } - ], - "number": 12, - "url": "https://github.com/hapijs/catbox-redis/milestone/12", - "version": "v3.0.0" - }, - { - "date": "2017-03-28T15:36:26Z", - "id": 1825498, - "issues": [ - { - "id": 176373491, - "labels": ["dependency"], - "number": 52, - "title": "upgrade code@3 and lab@11", - "url": "https://github.com/hapijs/catbox-redis/pull/52" - }, - { - "id": 172426851, - "labels": ["feature"], - "number": 51, - "title": "Add option to ignore startup failures", - "url": "https://github.com/hapijs/catbox-redis/pull/51" - } - ], - "number": 11, - "url": "https://github.com/hapijs/catbox-redis/milestone/11", - "version": "v2.0.3" - }, - { - "date": "2017-03-28T15:36:30Z", - "id": 1825461, - "issues": [ - { - "id": 160135345, - "labels": ["bug"], - "number": 49, - "title": "Use `false` parameter to `client.end` in order to fail silently", - "url": "https://github.com/hapijs/catbox-redis/pull/49" - } - ], - "number": 10, - "url": "https://github.com/hapijs/catbox-redis/milestone/10", - "version": "v2.0.2" - }, - { - "date": "2016-06-14T09:23:43Z", - "id": 1825458, - "issues": [ - { - "id": 157681181, - "labels": ["feature"], - "number": 47, - "title": "Adding flush parameter when calling client.end", - "url": "https://github.com/hapijs/catbox-redis/pull/47" - }, - { - "id": 155617480, - "labels": ["test", "dependency"], - "number": 45, - "title": "Test on node v6, update dependencies", - "url": "https://github.com/hapijs/catbox-redis/pull/45" - } - ], - "number": 9, - "url": "https://github.com/hapijs/catbox-redis/milestone/9", - "version": "v2.0.1" - }, - { - "date": "2016-06-14T09:16:49Z", - "id": 1508610, - "issues": [ - { - "id": 140637341, - "labels": ["feature", "breaking changes"], - "number": 36, - "title": "Ignore partition if not defined", - "url": "https://github.com/hapijs/catbox-redis/pull/36" - } - ], - "number": 7, - "url": "https://github.com/hapijs/catbox-redis/milestone/7", - "version": "v1.1.0" - }, - { - "date": "2016-06-14T09:16:51Z", - "id": 1645317, - "issues": [ - { - "id": 140946716, - "labels": ["feature"], - "number": 40, - "title": "Allow passing a ready Redis client", - "url": "https://github.com/hapijs/catbox-redis/pull/40" - }, - { - "id": 140937136, - "labels": [], - "number": 39, - "title": "Drop node 0.10 support", - "url": "https://github.com/hapijs/catbox-redis/pull/39" - }, - { - "id": 114276738, - "labels": ["feature"], - "number": 30, - "title": "Add unix socket support", - "url": "https://github.com/hapijs/catbox-redis/pull/30" - } - ], - "number": 8, - "url": "https://github.com/hapijs/catbox-redis/milestone/8", - "version": "v1.0.9" - }, - { - "date": "2016-03-15T11:05:10Z", - "id": 1385571, - "issues": [ - { - "id": 140653981, - "labels": ["test", "dependency"], - "number": 38, - "title": "Cleanup tests", - "url": "https://github.com/hapijs/catbox-redis/pull/38" - }, - { - "id": 140648177, - "labels": ["bug"], - "number": 37, - "title": "Wait redis client to be ready in order to make sure that authentication has been done", - "url": "https://github.com/hapijs/catbox-redis/pull/37" - }, - { - "id": 114343369, - "labels": ["dependency"], + { + "date": "2023-08-04T14:08:43Z", + "id": 9742778, + "issues": [ + { + "id": 1836786182, + "labels": ["types"], + "number": 128, + "title": "chore: enable lab type tests", + "url": "https://github.com/hapijs/catbox-redis/pull/128" + }, + { + "id": 1728985300, + "labels": ["types"], + "number": 126, + "title": "feat: 🎸 add and improve typings from DT", + "url": "https://github.com/hapijs/catbox-redis/pull/126" + } + ], + "number": 33, + "url": "https://github.com/hapijs/catbox-redis/milestone/33", + "version": "7.0.2" + }, + { + "date": "2023-02-11T20:47:35Z", + "id": 8594995, + "issues": [ + { + "id": 1551794468, + "labels": ["dependency"], + "number": 125, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/catbox-redis/pull/125" + } + ], + "number": 32, + "url": "https://github.com/hapijs/catbox-redis/milestone/32", + "version": "7.0.1" + }, + { + "date": "2022-10-29T20:22:54Z", + "id": 8572322, + "issues": [ + { + "id": 1420078139, + "labels": ["feature", "breaking changes", "test", "dependency"], + "number": 123, + "title": "Support for node v18, ESM tests, upgrade ioredis", + "url": "https://github.com/hapijs/catbox-redis/pull/123" + } + ], "number": 31, - "title": "Loosen dependency to redis 2.x.x to allow 2.3.0 to match", - "url": "https://github.com/hapijs/catbox-redis/pull/31" - } - ], - "number": 6, - "url": "https://github.com/hapijs/catbox-redis/milestone/6", - "version": "v1.0.8" - }, - { - "date": "2016-01-15T10:13:54Z", - "id": 1385386, - "issues": [ - { - "id": 112578018, - "labels": ["dependency"], + "url": "https://github.com/hapijs/catbox-redis/milestone/31", + "version": "7.0.0" + }, + { + "date": "2020-09-26T17:17:28Z", + "id": 5639237, + "issues": [ + { + "id": 684080446, + "labels": [], + "number": 117, + "title": "update deps and use travis templates", + "url": "https://github.com/hapijs/catbox-redis/pull/117" + } + ], + "number": 29, + "url": "https://github.com/hapijs/catbox-redis/milestone/29", + "version": "6.0.2" + }, + { + "date": "2020-07-10T03:45:28Z", + "id": 4973216, + "issues": [ + { + "id": 625320892, + "labels": ["feature"], + "number": 115, + "title": "Redis Configuration Options", + "url": "https://github.com/hapijs/catbox-redis/issues/115" + } + ], + "number": 28, + "url": "https://github.com/hapijs/catbox-redis/milestone/28", + "version": "6.0.1" + }, + { + "date": "2020-01-05T00:09:14Z", + "id": 4724152, + "issues": [ + { + "id": 545347365, + "labels": ["breaking changes", "dependency"], + "number": 112, + "title": "Only node 12", + "url": "https://github.com/hapijs/catbox-redis/issues/112" + } + ], "number": 27, - "title": "Upgrade outdated node-redis dependency", - "url": "https://github.com/hapijs/catbox-redis/pull/27" - } - ], - "number": 5, - "url": "https://github.com/hapijs/catbox-redis/milestone/5", - "version": "v1.0.6" - }, - { - "date": "2014-08-03T05:36:05Z", - "id": 688935, - "issues": [ - { - "id": 39363864, - "labels": ["documentation"], - "number": 8, - "title": "Rename spumko to hapijs", - "url": "https://github.com/hapijs/catbox-redis/issues/8" - } - ], - "number": 4, - "url": "https://github.com/hapijs/catbox-redis/milestone/4", - "version": "1.0.4" - }, - { - "date": "2014-06-12T06:23:22Z", - "id": 665053, - "issues": [ - { - "id": 35553073, - "labels": ["test"], + "url": "https://github.com/hapijs/catbox-redis/milestone/27", + "version": "6.0.0" + }, + { + "date": "2019-10-05T16:44:57Z", + "id": 4655620, + "issues": [ + { + "id": 500922253, + "labels": ["feature"], + "number": 109, + "title": "Use PSETEX instead of SET and PEXP", + "url": "https://github.com/hapijs/catbox-redis/pull/109" + } + ], + "number": 26, + "url": "https://github.com/hapijs/catbox-redis/milestone/26", + "version": "5.0.5" + }, + { + "date": "2019-09-12T23:28:30Z", + "id": 4574261, + "issues": [ + { + "id": 493071343, + "labels": ["dependency"], + "number": 107, + "title": "Update joi", + "url": "https://github.com/hapijs/catbox-redis/issues/107" + }, + { + "id": 477134554, + "labels": ["bug"], + "number": 103, + "title": "Example \"db\" parameter error", + "url": "https://github.com/hapijs/catbox-redis/issues/103" + } + ], + "number": 25, + "url": "https://github.com/hapijs/catbox-redis/milestone/25", + "version": "5.0.4" + }, + { + "date": "2019-09-12T23:19:33Z", + "id": 4328680, + "issues": [ + { + "id": 480885699, + "labels": ["dependency"], + "number": 106, + "title": "Update deps", + "url": "https://github.com/hapijs/catbox-redis/issues/106" + } + ], + "number": 24, + "url": "https://github.com/hapijs/catbox-redis/milestone/24", + "version": "5.0.3" + }, + { + "date": "2019-05-19T17:35:25Z", + "id": 4260187, + "issues": [ + { + "id": 444402134, + "labels": ["bug"], + "number": 102, + "title": "Allowing empty password", + "url": "https://github.com/hapijs/catbox-redis/issues/102" + } + ], + "number": 23, + "url": "https://github.com/hapijs/catbox-redis/milestone/23", + "version": "5.0.2" + }, + { + "date": "2019-04-25T17:09:05Z", + "id": 4245854, + "issues": [ + { + "id": 437305546, + "labels": ["bug"], + "number": 100, + "title": "hotfix: redis tls opt is an object, not boolean", + "url": "https://github.com/hapijs/catbox-redis/pull/100" + } + ], + "number": 22, + "url": "https://github.com/hapijs/catbox-redis/milestone/22", + "version": "5.0.1" + }, + { + "date": "2019-04-21T21:08:14Z", + "id": 4245853, + "issues": [ + { + "id": 435545762, + "labels": ["breaking changes"], + "number": 98, + "title": "Switch to use Redis pexpire", + "url": "https://github.com/hapijs/catbox-redis/issues/98" + }, + { + "id": 435545706, + "labels": ["feature", "breaking changes"], + "number": 97, + "title": "Refactor options", + "url": "https://github.com/hapijs/catbox-redis/issues/97" + }, + { + "id": 435450991, + "labels": ["dependency"], + "number": 96, + "title": "Change module namespace", + "url": "https://github.com/hapijs/catbox-redis/issues/96" + } + ], + "number": 21, + "url": "https://github.com/hapijs/catbox-redis/milestone/21", + "version": "5.0.0" + }, + { + "date": "2019-04-20T22:53:16Z", + "id": 2933425, + "issues": [ + { + "id": 282086422, + "labels": [], + "number": 79, + "title": "Don't mess with provided clients", + "url": "https://github.com/hapijs/catbox-redis/pull/79" + } + ], + "number": 20, + "url": "https://github.com/hapijs/catbox-redis/milestone/20", + "version": "v4.1.0" + }, + { + "date": "2019-04-20T22:53:17Z", + "id": 2933423, + "issues": [ + { + "id": 254894805, + "labels": ["feature"], + "number": 69, + "title": "added support for dropSegment", + "url": "https://github.com/hapijs/catbox-redis/pull/69" + } + ], + "number": 18, + "url": "https://github.com/hapijs/catbox-redis/milestone/18", + "version": "v4.0.1" + }, + { + "date": "2017-11-23T13:08:20Z", + "id": 2417006, + "issues": [ + { + "id": 273219206, + "labels": ["breaking changes", "dependency"], + "number": 77, + "title": "Update to work with Catbox 10 (Hapi 17)", + "url": "https://github.com/hapijs/catbox-redis/pull/77" + } + ], + "number": 15, + "url": "https://github.com/hapijs/catbox-redis/milestone/15", + "version": "v4.0.0" + }, + { + "date": "2017-11-23T13:08:13Z", + "id": 2773636, + "issues": [], + "number": 16, + "url": "https://github.com/hapijs/catbox-redis/milestone/16", + "version": "v3.2.0" + }, + { + "date": "2017-11-23T13:08:10Z", + "id": 2814552, + "issues": [ + { + "id": 262119827, + "labels": ["feature"], + "number": 74, + "title": "Ensure the client really is ready", + "url": "https://github.com/hapijs/catbox-redis/pull/74" + } + ], + "number": 17, + "url": "https://github.com/hapijs/catbox-redis/milestone/17", + "version": "v3.1.1" + }, + { + "date": "2017-09-18T10:32:27Z", + "id": 2417005, + "issues": [ + { + "id": 258432110, + "labels": ["dependency"], + "number": 72, + "title": "Upgrade `ioredis` to `3.x.x`", + "url": "https://github.com/hapijs/catbox-redis/pull/72" + }, + { + "id": 258432084, + "labels": ["dependency"], + "number": 71, + "title": "chore(package): update ioredis to v3", + "url": "https://github.com/hapijs/catbox-redis/pull/71" + } + ], + "number": 14, + "url": "https://github.com/hapijs/catbox-redis/milestone/14", + "version": "v3.1.0" + }, + { + "date": "2017-09-18T10:32:22Z", + "id": 2417004, + "issues": [], + "number": 13, + "url": "https://github.com/hapijs/catbox-redis/milestone/13", + "version": "v3.0.3" + }, + { + "date": "2017-03-28T15:36:28Z", + "id": 2393875, + "issues": [ + { + "id": 217594881, + "labels": ["dependency"], + "number": 62, + "title": "update dependencies", + "url": "https://github.com/hapijs/catbox-redis/pull/62" + }, + { + "id": 176389024, + "labels": [ + "feature", + "support", + "breaking changes", + "dependency" + ], + "number": 53, + "title": "Move to `ioredis`", + "url": "https://github.com/hapijs/catbox-redis/pull/53" + } + ], + "number": 12, + "url": "https://github.com/hapijs/catbox-redis/milestone/12", + "version": "v3.0.0" + }, + { + "date": "2017-03-28T15:36:26Z", + "id": 1825498, + "issues": [ + { + "id": 176373491, + "labels": ["dependency"], + "number": 52, + "title": "upgrade code@3 and lab@11", + "url": "https://github.com/hapijs/catbox-redis/pull/52" + }, + { + "id": 172426851, + "labels": ["feature"], + "number": 51, + "title": "Add option to ignore startup failures", + "url": "https://github.com/hapijs/catbox-redis/pull/51" + } + ], + "number": 11, + "url": "https://github.com/hapijs/catbox-redis/milestone/11", + "version": "v2.0.3" + }, + { + "date": "2017-03-28T15:36:30Z", + "id": 1825461, + "issues": [ + { + "id": 160135345, + "labels": ["bug"], + "number": 49, + "title": "Use `false` parameter to `client.end` in order to fail silently", + "url": "https://github.com/hapijs/catbox-redis/pull/49" + } + ], + "number": 10, + "url": "https://github.com/hapijs/catbox-redis/milestone/10", + "version": "v2.0.2" + }, + { + "date": "2016-06-14T09:23:43Z", + "id": 1825458, + "issues": [ + { + "id": 157681181, + "labels": ["feature"], + "number": 47, + "title": "Adding flush parameter when calling client.end", + "url": "https://github.com/hapijs/catbox-redis/pull/47" + }, + { + "id": 155617480, + "labels": ["test", "dependency"], + "number": 45, + "title": "Test on node v6, update dependencies", + "url": "https://github.com/hapijs/catbox-redis/pull/45" + } + ], + "number": 9, + "url": "https://github.com/hapijs/catbox-redis/milestone/9", + "version": "v2.0.1" + }, + { + "date": "2016-06-14T09:16:49Z", + "id": 1508610, + "issues": [ + { + "id": 140637341, + "labels": ["feature", "breaking changes"], + "number": 36, + "title": "Ignore partition if not defined", + "url": "https://github.com/hapijs/catbox-redis/pull/36" + } + ], "number": 7, - "title": "Remove large ttl test", - "url": "https://github.com/hapijs/catbox-redis/issues/7" - } - ], - "number": 3, - "url": "https://github.com/hapijs/catbox-redis/milestone/3", - "version": "1.0.3" - }, - { - "date": "2014-05-20T21:41:20Z", - "id": 591591, - "issues": [ - { - "id": 33931560, - "labels": ["test"], + "url": "https://github.com/hapijs/catbox-redis/milestone/7", + "version": "v1.1.0" + }, + { + "date": "2016-06-14T09:16:51Z", + "id": 1645317, + "issues": [ + { + "id": 140946716, + "labels": ["feature"], + "number": 40, + "title": "Allow passing a ready Redis client", + "url": "https://github.com/hapijs/catbox-redis/pull/40" + }, + { + "id": 140937136, + "labels": [], + "number": 39, + "title": "Drop node 0.10 support", + "url": "https://github.com/hapijs/catbox-redis/pull/39" + }, + { + "id": 114276738, + "labels": ["feature"], + "number": 30, + "title": "Add unix socket support", + "url": "https://github.com/hapijs/catbox-redis/pull/30" + } + ], + "number": 8, + "url": "https://github.com/hapijs/catbox-redis/milestone/8", + "version": "v1.0.9" + }, + { + "date": "2016-03-15T11:05:10Z", + "id": 1385571, + "issues": [ + { + "id": 140653981, + "labels": ["test", "dependency"], + "number": 38, + "title": "Cleanup tests", + "url": "https://github.com/hapijs/catbox-redis/pull/38" + }, + { + "id": 140648177, + "labels": ["bug"], + "number": 37, + "title": "Wait redis client to be ready in order to make sure that authentication has been done", + "url": "https://github.com/hapijs/catbox-redis/pull/37" + }, + { + "id": 114343369, + "labels": ["dependency"], + "number": 31, + "title": "Loosen dependency to redis 2.x.x to allow 2.3.0 to match", + "url": "https://github.com/hapijs/catbox-redis/pull/31" + } + ], + "number": 6, + "url": "https://github.com/hapijs/catbox-redis/milestone/6", + "version": "v1.0.8" + }, + { + "date": "2016-01-15T10:13:54Z", + "id": 1385386, + "issues": [ + { + "id": 112578018, + "labels": ["dependency"], + "number": 27, + "title": "Upgrade outdated node-redis dependency", + "url": "https://github.com/hapijs/catbox-redis/pull/27" + } + ], "number": 5, - "title": "Bring coverage back to 100%", - "url": "https://github.com/hapijs/catbox-redis/issues/5" - } - ], - "number": 2, - "url": "https://github.com/hapijs/catbox-redis/milestone/2", - "version": "1.0.2" - }, - { - "date": "2014-03-08T23:18:40Z", - "id": 591590, - "issues": [ - { - "id": 29032479, - "labels": ["documentation"], + "url": "https://github.com/hapijs/catbox-redis/milestone/5", + "version": "v1.0.6" + }, + { + "date": "2014-08-03T05:36:05Z", + "id": 688935, + "issues": [ + { + "id": 39363864, + "labels": ["documentation"], + "number": 8, + "title": "Rename spumko to hapijs", + "url": "https://github.com/hapijs/catbox-redis/issues/8" + } + ], + "number": 4, + "url": "https://github.com/hapijs/catbox-redis/milestone/4", + "version": "1.0.4" + }, + { + "date": "2014-06-12T06:23:22Z", + "id": 665053, + "issues": [ + { + "id": 35553073, + "labels": ["test"], + "number": 7, + "title": "Remove large ttl test", + "url": "https://github.com/hapijs/catbox-redis/issues/7" + } + ], "number": 3, - "title": "Add example", - "url": "https://github.com/hapijs/catbox-redis/issues/3" - } - ], - "number": 1, - "url": "https://github.com/hapijs/catbox-redis/milestone/1", - "version": "1.0.1" - } + "url": "https://github.com/hapijs/catbox-redis/milestone/3", + "version": "1.0.3" + }, + { + "date": "2014-05-20T21:41:20Z", + "id": 591591, + "issues": [ + { + "id": 33931560, + "labels": ["test"], + "number": 5, + "title": "Bring coverage back to 100%", + "url": "https://github.com/hapijs/catbox-redis/issues/5" + } + ], + "number": 2, + "url": "https://github.com/hapijs/catbox-redis/milestone/2", + "version": "1.0.2" + }, + { + "date": "2014-03-08T23:18:40Z", + "id": 591590, + "issues": [ + { + "id": 29032479, + "labels": ["documentation"], + "number": 3, + "title": "Add example", + "url": "https://github.com/hapijs/catbox-redis/issues/3" + } + ], + "number": 1, + "url": "https://github.com/hapijs/catbox-redis/milestone/1", + "version": "1.0.1" + } ] diff --git a/generated/modules/catbox-redis/info.json b/generated/modules/catbox-redis/info.json index 8f95e2da..8c1214fb 100644 --- a/generated/modules/catbox-redis/info.json +++ b/generated/modules/catbox-redis/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 62, - "isPlugin": true, - "link": "https://github.com/hapijs/catbox-redis", - "name": "catbox-redis", - "package": "@hapi/catbox-redis", - "slogan": "Redis adapter for [catbox](https://github.com/hapijs/catbox).", - "sloganHtml": "Redis adapter for catbox.", - "stars": 70, - "updated": "2024-10-23T15:26:12Z", - "versions": [ - { - "branch": "v7.0.2", - "license": "BSD", - "name": "7.0.2", - "node": ">= 16" - } - ], - "versionsArray": ["7.0.2"], - "latestVersion": "7.x.x" + "api": true, + "forks": 62, + "isPlugin": true, + "latestVersion": "7.x.x", + "link": "https://github.com/hapijs/catbox-redis", + "name": "catbox-redis", + "package": "@hapi/catbox-redis", + "slogan": "Redis adapter for [catbox](https://github.com/hapijs/catbox).", + "sloganHtml": "Redis adapter for catbox.", + "stars": 70, + "updated": "2024-10-23T15:26:12Z", + "versions": [ + { + "branch": "v7.0.2", + "license": "BSD", + "name": "7.0.2", + "node": ">= 16" + } + ], + "versionsArray": ["7.0.2"] } diff --git a/generated/modules/catbox/changelog.json b/generated/modules/catbox/changelog.json index e527e15c..392d61cc 100644 --- a/generated/modules/catbox/changelog.json +++ b/generated/modules/catbox/changelog.json @@ -1,1140 +1,1140 @@ [ - { - "date": "2023-02-11T20:38:22Z", - "id": 9033307, - "issues": [ - { - "id": 1551776398, - "labels": [], - "number": 243, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/catbox/pull/243" - } - ], - "number": 58, - "url": "https://github.com/hapijs/catbox/milestone/58", - "version": "12.1.1" - }, - { - "date": "2022-11-17T23:30:25Z", - "id": 8667291, - "issues": [ - { - "id": 1450693141, - "labels": ["feature", "types"], - "number": 242, - "title": "Add typescript types", - "url": "https://github.com/hapijs/catbox/pull/242" - } - ], - "number": 57, - "url": "https://github.com/hapijs/catbox/milestone/57", - "version": "12.1.0" - }, - { - "date": "2022-11-17T23:09:04Z", - "id": 7955936, - "issues": [ - { - "id": 1237634410, - "labels": ["feature"], - "number": 240, - "title": "Validate engines to detect legacy adaptor modules", - "url": "https://github.com/hapijs/catbox/issues/240" - } - ], - "number": 56, - "url": "https://github.com/hapijs/catbox/milestone/56", - "version": "12.0.1" - }, - { - "date": "2022-11-17T23:09:02Z", - "id": 7955935, - "issues": [ - { - "id": 1228991875, - "labels": ["breaking changes", "dependency"], - "number": 239, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/catbox/pull/239" - } - ], - "number": 55, - "url": "https://github.com/hapijs/catbox/milestone/55", - "version": "12.0.0" - }, - { - "date": "2022-05-08T21:31:43Z", - "id": 5202203, - "issues": [ - { - "id": 660345972, - "labels": ["dependency"], - "number": 231, - "title": "Replace joi with validate", - "url": "https://github.com/hapijs/catbox/pull/231" - } - ], - "number": 54, - "url": "https://github.com/hapijs/catbox/milestone/54", - "version": "11.1.1" - }, - { - "date": "2020-03-14T21:26:04Z", - "id": 5023594, - "issues": [ - { - "id": 581370896, - "labels": ["feature"], - "number": 229, - "title": "Expose cache client in policy", - "url": "https://github.com/hapijs/catbox/issues/229" - } - ], - "number": 53, - "url": "https://github.com/hapijs/catbox/milestone/53", - "version": "11.1.0" - }, - { - "date": "2020-01-20T08:48:04Z", - "id": 4973180, - "issues": [ - { - "id": 550924778, - "labels": ["bug"], - "number": 228, - "title": "pendingGenerateTimeout causes weird timing situation", - "url": "https://github.com/hapijs/catbox/issues/228" - } - ], - "number": 52, - "url": "https://github.com/hapijs/catbox/milestone/52", - "version": "11.0.1" - }, - { - "date": "2020-01-04T23:25:30Z", - "id": 4973178, - "issues": [ - { - "id": 545341258, - "labels": ["breaking changes", "dependency"], - "number": 227, - "title": "Only node 12", - "url": "https://github.com/hapijs/catbox/issues/227" - } - ], - "number": 51, - "url": "https://github.com/hapijs/catbox/milestone/51", - "version": "11.0.0" - }, - { - "date": "2019-09-12T22:36:08Z", - "id": 4571384, - "issues": [ - { - "id": 493060058, - "labels": ["dependency"], - "number": 220, - "title": "Update joi", - "url": "https://github.com/hapijs/catbox/issues/220" - } - ], - "number": 49, - "url": "https://github.com/hapijs/catbox/milestone/49", - "version": "10.2.3" - }, - { - "date": "2019-08-14T05:08:49Z", - "id": 4192097, - "issues": [ - { - "id": 480482459, - "labels": ["dependency"], - "number": 217, - "title": "Update deps", - "url": "https://github.com/hapijs/catbox/issues/217" - } - ], - "number": 48, - "url": "https://github.com/hapijs/catbox/milestone/48", - "version": "10.2.2" - }, - { - "date": "2019-04-02T05:01:00Z", - "id": 4191447, - "issues": [ - { - "id": 428024821, - "labels": ["dependency"], - "number": 216, - "title": "Update joi dep", - "url": "https://github.com/hapijs/catbox/issues/216" - } - ], - "number": 47, - "url": "https://github.com/hapijs/catbox/milestone/47", - "version": "10.2.1" - }, - { - "date": "2019-04-01T21:26:47Z", - "id": 4185560, - "issues": [ - { - "id": 427819400, - "labels": ["bug"], - "number": 215, - "title": "Old pendingGenerateTimeout can clear new one", - "url": "https://github.com/hapijs/catbox/issues/215" - }, - { - "id": 405500557, - "labels": ["feature"], - "number": 210, - "title": "If generate takes longer than staleTimeout, errors get swallowed", - "url": "https://github.com/hapijs/catbox/issues/210" - } - ], - "number": 46, - "url": "https://github.com/hapijs/catbox/milestone/46", - "version": "10.2.0" - }, - { - "date": "2019-03-30T21:13:47Z", - "id": 3910426, - "issues": [ - { - "id": 427327815, - "labels": ["dependency"], - "number": 214, - "title": "Change module namespace", - "url": "https://github.com/hapijs/catbox/issues/214" - } - ], - "number": 43, - "url": "https://github.com/hapijs/catbox/milestone/43", - "version": "10.1.0" - }, - { - "date": "2018-12-18T15:38:45Z", - "id": 3792174, - "issues": [ - { - "id": 384982091, - "labels": ["documentation"], - "number": 208, - "title": "Add changelog.md", - "url": "https://github.com/hapijs/catbox/pull/208" - }, - { - "id": 381778620, - "labels": ["bug"], - "number": 206, - "title": "Support ioredis client option for catbox-redis", - "url": "https://github.com/hapijs/catbox/pull/206" - } - ], - "number": 42, - "url": "https://github.com/hapijs/catbox/milestone/42", - "version": "10.0.6" - }, - { - "date": "2018-11-03T00:19:51Z", - "id": 3787560, - "issues": [ - { - "id": 377000838, - "labels": ["non issue"], - "number": 205, - "title": "Remove engines", - "url": "https://github.com/hapijs/catbox/issues/205" - } - ], - "number": 41, - "url": "https://github.com/hapijs/catbox/milestone/41", - "version": "10.0.5" - }, - { - "date": "2018-11-01T07:51:26Z", - "id": 3661958, - "issues": [ - { - "id": 376289115, - "labels": ["dependency"], - "number": 204, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/catbox/issues/204" - } - ], - "number": 40, - "url": "https://github.com/hapijs/catbox/milestone/40", - "version": "10.0.4" - }, - { - "date": "2018-09-17T17:07:12Z", - "id": 2886921, - "issues": [ - { - "id": 360819484, - "labels": ["dependency"], - "number": 201, - "title": "Update lab", - "url": "https://github.com/hapijs/catbox/issues/201" - }, - { - "id": 358260060, - "labels": ["bug"], - "number": 200, - "title": "Unhandled rejection on get() errors", - "url": "https://github.com/hapijs/catbox/pull/200" - } - ], - "number": 39, - "url": "https://github.com/hapijs/catbox/milestone/39", - "version": "10.0.3" - }, - { - "date": "2017-11-03T20:29:31Z", - "id": 2885233, - "issues": [ - { - "id": 271109542, - "labels": ["feature"], - "number": 194, - "title": "Add bounce protection", - "url": "https://github.com/hapijs/catbox/issues/194" - } - ], - "number": 38, - "url": "https://github.com/hapijs/catbox/milestone/38", - "version": "10.0.2" - }, - { - "date": "2017-11-03T06:39:14Z", - "id": 2884877, - "issues": [ - { - "id": 270889105, - "labels": ["dependency"], - "number": 193, - "title": "Update boom", - "url": "https://github.com/hapijs/catbox/issues/193" - } - ], - "number": 37, - "url": "https://github.com/hapijs/catbox/milestone/37", - "version": "10.0.1" - }, - { - "date": "2017-11-03T06:34:43Z", - "id": 2844423, - "issues": [ - { - "id": 270830563, - "labels": ["breaking changes"], - "number": 192, - "title": "Require clients to be async", - "url": "https://github.com/hapijs/catbox/issues/192" - } - ], - "number": 36, - "url": "https://github.com/hapijs/catbox/milestone/36", - "version": "10.0.0" - }, - { - "date": "2017-10-17T20:01:05Z", - "id": 2797122, - "issues": [ - { - "id": 266258135, - "labels": ["breaking changes"], - "number": 191, - "title": "Change policy.get() return value to plain (with override option)", - "url": "https://github.com/hapijs/catbox/issues/191" - } - ], - "number": 35, - "url": "https://github.com/hapijs/catbox/milestone/35", - "version": "9.0.0" - }, - { - "date": "2017-09-27T10:09:09Z", - "id": 2787291, - "issues": [], - "number": 34, - "url": "https://github.com/hapijs/catbox/milestone/34", - "version": "8.0.1" - }, - { - "date": "2017-09-26T06:47:58Z", - "id": 2641281, - "issues": [ - { - "id": 260054355, - "labels": ["feature", "breaking changes"], - "number": 190, - "title": "Migrate to async/await", - "url": "https://github.com/hapijs/catbox/pull/190" - } - ], - "number": 33, - "url": "https://github.com/hapijs/catbox/milestone/33", - "version": "8.0.0" - }, - { - "date": "2019-03-30T21:02:21Z", - "id": 4162833, - "issues": [ - { - "id": 424062481, - "labels": ["lts"], - "number": 213, - "title": "Commercial version of v7 branch", - "url": "https://github.com/hapijs/catbox/issues/213" - } - ], - "number": 44, - "url": "https://github.com/hapijs/catbox/milestone/44", - "version": "7.2.0" - }, - { - "date": "2017-07-14T11:52:26Z", - "id": 2546635, - "issues": [ - { - "id": 236521860, - "labels": ["bug"], - "number": 185, - "title": "Fix pendingGenerateTimeout timeout issue", - "url": "https://github.com/hapijs/catbox/pull/185" - } - ], - "number": 32, - "url": "https://github.com/hapijs/catbox/milestone/32", - "version": "7.1.5" - }, - { - "date": "2017-05-28T00:06:13Z", - "id": 2162641, - "issues": [ - { - "id": 202504412, - "labels": ["bug"], - "number": 178, - "title": "Ensure generate timeout is triggered when staleTimeout > ttl", - "url": "https://github.com/hapijs/catbox/pull/178" - }, - { - "id": 164665345, - "labels": ["bug"], - "number": 166, - "title": "Can we remove the max() from staleIn?", - "url": "https://github.com/hapijs/catbox/issues/166" - }, - { - "id": 160651047, - "labels": ["bug"], - "number": 165, - "title": "Can't drop method without arguments", - "url": "https://github.com/hapijs/catbox/issues/165" - } - ], - "number": 31, - "url": "https://github.com/hapijs/catbox/milestone/31", - "version": "7.1.4" - }, - { - "date": "2016-11-29T01:57:59Z", - "id": 1907956, - "issues": [ - { - "id": 192167827, - "labels": ["dependency"], - "number": 176, - "title": "Update deps", - "url": "https://github.com/hapijs/catbox/issues/176" - } - ], - "number": 30, - "url": "https://github.com/hapijs/catbox/milestone/30", - "version": "7.1.3" - }, - { - "date": "2016-07-27T19:31:34Z", - "id": 1777287, - "issues": [ - { - "id": 167936005, - "labels": ["dependency"], - "number": 168, - "title": "Update deps", - "url": "https://github.com/hapijs/catbox/issues/168" - } - ], - "number": 29, - "url": "https://github.com/hapijs/catbox/milestone/29", - "version": "7.1.2" - }, - { - "date": "2016-05-19T18:04:58Z", - "id": 1483576, - "issues": [ - { - "id": 155616952, - "labels": ["documentation", "test", "dependency"], - "number": 162, - "title": "Test on node v6, update dependencies", - "url": "https://github.com/hapijs/catbox/pull/162" - } - ], - "number": 28, - "url": "https://github.com/hapijs/catbox/milestone/28", - "version": "7.1.1" - }, - { - "date": "2016-01-04T22:21:59Z", - "id": 1387718, - "issues": [ - { - "id": 121711728, - "labels": ["feature"], - "number": 152, - "title": "Adding pendingGenerateTimeout", - "url": "https://github.com/hapijs/catbox/pull/152" - }, - { - "id": 116371661, - "labels": ["feature"], - "number": 149, - "title": "Proposal: Stale while revalidate - prevent multiple generate calls", - "url": "https://github.com/hapijs/catbox/issues/149" - }, - { - "id": 114775471, - "labels": ["feature"], - "number": 147, - "title": "Update drop function to allow for object keys", - "url": "https://github.com/hapijs/catbox/pull/147" - } - ], - "number": 27, - "url": "https://github.com/hapijs/catbox/milestone/27", - "version": "7.1.0" - }, - { - "date": "2015-11-02T00:22:12Z", - "id": 1251149, - "issues": [ - { - "id": 114488898, - "labels": ["breaking changes"], - "number": 146, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/catbox/issues/146" - }, - { - "id": 106352230, - "labels": ["bug"], - "number": 145, - "title": "Fixed this.constructor issue", - "url": "https://github.com/hapijs/catbox/pull/145" - } - ], - "number": 26, - "url": "https://github.com/hapijs/catbox/milestone/26", - "version": "7.0.0" - }, - { - "date": "2015-08-12T06:25:43Z", - "id": 1247380, - "issues": [ - { - "id": 100474036, - "labels": ["bug", "breaking changes"], - "number": 140, - "title": "Replace generate cache error handing options", - "url": "https://github.com/hapijs/catbox/issues/140" - } - ], - "number": 25, - "url": "https://github.com/hapijs/catbox/milestone/25", - "version": "6.0.0" - }, - { - "date": "2015-08-10T00:11:31Z", - "id": 1152821, - "issues": [ - { - "id": 99931746, - "labels": ["feature"], - "number": 137, - "title": "Add generateOnGetError option", - "url": "https://github.com/hapijs/catbox/issues/137" - }, - { - "id": 99926963, - "labels": ["feature", "breaking changes"], - "number": 136, - "title": "Pass cache set() errors when generating value on get()", - "url": "https://github.com/hapijs/catbox/issues/136" - }, - { - "id": 99199975, - "labels": ["bug", "breaking changes"], - "number": 134, - "title": "Require generateTimeout with generateFunc.", - "url": "https://github.com/hapijs/catbox/pull/134" - }, - { - "id": 97714578, - "labels": ["bug"], - "number": 128, - "title": "Explicitly binding process.domain to the callback", - "url": "https://github.com/hapijs/catbox/pull/128" - }, - { - "id": 97713393, - "labels": ["bug"], - "number": 127, - "title": "callbacks are called with wrong process.domain", - "url": "https://github.com/hapijs/catbox/issues/127" - }, - { - "id": 55089788, - "labels": ["bug", "breaking changes"], - "number": 115, - "title": "get() can get stuck when first request never returns", - "url": "https://github.com/hapijs/catbox/issues/115" - }, - { - "id": 40370507, - "labels": ["feature"], - "number": 70, - "title": "No way to monitor cache error rates", - "url": "https://github.com/hapijs/catbox/issues/70" - } - ], - "number": 24, - "url": "https://github.com/hapijs/catbox/milestone/24", - "version": "5.0.0" - }, - { - "date": "2015-06-06T16:49:09Z", - "id": 1017366, - "issues": [ - { - "id": 51401257, - "labels": ["feature"], - "number": 114, - "title": "Expose cache engine connection isReady as public method", - "url": "https://github.com/hapijs/catbox/pull/114" - } - ], - "number": 23, - "url": "https://github.com/hapijs/catbox/milestone/23", - "version": "4.3.0" - }, - { - "date": "2015-03-11T22:18:29Z", - "id": 947503, - "issues": [ - { - "id": 60732025, - "labels": ["dependency"], - "number": 120, - "title": "Upgrade to Joi 6", - "url": "https://github.com/hapijs/catbox/pull/120" - } - ], - "number": 22, - "url": "https://github.com/hapijs/catbox/milestone/22", - "version": "4.2.2" - }, - { - "date": "2015-01-22T20:40:43Z", - "id": 873493, - "issues": [ - { - "id": 55131974, - "labels": ["bug"], - "number": 116, - "title": "Prefix keys with a `'+'` when using object as a hash", - "url": "https://github.com/hapijs/catbox/pull/116" - } - ], - "number": 21, - "url": "https://github.com/hapijs/catbox/milestone/21", - "version": "4.2.1" - }, - { - "date": "2014-11-19T23:06:29Z", - "id": 854011, - "issues": [ - { - "id": 49351699, - "labels": ["feature"], - "number": 113, - "title": "Allow empty keys", - "url": "https://github.com/hapijs/catbox/issues/113" - }, - { - "id": 46924693, - "labels": ["feature"], - "number": 109, - "title": "Return cached on error when dropOnError is false", - "url": "https://github.com/hapijs/catbox/pull/109" - }, - { - "id": 45861582, - "labels": ["feature"], - "number": 105, - "title": "StaleIn can be function.", - "url": "https://github.com/hapijs/catbox/pull/105" - } - ], - "number": 20, - "url": "https://github.com/hapijs/catbox/milestone/20", - "version": "4.2.0" - }, - { - "date": "2014-11-05T02:57:07Z", - "id": 819447, - "issues": [ - { - "id": 47786648, - "labels": ["feature"], - "number": 111, - "title": "Allow changing policy rules after construction", - "url": "https://github.com/hapijs/catbox/issues/111" - } - ], - "number": 19, - "url": "https://github.com/hapijs/catbox/milestone/19", - "version": "4.1.0" - }, - { - "date": "2014-10-09T07:59:02Z", - "id": 819438, - "issues": [ - { - "id": 45337984, - "labels": ["test"], - "number": 104, - "title": "Fix tests", - "url": "https://github.com/hapijs/catbox/issues/104" - } - ], - "number": 18, - "url": "https://github.com/hapijs/catbox/milestone/18", - "version": "4.0.3" - }, - { - "date": "2014-10-09T07:44:23Z", - "id": 819427, - "issues": [ - { - "id": 45336889, - "labels": ["feature"], - "number": 103, - "title": "Explicitly allow hapi keys in policy instead of allowUnknown", - "url": "https://github.com/hapijs/catbox/issues/103" - } - ], - "number": 17, - "url": "https://github.com/hapijs/catbox/milestone/17", - "version": "4.0.2" - }, - { - "date": "2014-10-09T07:28:57Z", - "id": 819413, - "issues": [ - { - "id": 45335949, - "labels": ["dependency"], - "number": 102, - "title": "Use joi for validating policy rules", - "url": "https://github.com/hapijs/catbox/issues/102" - } - ], - "number": 16, - "url": "https://github.com/hapijs/catbox/milestone/16", - "version": "4.0.1" - }, - { - "date": "2014-10-09T07:03:44Z", - "id": 812173, - "issues": [ - { - "id": 45333860, - "labels": ["breaking changes"], - "number": 101, - "title": "Change policy.get() callback to use a consistent signature regardless of generateFunc", - "url": "https://github.com/hapijs/catbox/issues/101" - }, - { - "id": 45321823, - "labels": ["breaking changes"], - "number": 100, - "title": "Require generateFunc options for staleIn, staleTimeout, and generateTimeout", - "url": "https://github.com/hapijs/catbox/issues/100" - }, - { - "id": 45312378, - "labels": ["breaking changes"], - "number": 99, - "title": "Remove getOrGenerate()", - "url": "https://github.com/hapijs/catbox/issues/99" - }, - { - "id": 45128964, - "labels": ["feature"], - "number": 98, - "title": "Adding ability to retain a stale value when generate function fails", - "url": "https://github.com/hapijs/catbox/pull/98" - }, - { - "id": 44795335, - "labels": ["feature"], - "number": 97, - "title": "Retain stale on error", - "url": "https://github.com/hapijs/catbox/issues/97" - } - ], - "number": 15, - "url": "https://github.com/hapijs/catbox/milestone/15", - "version": "4.0.0" - }, - { - "date": "2014-10-08T23:49:36Z", - "id": 792275, - "issues": [ - { - "id": 44760753, - "labels": ["bug"], - "number": 95, - "title": "Leftover background timeouts can interlace with new requests", - "url": "https://github.com/hapijs/catbox/issues/95" - }, - { - "id": 44583726, - "labels": ["bug"], - "number": 93, - "title": "Rarely cache can serve old value having slower backend", - "url": "https://github.com/hapijs/catbox/pull/93" - } - ], - "number": 14, - "url": "https://github.com/hapijs/catbox/milestone/14", - "version": "3.4.3" - }, - { - "date": "2014-09-16T21:14:22Z", - "id": 784182, - "issues": [ - { - "id": 42927683, - "labels": ["bug"], - "number": 86, - "title": "Fix concurrent getOrGenerate bug. Closes #85", - "url": "https://github.com/hapijs/catbox/pull/86" - }, - { - "id": 42894049, - "labels": ["bug"], - "number": 85, - "title": "Problems with concurrent invocation of getOrGenerate.", - "url": "https://github.com/hapijs/catbox/pull/85" - } - ], - "number": 13, - "url": "https://github.com/hapijs/catbox/milestone/13", - "version": "3.4.2" - }, - { - "date": "2014-09-09T21:14:01Z", - "id": 784049, - "issues": [ - { - "id": 42352168, - "labels": ["bug"], - "number": 84, - "title": "null or undefined expiresIn/At break compile", - "url": "https://github.com/hapijs/catbox/issues/84" - } - ], - "number": 12, - "url": "https://github.com/hapijs/catbox/milestone/12", - "version": "3.4.1" - }, - { - "date": "2014-09-09T21:14:02Z", - "id": 782591, - "issues": [ - { - "id": 42342165, - "labels": ["bug"], - "number": 83, - "title": "Errors thrown in get() block pending queue", - "url": "https://github.com/hapijs/catbox/issues/83" - }, - { - "id": 42322869, - "labels": ["bug"], - "number": 82, - "title": "Allow setting cache with default expiresIn 0 (no cache)", - "url": "https://github.com/hapijs/catbox/issues/82" - } - ], - "number": 11, - "url": "https://github.com/hapijs/catbox/milestone/11", - "version": "3.4.0" - }, - { - "date": "2014-09-08T19:10:15Z", - "id": 782589, - "issues": [ - { - "id": 42231232, - "labels": ["bug"], - "number": 80, - "title": "Allow setting policy without expiration when server side disabled", - "url": "https://github.com/hapijs/catbox/issues/80" - } - ], - "number": 10, - "url": "https://github.com/hapijs/catbox/milestone/10", - "version": "3.3.0" - }, - { - "date": "2014-09-08T15:15:32Z", - "id": 740632, - "issues": [ - { - "id": 42127764, - "labels": ["bug"], - "number": 79, - "title": "Queue get requests", - "url": "https://github.com/hapijs/catbox/pull/79" - }, - { - "id": 42126031, - "labels": ["test"], - "number": 78, - "title": "Incomplete coverage when testing at 23:00", - "url": "https://github.com/hapijs/catbox/issues/78" - }, - { - "id": 42125999, - "labels": ["bug"], - "number": 77, - "title": "expiredAt fails to zero milliseconds", - "url": "https://github.com/hapijs/catbox/issues/77" - }, - { - "id": 42125986, - "labels": ["bug"], - "number": 76, - "title": "expiredAt returns negative ttl on created < expired < now", - "url": "https://github.com/hapijs/catbox/issues/76" - }, - { - "id": 42092951, - "labels": ["feature"], - "number": 75, - "title": "Move generate method to policy config", - "url": "https://github.com/hapijs/catbox/issues/75" - }, - { - "id": 41854874, - "labels": ["bug"], - "number": 73, - "title": "Chain concurrent gets", - "url": "https://github.com/hapijs/catbox/issues/73" - }, - { - "id": 41094342, - "labels": ["test"], - "number": 71, - "title": "Update to Lab 4", - "url": "https://github.com/hapijs/catbox/pull/71" - } - ], - "number": 9, - "url": "https://github.com/hapijs/catbox/milestone/9", - "version": "3.2.0" - }, - { - "date": "2014-08-03T04:35:51Z", - "id": 687669, - "issues": [ - { - "id": 39358401, - "labels": ["bug"], - "number": 69, - "title": "Error fails to clear cache is error arrives before stale timeout", - "url": "https://github.com/hapijs/catbox/issues/69" - }, - { - "id": 37589098, - "labels": ["feature"], - "number": 68, - "title": "staleTimeout for first request should returns null if no data at timeout time", - "url": "https://github.com/hapijs/catbox/issues/68" - } - ], - "number": 8, - "url": "https://github.com/hapijs/catbox/milestone/8", - "version": "3.1.0" - }, - { - "date": "2014-06-11T05:43:03Z", - "id": 603044, - "issues": [ - { - "id": 35453106, - "labels": ["feature", "breaking changes"], - "number": 67, - "title": "Remove internal require() call", - "url": "https://github.com/hapijs/catbox/issues/67" - }, - { - "id": 34931434, - "labels": ["bug"], - "number": 66, - "title": "Remove large ttl check", - "url": "https://github.com/hapijs/catbox/pull/66" - }, - { - "id": 34288196, - "labels": ["feature"], - "number": 65, - "title": "Move 32bit ttl restriction to catbox-memory", - "url": "https://github.com/hapijs/catbox/issues/65" - } - ], - "number": 6, - "url": "https://github.com/hapijs/catbox/milestone/6", - "version": "3.0.0" - }, - { - "date": "2014-05-01T06:49:02Z", - "id": 645788, - "issues": [ - { - "id": 32596575, - "labels": ["test"], - "number": 62, - "title": "Bring coverage back to 100%", - "url": "https://github.com/hapijs/catbox/issues/62" - } - ], - "number": 7, - "url": "https://github.com/hapijs/catbox/milestone/7", - "version": "2.2.1" - }, - { - "date": "2014-03-19T18:56:58Z", - "id": 591594, - "issues": [ - { - "id": 29631376, - "labels": ["bug"], + { + "date": "2023-02-11T20:38:22Z", + "id": 9033307, + "issues": [ + { + "id": 1551776398, + "labels": [], + "number": 243, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/catbox/pull/243" + } + ], "number": 58, - "title": "Allow falsey values to be cached", - "url": "https://github.com/hapijs/catbox/pull/58" - } - ], - "number": 5, - "url": "https://github.com/hapijs/catbox/milestone/5", - "version": "2.2.0" - }, - { - "date": "2014-03-08T23:31:51Z", - "id": 580403, - "issues": [ - { - "id": 28471608, - "labels": ["bug", "breaking changes"], + "url": "https://github.com/hapijs/catbox/milestone/58", + "version": "12.1.1" + }, + { + "date": "2022-11-17T23:30:25Z", + "id": 8667291, + "issues": [ + { + "id": 1450693141, + "labels": ["feature", "types"], + "number": 242, + "title": "Add typescript types", + "url": "https://github.com/hapijs/catbox/pull/242" + } + ], + "number": 57, + "url": "https://github.com/hapijs/catbox/milestone/57", + "version": "12.1.0" + }, + { + "date": "2022-11-17T23:09:04Z", + "id": 7955936, + "issues": [ + { + "id": 1237634410, + "labels": ["feature"], + "number": 240, + "title": "Validate engines to detect legacy adaptor modules", + "url": "https://github.com/hapijs/catbox/issues/240" + } + ], "number": 56, - "title": "Policy.getOrGenerate returns content in two different formats", - "url": "https://github.com/hapijs/catbox/issues/56" - }, - { - "id": 26925485, - "labels": ["feature"], + "url": "https://github.com/hapijs/catbox/milestone/56", + "version": "12.0.1" + }, + { + "date": "2022-11-17T23:09:02Z", + "id": 7955935, + "issues": [ + { + "id": 1228991875, + "labels": ["breaking changes", "dependency"], + "number": 239, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/catbox/pull/239" + } + ], + "number": 55, + "url": "https://github.com/hapijs/catbox/milestone/55", + "version": "12.0.0" + }, + { + "date": "2022-05-08T21:31:43Z", + "id": 5202203, + "issues": [ + { + "id": 660345972, + "labels": ["dependency"], + "number": 231, + "title": "Replace joi with validate", + "url": "https://github.com/hapijs/catbox/pull/231" + } + ], + "number": 54, + "url": "https://github.com/hapijs/catbox/milestone/54", + "version": "11.1.1" + }, + { + "date": "2020-03-14T21:26:04Z", + "id": 5023594, + "issues": [ + { + "id": 581370896, + "labels": ["feature"], + "number": 229, + "title": "Expose cache client in policy", + "url": "https://github.com/hapijs/catbox/issues/229" + } + ], + "number": 53, + "url": "https://github.com/hapijs/catbox/milestone/53", + "version": "11.1.0" + }, + { + "date": "2020-01-20T08:48:04Z", + "id": 4973180, + "issues": [ + { + "id": 550924778, + "labels": ["bug"], + "number": 228, + "title": "pendingGenerateTimeout causes weird timing situation", + "url": "https://github.com/hapijs/catbox/issues/228" + } + ], + "number": 52, + "url": "https://github.com/hapijs/catbox/milestone/52", + "version": "11.0.1" + }, + { + "date": "2020-01-04T23:25:30Z", + "id": 4973178, + "issues": [ + { + "id": 545341258, + "labels": ["breaking changes", "dependency"], + "number": 227, + "title": "Only node 12", + "url": "https://github.com/hapijs/catbox/issues/227" + } + ], "number": 51, - "title": "Impossible to use a custom storage backend with the Hapi CLI", - "url": "https://github.com/hapijs/catbox/issues/51" - } - ], - "number": 4, - "url": "https://github.com/hapijs/catbox/milestone/4", - "version": "2.1.0" - }, - { - "date": "2014-02-27T19:09:10Z", - "id": 580402, - "issues": [ - { - "id": 24861122, - "labels": ["bug"], + "url": "https://github.com/hapijs/catbox/milestone/51", + "version": "11.0.0" + }, + { + "date": "2019-09-12T22:36:08Z", + "id": 4571384, + "issues": [ + { + "id": 493060058, + "labels": ["dependency"], + "number": 220, + "title": "Update joi", + "url": "https://github.com/hapijs/catbox/issues/220" + } + ], "number": 49, - "title": "Close the redis connection on error", - "url": "https://github.com/hapijs/catbox/pull/49" - } - ], - "number": 3, - "url": "https://github.com/hapijs/catbox/milestone/3", - "version": "1.2.0" - }, - { - "date": "2013-01-26T08:51:15Z", - "id": 235725, - "issues": [ - { - "id": 9560411, - "labels": ["feature", "test"], + "url": "https://github.com/hapijs/catbox/milestone/49", + "version": "10.2.3" + }, + { + "date": "2019-08-14T05:08:49Z", + "id": 4192097, + "issues": [ + { + "id": 480482459, + "labels": ["dependency"], + "number": 217, + "title": "Update deps", + "url": "https://github.com/hapijs/catbox/issues/217" + } + ], + "number": 48, + "url": "https://github.com/hapijs/catbox/milestone/48", + "version": "10.2.2" + }, + { + "date": "2019-04-02T05:01:00Z", + "id": 4191447, + "issues": [ + { + "id": 428024821, + "labels": ["dependency"], + "number": 216, + "title": "Update joi dep", + "url": "https://github.com/hapijs/catbox/issues/216" + } + ], + "number": 47, + "url": "https://github.com/hapijs/catbox/milestone/47", + "version": "10.2.1" + }, + { + "date": "2019-04-01T21:26:47Z", + "id": 4185560, + "issues": [ + { + "id": 427819400, + "labels": ["bug"], + "number": 215, + "title": "Old pendingGenerateTimeout can clear new one", + "url": "https://github.com/hapijs/catbox/issues/215" + }, + { + "id": 405500557, + "labels": ["feature"], + "number": 210, + "title": "If generate takes longer than staleTimeout, errors get swallowed", + "url": "https://github.com/hapijs/catbox/issues/210" + } + ], + "number": 46, + "url": "https://github.com/hapijs/catbox/milestone/46", + "version": "10.2.0" + }, + { + "date": "2019-03-30T21:13:47Z", + "id": 3910426, + "issues": [ + { + "id": 427327815, + "labels": ["dependency"], + "number": 214, + "title": "Change module namespace", + "url": "https://github.com/hapijs/catbox/issues/214" + } + ], + "number": 43, + "url": "https://github.com/hapijs/catbox/milestone/43", + "version": "10.1.0" + }, + { + "date": "2018-12-18T15:38:45Z", + "id": 3792174, + "issues": [ + { + "id": 384982091, + "labels": ["documentation"], + "number": 208, + "title": "Add changelog.md", + "url": "https://github.com/hapijs/catbox/pull/208" + }, + { + "id": 381778620, + "labels": ["bug"], + "number": 206, + "title": "Support ioredis client option for catbox-redis", + "url": "https://github.com/hapijs/catbox/pull/206" + } + ], + "number": 42, + "url": "https://github.com/hapijs/catbox/milestone/42", + "version": "10.0.6" + }, + { + "date": "2018-11-03T00:19:51Z", + "id": 3787560, + "issues": [ + { + "id": 377000838, + "labels": ["non issue"], + "number": 205, + "title": "Remove engines", + "url": "https://github.com/hapijs/catbox/issues/205" + } + ], + "number": 41, + "url": "https://github.com/hapijs/catbox/milestone/41", + "version": "10.0.5" + }, + { + "date": "2018-11-01T07:51:26Z", + "id": 3661958, + "issues": [ + { + "id": 376289115, + "labels": ["dependency"], + "number": 204, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/catbox/issues/204" + } + ], + "number": 40, + "url": "https://github.com/hapijs/catbox/milestone/40", + "version": "10.0.4" + }, + { + "date": "2018-09-17T17:07:12Z", + "id": 2886921, + "issues": [ + { + "id": 360819484, + "labels": ["dependency"], + "number": 201, + "title": "Update lab", + "url": "https://github.com/hapijs/catbox/issues/201" + }, + { + "id": 358260060, + "labels": ["bug"], + "number": 200, + "title": "Unhandled rejection on get() errors", + "url": "https://github.com/hapijs/catbox/pull/200" + } + ], + "number": 39, + "url": "https://github.com/hapijs/catbox/milestone/39", + "version": "10.0.3" + }, + { + "date": "2017-11-03T20:29:31Z", + "id": 2885233, + "issues": [ + { + "id": 271109542, + "labels": ["feature"], + "number": 194, + "title": "Add bounce protection", + "url": "https://github.com/hapijs/catbox/issues/194" + } + ], + "number": 38, + "url": "https://github.com/hapijs/catbox/milestone/38", + "version": "10.0.2" + }, + { + "date": "2017-11-03T06:39:14Z", + "id": 2884877, + "issues": [ + { + "id": 270889105, + "labels": ["dependency"], + "number": 193, + "title": "Update boom", + "url": "https://github.com/hapijs/catbox/issues/193" + } + ], + "number": 37, + "url": "https://github.com/hapijs/catbox/milestone/37", + "version": "10.0.1" + }, + { + "date": "2017-11-03T06:34:43Z", + "id": 2844423, + "issues": [ + { + "id": 270830563, + "labels": ["breaking changes"], + "number": 192, + "title": "Require clients to be async", + "url": "https://github.com/hapijs/catbox/issues/192" + } + ], + "number": 36, + "url": "https://github.com/hapijs/catbox/milestone/36", + "version": "10.0.0" + }, + { + "date": "2017-10-17T20:01:05Z", + "id": 2797122, + "issues": [ + { + "id": 266258135, + "labels": ["breaking changes"], + "number": 191, + "title": "Change policy.get() return value to plain (with override option)", + "url": "https://github.com/hapijs/catbox/issues/191" + } + ], + "number": 35, + "url": "https://github.com/hapijs/catbox/milestone/35", + "version": "9.0.0" + }, + { + "date": "2017-09-27T10:09:09Z", + "id": 2787291, + "issues": [], + "number": 34, + "url": "https://github.com/hapijs/catbox/milestone/34", + "version": "8.0.1" + }, + { + "date": "2017-09-26T06:47:58Z", + "id": 2641281, + "issues": [ + { + "id": 260054355, + "labels": ["feature", "breaking changes"], + "number": 190, + "title": "Migrate to async/await", + "url": "https://github.com/hapijs/catbox/pull/190" + } + ], + "number": 33, + "url": "https://github.com/hapijs/catbox/milestone/33", + "version": "8.0.0" + }, + { + "date": "2019-03-30T21:02:21Z", + "id": 4162833, + "issues": [ + { + "id": 424062481, + "labels": ["lts"], + "number": 213, + "title": "Commercial version of v7 branch", + "url": "https://github.com/hapijs/catbox/issues/213" + } + ], + "number": 44, + "url": "https://github.com/hapijs/catbox/milestone/44", + "version": "7.2.0" + }, + { + "date": "2017-07-14T11:52:26Z", + "id": 2546635, + "issues": [ + { + "id": 236521860, + "labels": ["bug"], + "number": 185, + "title": "Fix pendingGenerateTimeout timeout issue", + "url": "https://github.com/hapijs/catbox/pull/185" + } + ], + "number": 32, + "url": "https://github.com/hapijs/catbox/milestone/32", + "version": "7.1.5" + }, + { + "date": "2017-05-28T00:06:13Z", + "id": 2162641, + "issues": [ + { + "id": 202504412, + "labels": ["bug"], + "number": 178, + "title": "Ensure generate timeout is triggered when staleTimeout > ttl", + "url": "https://github.com/hapijs/catbox/pull/178" + }, + { + "id": 164665345, + "labels": ["bug"], + "number": 166, + "title": "Can we remove the max() from staleIn?", + "url": "https://github.com/hapijs/catbox/issues/166" + }, + { + "id": 160651047, + "labels": ["bug"], + "number": 165, + "title": "Can't drop method without arguments", + "url": "https://github.com/hapijs/catbox/issues/165" + } + ], + "number": 31, + "url": "https://github.com/hapijs/catbox/milestone/31", + "version": "7.1.4" + }, + { + "date": "2016-11-29T01:57:59Z", + "id": 1907956, + "issues": [ + { + "id": 192167827, + "labels": ["dependency"], + "number": 176, + "title": "Update deps", + "url": "https://github.com/hapijs/catbox/issues/176" + } + ], + "number": 30, + "url": "https://github.com/hapijs/catbox/milestone/30", + "version": "7.1.3" + }, + { + "date": "2016-07-27T19:31:34Z", + "id": 1777287, + "issues": [ + { + "id": 167936005, + "labels": ["dependency"], + "number": 168, + "title": "Update deps", + "url": "https://github.com/hapijs/catbox/issues/168" + } + ], + "number": 29, + "url": "https://github.com/hapijs/catbox/milestone/29", + "version": "7.1.2" + }, + { + "date": "2016-05-19T18:04:58Z", + "id": 1483576, + "issues": [ + { + "id": 155616952, + "labels": ["documentation", "test", "dependency"], + "number": 162, + "title": "Test on node v6, update dependencies", + "url": "https://github.com/hapijs/catbox/pull/162" + } + ], + "number": 28, + "url": "https://github.com/hapijs/catbox/milestone/28", + "version": "7.1.1" + }, + { + "date": "2016-01-04T22:21:59Z", + "id": 1387718, + "issues": [ + { + "id": 121711728, + "labels": ["feature"], + "number": 152, + "title": "Adding pendingGenerateTimeout", + "url": "https://github.com/hapijs/catbox/pull/152" + }, + { + "id": 116371661, + "labels": ["feature"], + "number": 149, + "title": "Proposal: Stale while revalidate - prevent multiple generate calls", + "url": "https://github.com/hapijs/catbox/issues/149" + }, + { + "id": 114775471, + "labels": ["feature"], + "number": 147, + "title": "Update drop function to allow for object keys", + "url": "https://github.com/hapijs/catbox/pull/147" + } + ], + "number": 27, + "url": "https://github.com/hapijs/catbox/milestone/27", + "version": "7.1.0" + }, + { + "date": "2015-11-02T00:22:12Z", + "id": 1251149, + "issues": [ + { + "id": 114488898, + "labels": ["breaking changes"], + "number": 146, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/catbox/issues/146" + }, + { + "id": 106352230, + "labels": ["bug"], + "number": 145, + "title": "Fixed this.constructor issue", + "url": "https://github.com/hapijs/catbox/pull/145" + } + ], + "number": 26, + "url": "https://github.com/hapijs/catbox/milestone/26", + "version": "7.0.0" + }, + { + "date": "2015-08-12T06:25:43Z", + "id": 1247380, + "issues": [ + { + "id": 100474036, + "labels": ["bug", "breaking changes"], + "number": 140, + "title": "Replace generate cache error handing options", + "url": "https://github.com/hapijs/catbox/issues/140" + } + ], + "number": 25, + "url": "https://github.com/hapijs/catbox/milestone/25", + "version": "6.0.0" + }, + { + "date": "2015-08-10T00:11:31Z", + "id": 1152821, + "issues": [ + { + "id": 99931746, + "labels": ["feature"], + "number": 137, + "title": "Add generateOnGetError option", + "url": "https://github.com/hapijs/catbox/issues/137" + }, + { + "id": 99926963, + "labels": ["feature", "breaking changes"], + "number": 136, + "title": "Pass cache set() errors when generating value on get()", + "url": "https://github.com/hapijs/catbox/issues/136" + }, + { + "id": 99199975, + "labels": ["bug", "breaking changes"], + "number": 134, + "title": "Require generateTimeout with generateFunc.", + "url": "https://github.com/hapijs/catbox/pull/134" + }, + { + "id": 97714578, + "labels": ["bug"], + "number": 128, + "title": "Explicitly binding process.domain to the callback", + "url": "https://github.com/hapijs/catbox/pull/128" + }, + { + "id": 97713393, + "labels": ["bug"], + "number": 127, + "title": "callbacks are called with wrong process.domain", + "url": "https://github.com/hapijs/catbox/issues/127" + }, + { + "id": 55089788, + "labels": ["bug", "breaking changes"], + "number": 115, + "title": "get() can get stuck when first request never returns", + "url": "https://github.com/hapijs/catbox/issues/115" + }, + { + "id": 40370507, + "labels": ["feature"], + "number": 70, + "title": "No way to monitor cache error rates", + "url": "https://github.com/hapijs/catbox/issues/70" + } + ], + "number": 24, + "url": "https://github.com/hapijs/catbox/milestone/24", + "version": "5.0.0" + }, + { + "date": "2015-06-06T16:49:09Z", + "id": 1017366, + "issues": [ + { + "id": 51401257, + "labels": ["feature"], + "number": 114, + "title": "Expose cache engine connection isReady as public method", + "url": "https://github.com/hapijs/catbox/pull/114" + } + ], + "number": 23, + "url": "https://github.com/hapijs/catbox/milestone/23", + "version": "4.3.0" + }, + { + "date": "2015-03-11T22:18:29Z", + "id": 947503, + "issues": [ + { + "id": 60732025, + "labels": ["dependency"], + "number": 120, + "title": "Upgrade to Joi 6", + "url": "https://github.com/hapijs/catbox/pull/120" + } + ], + "number": 22, + "url": "https://github.com/hapijs/catbox/milestone/22", + "version": "4.2.2" + }, + { + "date": "2015-01-22T20:40:43Z", + "id": 873493, + "issues": [ + { + "id": 55131974, + "labels": ["bug"], + "number": 116, + "title": "Prefix keys with a `'+'` when using object as a hash", + "url": "https://github.com/hapijs/catbox/pull/116" + } + ], + "number": 21, + "url": "https://github.com/hapijs/catbox/milestone/21", + "version": "4.2.1" + }, + { + "date": "2014-11-19T23:06:29Z", + "id": 854011, + "issues": [ + { + "id": 49351699, + "labels": ["feature"], + "number": 113, + "title": "Allow empty keys", + "url": "https://github.com/hapijs/catbox/issues/113" + }, + { + "id": 46924693, + "labels": ["feature"], + "number": 109, + "title": "Return cached on error when dropOnError is false", + "url": "https://github.com/hapijs/catbox/pull/109" + }, + { + "id": 45861582, + "labels": ["feature"], + "number": 105, + "title": "StaleIn can be function.", + "url": "https://github.com/hapijs/catbox/pull/105" + } + ], + "number": 20, + "url": "https://github.com/hapijs/catbox/milestone/20", + "version": "4.2.0" + }, + { + "date": "2014-11-05T02:57:07Z", + "id": 819447, + "issues": [ + { + "id": 47786648, + "labels": ["feature"], + "number": 111, + "title": "Allow changing policy rules after construction", + "url": "https://github.com/hapijs/catbox/issues/111" + } + ], + "number": 19, + "url": "https://github.com/hapijs/catbox/milestone/19", + "version": "4.1.0" + }, + { + "date": "2014-10-09T07:59:02Z", + "id": 819438, + "issues": [ + { + "id": 45337984, + "labels": ["test"], + "number": 104, + "title": "Fix tests", + "url": "https://github.com/hapijs/catbox/issues/104" + } + ], + "number": 18, + "url": "https://github.com/hapijs/catbox/milestone/18", + "version": "4.0.3" + }, + { + "date": "2014-10-09T07:44:23Z", + "id": 819427, + "issues": [ + { + "id": 45336889, + "labels": ["feature"], + "number": 103, + "title": "Explicitly allow hapi keys in policy instead of allowUnknown", + "url": "https://github.com/hapijs/catbox/issues/103" + } + ], + "number": 17, + "url": "https://github.com/hapijs/catbox/milestone/17", + "version": "4.0.2" + }, + { + "date": "2014-10-09T07:28:57Z", + "id": 819413, + "issues": [ + { + "id": 45335949, + "labels": ["dependency"], + "number": 102, + "title": "Use joi for validating policy rules", + "url": "https://github.com/hapijs/catbox/issues/102" + } + ], + "number": 16, + "url": "https://github.com/hapijs/catbox/milestone/16", + "version": "4.0.1" + }, + { + "date": "2014-10-09T07:03:44Z", + "id": 812173, + "issues": [ + { + "id": 45333860, + "labels": ["breaking changes"], + "number": 101, + "title": "Change policy.get() callback to use a consistent signature regardless of generateFunc", + "url": "https://github.com/hapijs/catbox/issues/101" + }, + { + "id": 45321823, + "labels": ["breaking changes"], + "number": 100, + "title": "Require generateFunc options for staleIn, staleTimeout, and generateTimeout", + "url": "https://github.com/hapijs/catbox/issues/100" + }, + { + "id": 45312378, + "labels": ["breaking changes"], + "number": 99, + "title": "Remove getOrGenerate()", + "url": "https://github.com/hapijs/catbox/issues/99" + }, + { + "id": 45128964, + "labels": ["feature"], + "number": 98, + "title": "Adding ability to retain a stale value when generate function fails", + "url": "https://github.com/hapijs/catbox/pull/98" + }, + { + "id": 44795335, + "labels": ["feature"], + "number": 97, + "title": "Retain stale on error", + "url": "https://github.com/hapijs/catbox/issues/97" + } + ], + "number": 15, + "url": "https://github.com/hapijs/catbox/milestone/15", + "version": "4.0.0" + }, + { + "date": "2014-10-08T23:49:36Z", + "id": 792275, + "issues": [ + { + "id": 44760753, + "labels": ["bug"], + "number": 95, + "title": "Leftover background timeouts can interlace with new requests", + "url": "https://github.com/hapijs/catbox/issues/95" + }, + { + "id": 44583726, + "labels": ["bug"], + "number": 93, + "title": "Rarely cache can serve old value having slower backend", + "url": "https://github.com/hapijs/catbox/pull/93" + } + ], "number": 14, - "title": "Remove redis and mongodb dependencies (and move to devdeps)", - "url": "https://github.com/hapijs/catbox/issues/14" - }, - { - "id": 9560381, - "labels": ["test"], + "url": "https://github.com/hapijs/catbox/milestone/14", + "version": "3.4.3" + }, + { + "date": "2014-09-16T21:14:22Z", + "id": 784182, + "issues": [ + { + "id": 42927683, + "labels": ["bug"], + "number": 86, + "title": "Fix concurrent getOrGenerate bug. Closes #85", + "url": "https://github.com/hapijs/catbox/pull/86" + }, + { + "id": 42894049, + "labels": ["bug"], + "number": 85, + "title": "Problems with concurrent invocation of getOrGenerate.", + "url": "https://github.com/hapijs/catbox/pull/85" + } + ], "number": 13, - "title": "Remove hapi dependencies", - "url": "https://github.com/hapijs/catbox/issues/13" - }, - { - "id": 9560362, - "labels": ["documentation"], + "url": "https://github.com/hapijs/catbox/milestone/13", + "version": "3.4.2" + }, + { + "date": "2014-09-09T21:14:01Z", + "id": 784049, + "issues": [ + { + "id": 42352168, + "labels": ["bug"], + "number": 84, + "title": "null or undefined expiresIn/At break compile", + "url": "https://github.com/hapijs/catbox/issues/84" + } + ], "number": 12, - "title": "Need to better organize config options", - "url": "https://github.com/hapijs/catbox/issues/12" - }, - { - "id": 9340658, - "labels": ["documentation"], + "url": "https://github.com/hapijs/catbox/milestone/12", + "version": "3.4.1" + }, + { + "date": "2014-09-09T21:14:02Z", + "id": 782591, + "issues": [ + { + "id": 42342165, + "labels": ["bug"], + "number": 83, + "title": "Errors thrown in get() block pending queue", + "url": "https://github.com/hapijs/catbox/issues/83" + }, + { + "id": 42322869, + "labels": ["bug"], + "number": 82, + "title": "Allow setting cache with default expiresIn 0 (no cache)", + "url": "https://github.com/hapijs/catbox/issues/82" + } + ], + "number": 11, + "url": "https://github.com/hapijs/catbox/milestone/11", + "version": "3.4.0" + }, + { + "date": "2014-09-08T19:10:15Z", + "id": 782589, + "issues": [ + { + "id": 42231232, + "labels": ["bug"], + "number": 80, + "title": "Allow setting policy without expiration when server side disabled", + "url": "https://github.com/hapijs/catbox/issues/80" + } + ], + "number": 10, + "url": "https://github.com/hapijs/catbox/milestone/10", + "version": "3.3.0" + }, + { + "date": "2014-09-08T15:15:32Z", + "id": 740632, + "issues": [ + { + "id": 42127764, + "labels": ["bug"], + "number": 79, + "title": "Queue get requests", + "url": "https://github.com/hapijs/catbox/pull/79" + }, + { + "id": 42126031, + "labels": ["test"], + "number": 78, + "title": "Incomplete coverage when testing at 23:00", + "url": "https://github.com/hapijs/catbox/issues/78" + }, + { + "id": 42125999, + "labels": ["bug"], + "number": 77, + "title": "expiredAt fails to zero milliseconds", + "url": "https://github.com/hapijs/catbox/issues/77" + }, + { + "id": 42125986, + "labels": ["bug"], + "number": 76, + "title": "expiredAt returns negative ttl on created < expired < now", + "url": "https://github.com/hapijs/catbox/issues/76" + }, + { + "id": 42092951, + "labels": ["feature"], + "number": 75, + "title": "Move generate method to policy config", + "url": "https://github.com/hapijs/catbox/issues/75" + }, + { + "id": 41854874, + "labels": ["bug"], + "number": 73, + "title": "Chain concurrent gets", + "url": "https://github.com/hapijs/catbox/issues/73" + }, + { + "id": 41094342, + "labels": ["test"], + "number": 71, + "title": "Update to Lab 4", + "url": "https://github.com/hapijs/catbox/pull/71" + } + ], + "number": 9, + "url": "https://github.com/hapijs/catbox/milestone/9", + "version": "3.2.0" + }, + { + "date": "2014-08-03T04:35:51Z", + "id": 687669, + "issues": [ + { + "id": 39358401, + "labels": ["bug"], + "number": 69, + "title": "Error fails to clear cache is error arrives before stale timeout", + "url": "https://github.com/hapijs/catbox/issues/69" + }, + { + "id": 37589098, + "labels": ["feature"], + "number": 68, + "title": "staleTimeout for first request should returns null if no data at timeout time", + "url": "https://github.com/hapijs/catbox/issues/68" + } + ], + "number": 8, + "url": "https://github.com/hapijs/catbox/milestone/8", + "version": "3.1.0" + }, + { + "date": "2014-06-11T05:43:03Z", + "id": 603044, + "issues": [ + { + "id": 35453106, + "labels": ["feature", "breaking changes"], + "number": 67, + "title": "Remove internal require() call", + "url": "https://github.com/hapijs/catbox/issues/67" + }, + { + "id": 34931434, + "labels": ["bug"], + "number": 66, + "title": "Remove large ttl check", + "url": "https://github.com/hapijs/catbox/pull/66" + }, + { + "id": 34288196, + "labels": ["feature"], + "number": 65, + "title": "Move 32bit ttl restriction to catbox-memory", + "url": "https://github.com/hapijs/catbox/issues/65" + } + ], "number": 6, - "title": "Add examples", - "url": "https://github.com/hapijs/catbox/issues/6" - }, - { - "id": 9340645, - "labels": ["documentation"], + "url": "https://github.com/hapijs/catbox/milestone/6", + "version": "3.0.0" + }, + { + "date": "2014-05-01T06:49:02Z", + "id": 645788, + "issues": [ + { + "id": 32596575, + "labels": ["test"], + "number": 62, + "title": "Bring coverage back to 100%", + "url": "https://github.com/hapijs/catbox/issues/62" + } + ], + "number": 7, + "url": "https://github.com/hapijs/catbox/milestone/7", + "version": "2.2.1" + }, + { + "date": "2014-03-19T18:56:58Z", + "id": 591594, + "issues": [ + { + "id": 29631376, + "labels": ["bug"], + "number": 58, + "title": "Allow falsey values to be cached", + "url": "https://github.com/hapijs/catbox/pull/58" + } + ], "number": 5, - "title": "Document interfaces, features", - "url": "https://github.com/hapijs/catbox/issues/5" - }, - { - "id": 9340633, - "labels": ["test"], + "url": "https://github.com/hapijs/catbox/milestone/5", + "version": "2.2.0" + }, + { + "date": "2014-03-08T23:31:51Z", + "id": 580403, + "issues": [ + { + "id": 28471608, + "labels": ["bug", "breaking changes"], + "number": 56, + "title": "Policy.getOrGenerate returns content in two different formats", + "url": "https://github.com/hapijs/catbox/issues/56" + }, + { + "id": 26925485, + "labels": ["feature"], + "number": 51, + "title": "Impossible to use a custom storage backend with the Hapi CLI", + "url": "https://github.com/hapijs/catbox/issues/51" + } + ], "number": 4, - "title": "Bring test coverage to 100%", - "url": "https://github.com/hapijs/catbox/issues/4" - } - ], - "number": 2, - "url": "https://github.com/hapijs/catbox/milestone/2", - "version": "0.1.0" - } + "url": "https://github.com/hapijs/catbox/milestone/4", + "version": "2.1.0" + }, + { + "date": "2014-02-27T19:09:10Z", + "id": 580402, + "issues": [ + { + "id": 24861122, + "labels": ["bug"], + "number": 49, + "title": "Close the redis connection on error", + "url": "https://github.com/hapijs/catbox/pull/49" + } + ], + "number": 3, + "url": "https://github.com/hapijs/catbox/milestone/3", + "version": "1.2.0" + }, + { + "date": "2013-01-26T08:51:15Z", + "id": 235725, + "issues": [ + { + "id": 9560411, + "labels": ["feature", "test"], + "number": 14, + "title": "Remove redis and mongodb dependencies (and move to devdeps)", + "url": "https://github.com/hapijs/catbox/issues/14" + }, + { + "id": 9560381, + "labels": ["test"], + "number": 13, + "title": "Remove hapi dependencies", + "url": "https://github.com/hapijs/catbox/issues/13" + }, + { + "id": 9560362, + "labels": ["documentation"], + "number": 12, + "title": "Need to better organize config options", + "url": "https://github.com/hapijs/catbox/issues/12" + }, + { + "id": 9340658, + "labels": ["documentation"], + "number": 6, + "title": "Add examples", + "url": "https://github.com/hapijs/catbox/issues/6" + }, + { + "id": 9340645, + "labels": ["documentation"], + "number": 5, + "title": "Document interfaces, features", + "url": "https://github.com/hapijs/catbox/issues/5" + }, + { + "id": 9340633, + "labels": ["test"], + "number": 4, + "title": "Bring test coverage to 100%", + "url": "https://github.com/hapijs/catbox/issues/4" + } + ], + "number": 2, + "url": "https://github.com/hapijs/catbox/milestone/2", + "version": "0.1.0" + } ] diff --git a/generated/modules/catbox/info.json b/generated/modules/catbox/info.json index f80fa1bd..b253186f 100644 --- a/generated/modules/catbox/info.json +++ b/generated/modules/catbox/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 72, - "isPlugin": false, - "link": "https://github.com/hapijs/catbox", - "name": "catbox", - "package": "@hapi/catbox", - "slogan": "Multi-strategy object caching service.", - "sloganHtml": "Multi-strategy object caching service.", - "stars": 494, - "updated": "2024-10-23T15:27:54Z", - "versions": [ - { - "branch": "v12.1.1", - "license": "BSD", - "name": "12.1.1", - "node": ">= 16" - } - ], - "versionsArray": ["12.1.1"], - "latestVersion": "12.x.x" + "api": true, + "forks": 72, + "isPlugin": false, + "latestVersion": "12.x.x", + "link": "https://github.com/hapijs/catbox", + "name": "catbox", + "package": "@hapi/catbox", + "slogan": "Multi-strategy object caching service.", + "sloganHtml": "Multi-strategy object caching service.", + "stars": 494, + "updated": "2024-10-23T15:27:54Z", + "versions": [ + { + "branch": "v12.1.1", + "license": "BSD", + "name": "12.1.1", + "node": ">= 16" + } + ], + "versionsArray": ["12.1.1"] } diff --git a/generated/modules/code/changelog.json b/generated/modules/code/changelog.json index d2f3e64e..9dd179b6 100644 --- a/generated/modules/code/changelog.json +++ b/generated/modules/code/changelog.json @@ -1,1033 +1,1033 @@ [ - { - "date": "2023-02-11T18:01:54Z", - "id": 8701291, - "issues": [ - { - "id": 1551746332, - "labels": [], - "number": 179, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/code/pull/179" - } - ], - "number": 41, - "url": "https://github.com/hapijs/code/milestone/41", - "version": "9.0.3" - }, - { - "date": "2022-11-29T08:49:48Z", - "id": 8080669, - "issues": [ - { - "id": 1458813434, - "labels": ["bug", "types"], - "number": 178, - "title": "Fix typo and add missing type", - "url": "https://github.com/hapijs/code/pull/178" - } - ], - "number": 40, - "url": "https://github.com/hapijs/code/milestone/40", - "version": "9.0.2" - }, - { - "date": "2022-06-14T15:40:06Z", - "id": 7932293, - "issues": [ - { - "id": 1248750441, - "labels": ["dependency", "types"], - "number": 177, - "title": "Fix `reject()` types", - "url": "https://github.com/hapijs/code/pull/177" - } - ], - "number": 39, - "url": "https://github.com/hapijs/code/milestone/39", - "version": "9.0.1" - }, - { - "date": "2022-06-14T15:39:02Z", - "id": 7910880, - "issues": [ - { - "id": 1213761276, - "labels": ["breaking changes", "dependency"], - "number": 175, - "title": "Drop node v12, support node v18", - "url": "https://github.com/hapijs/code/pull/175" - } - ], - "number": 38, - "url": "https://github.com/hapijs/code/milestone/38", - "version": "9.0.0" - }, - { - "date": "2022-04-25T13:55:13Z", - "id": 7652853, - "issues": [], - "number": 37, - "url": "https://github.com/hapijs/code/milestone/37", - "version": "8.0.8" - }, - { - "date": "2022-02-08T07:04:40Z", - "id": 7604614, - "issues": [ - { - "id": 1126504744, - "labels": ["bug", "types"], - "number": 174, - "title": "Fix equal() type", - "url": "https://github.com/hapijs/code/pull/174" - } - ], - "number": 36, - "url": "https://github.com/hapijs/code/milestone/36", - "version": "8.0.7" - }, - { - "date": "2022-01-24T14:51:35Z", - "id": 7413852, - "issues": [ - { - "id": 1112271871, - "labels": ["bug", "types"], - "number": 173, - "title": "Fix equal() types", - "url": "https://github.com/hapijs/code/pull/173" - }, - { - "id": 1112268077, - "labels": ["bug", "types"], - "number": 172, - "title": "equal(value: T) type should be Loosely when options ignore symbols or properties", - "url": "https://github.com/hapijs/code/issues/172" - }, - { - "id": 1111853212, - "labels": ["bug", "types"], - "number": 171, - "title": "Fix typings for throw() and reject()", - "url": "https://github.com/hapijs/code/pull/171" - } - ], - "number": 35, - "url": "https://github.com/hapijs/code/milestone/35", - "version": "8.0.6" - }, - { - "date": "2021-11-20T04:14:28Z", - "id": 7330956, - "issues": [ - { - "id": 1055987479, - "labels": ["types"], - "number": 168, - "title": "Don't narrow generic on type specific assertions", - "url": "https://github.com/hapijs/code/pull/168" - }, - { - "id": 1055372280, - "labels": ["types"], - "number": 167, - "title": "compilation errors for primitive type assertions", - "url": "https://github.com/hapijs/code/issues/167" - } - ], - "number": 34, - "url": "https://github.com/hapijs/code/milestone/34", - "version": "8.0.5" - }, - { - "date": "2021-11-05T14:23:06Z", - "id": 6548811, - "issues": [ - { - "id": 1045829273, - "labels": ["documentation"], - "number": 165, - "title": "Fix aliases for reject()", - "url": "https://github.com/hapijs/code/pull/165" - }, - { - "id": 853268953, - "labels": ["bug", "types"], - "number": 163, - "title": "Improve typings", - "url": "https://github.com/hapijs/code/pull/163" - } - ], - "number": 33, - "url": "https://github.com/hapijs/code/milestone/33", - "version": "8.0.4" - }, - { - "date": "2021-03-15T18:59:37Z", - "id": 6548801, - "issues": [ - { - "id": 830110474, - "labels": ["types"], - "number": 161, - "title": "Fix reject(s) return type", - "url": "https://github.com/hapijs/code/pull/161" - }, - { - "id": 829957775, - "labels": ["types"], - "number": 160, - "title": "The type `.rejects` returns should return a Promise", - "url": "https://github.com/hapijs/code/issues/160" - } - ], - "number": 32, - "url": "https://github.com/hapijs/code/milestone/32", - "version": "8.0.3" - }, - { - "date": "2021-03-15T18:56:29Z", - "id": 4972049, - "issues": [ - { - "id": 709589174, - "labels": [], - "number": 158, - "title": "upgrade lab to v24 and devDependency of typescript", - "url": "https://github.com/hapijs/code/pull/158" - } - ], - "number": 31, - "url": "https://github.com/hapijs/code/milestone/31", - "version": "8.0.2" - }, - { - "date": "2020-01-03T23:26:48Z", - "id": 4972036, - "issues": [ - { - "id": 545203593, - "labels": ["dependency"], - "number": 155, - "title": "Fix function string in node 13", - "url": "https://github.com/hapijs/code/issues/155" - }, - { - "id": 545198217, - "labels": ["dependency"], - "number": 154, - "title": "Update hoek", - "url": "https://github.com/hapijs/code/issues/154" - } - ], - "number": 30, - "url": "https://github.com/hapijs/code/milestone/30", - "version": "8.0.1" - }, - { - "date": "2020-01-03T23:00:17Z", - "id": 4972035, - "issues": [ - { - "id": 545196741, - "labels": ["breaking changes", "dependency"], - "number": 153, - "title": "Support only node 12", - "url": "https://github.com/hapijs/code/issues/153" - } - ], - "number": 29, - "url": "https://github.com/hapijs/code/milestone/29", - "version": "8.0.0" - }, - { - "date": "2019-10-13T01:12:53Z", - "id": 4519370, - "issues": [ - { - "id": 506238475, - "labels": ["breaking changes", "types"], - "number": 151, - "title": "Add types", - "url": "https://github.com/hapijs/code/issues/151" - }, - { - "id": 506238448, - "labels": ["breaking changes", "dependency"], - "number": 150, - "title": "Drop node 8", - "url": "https://github.com/hapijs/code/issues/150" - } - ], - "number": 27, - "url": "https://github.com/hapijs/code/milestone/27", - "version": "7.0.0" - }, - { - "date": "2019-07-24T18:08:54Z", - "id": 4184536, - "issues": [ - { - "id": 472425331, - "labels": ["breaking changes"], - "number": 142, - "title": "Deep comparison includes symbols", - "url": "https://github.com/hapijs/code/issues/142" - }, - { - "id": 472414176, - "labels": ["feature"], - "number": 141, - "title": "Support deep comparison key skipping", - "url": "https://github.com/hapijs/code/issues/141" - }, - { - "id": 472413755, - "labels": ["breaking changes", "feature"], - "number": 140, - "title": "Use deepFunction flag for deep comparison", - "url": "https://github.com/hapijs/code/issues/140" - } - ], - "number": 26, - "url": "https://github.com/hapijs/code/milestone/26", - "version": "6.0.0" - }, - { - "date": "2019-03-29T23:11:53Z", - "id": 4184180, - "issues": [ - { - "id": 427209781, - "labels": ["bug"], - "number": 136, - "title": "Better handling of thrown stack parsing", - "url": "https://github.com/hapijs/code/issues/136" - } - ], - "number": 25, - "url": "https://github.com/hapijs/code/milestone/25", - "version": "5.3.1" - }, - { - "date": "2019-03-29T22:05:13Z", - "id": 3792164, - "issues": [ - { - "id": 427146439, - "labels": ["non issue"], - "number": 135, - "title": "Change module namespace", - "url": "https://github.com/hapijs/code/issues/135" - } - ], - "number": 24, - "url": "https://github.com/hapijs/code/milestone/24", - "version": "5.3.0" - }, - { - "date": "2018-11-02T23:38:42Z", - "id": 3787411, - "issues": [ - { - "id": 376999137, - "labels": ["non issue"], - "number": 130, - "title": "Remove engines", - "url": "https://github.com/hapijs/code/issues/130" - } - ], - "number": 23, - "url": "https://github.com/hapijs/code/milestone/23", - "version": "5.2.3" - }, - { - "date": "2018-11-01T07:16:43Z", - "id": 3104171, - "issues": [ - { - "id": 376280297, - "labels": ["dependency"], - "number": 129, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/code/issues/129" - } - ], - "number": 22, - "url": "https://github.com/hapijs/code/milestone/22", - "version": "5.2.2" - }, - { - "date": "2018-02-09T23:15:42Z", - "id": 2885256, - "issues": [ - { - "id": 295356208, - "labels": ["feature"], - "number": 124, - "title": "Return error when asserting for thrown. Closes #123", - "url": "https://github.com/hapijs/code/pull/124" - }, - { - "id": 292751326, - "labels": ["feature"], - "number": 123, - "title": "Assertions on error properties", - "url": "https://github.com/hapijs/code/issues/123" - }, - { - "id": 281221190, - "labels": [], - "number": 121, - "title": "Invalidates rejection with wrong type or message arguments", - "url": "https://github.com/hapijs/code/pull/121" - }, - { - "id": 276451633, - "labels": ["bug"], - "number": 119, - "title": " reject does not fail if argument is of the wrong type", - "url": "https://github.com/hapijs/code/issues/119" - } - ], - "number": 21, - "url": "https://github.com/hapijs/code/milestone/21", - "version": "5.2.0" - }, - { - "date": "2017-11-03T07:01:44Z", - "id": 2885255, - "issues": [ - { - "id": 270891986, - "labels": ["dependency"], - "number": 117, - "title": "Update dependencies", - "url": "https://github.com/hapijs/code/issues/117" - } - ], - "number": 20, - "url": "https://github.com/hapijs/code/milestone/20", - "version": "5.1.2" - }, - { - "date": "2017-11-03T07:01:00Z", - "id": 2772250, - "issues": [ - { - "id": 268568378, - "labels": ["documentation"], - "number": 116, - "title": "Fix broken API.md anchor", - "url": "https://github.com/hapijs/code/pull/116" - }, - { - "id": 263809706, - "labels": ["bug"], - "number": 111, - "title": "fix(length): throw decent error on length check of `null`", - "url": "https://github.com/hapijs/code/pull/111" - }, - { - "id": 263194236, - "labels": ["bug"], - "number": 110, - "title": "Cannot read property 'length' of null", - "url": "https://github.com/hapijs/code/issues/110" - } - ], - "number": 19, - "url": "https://github.com/hapijs/code/milestone/19", - "version": "5.1.1" - }, - { - "date": "2017-09-17T20:23:14Z", - "id": 2770640, - "issues": [ - { - "id": 258305485, - "labels": ["feature"], - "number": 106, - "title": "Allow custom validation function for reject ", - "url": "https://github.com/hapijs/code/issues/106" - } - ], - "number": 18, - "url": "https://github.com/hapijs/code/milestone/18", - "version": "5.1.0" - }, - { - "date": "2017-09-17T17:44:30Z", - "id": 2154322, - "issues": [ - { - "id": 258206365, - "labels": ["breaking changes", "feature"], - "number": 105, - "title": "Add promises rejection support", - "url": "https://github.com/hapijs/code/pull/105" - }, - { - "id": 242996344, - "labels": ["test"], - "number": 104, - "title": "Add test for async functions", - "url": "https://github.com/hapijs/code/issues/104" - }, - { - "id": 242931205, - "labels": ["bug"], - "number": 103, - "title": "Expected async function to be a function", - "url": "https://github.com/hapijs/code/issues/103" - } - ], - "number": 17, - "url": "https://github.com/hapijs/code/milestone/17", - "version": "5.0.0" - }, - { - "date": "2017-06-08T16:27:08Z", - "id": 2020660, - "issues": [ - { - "id": 234581841, - "labels": ["feature"], - "number": 102, - "title": "please publish new version", - "url": "https://github.com/hapijs/code/pull/102" - }, - { - "id": 232672467, - "labels": ["feature"], - "number": 101, - "title": "print expected value on equals assertion", - "url": "https://github.com/hapijs/code/pull/101" - }, - { - "id": 190300300, - "labels": ["feature"], - "number": 94, - "title": "Reference value NaN assertion.", - "url": "https://github.com/hapijs/code/pull/94" - } - ], - "number": 16, - "url": "https://github.com/hapijs/code/milestone/16", - "version": "4.1.0" - }, - { - "date": "2016-09-21T23:41:19Z", - "id": 1813415, - "issues": [ - { - "id": 177740192, - "labels": ["non issue", "support"], - "number": 91, - "title": "New release?", - "url": "https://github.com/hapijs/code/issues/91" - }, - { - "id": 176196539, - "labels": ["documentation"], - "number": 89, - "title": "Docs: Modified match API documentation", - "url": "https://github.com/hapijs/code/pull/89" - }, - { - "id": 174562062, - "labels": ["test"], - "number": 87, - "title": "fix tests for Node v6.5.0", - "url": "https://github.com/hapijs/code/pull/87" - }, - { - "id": 174060638, - "labels": ["test"], - "number": 86, - "title": "Tests failing on node 6.5.0", - "url": "https://github.com/hapijs/code/issues/86" - }, - { - "id": 172622658, - "labels": ["feature"], - "number": 84, - "title": "Enhancement: Added validation to `include`", - "url": "https://github.com/hapijs/code/pull/84" - }, - { - "id": 172621809, - "labels": ["feature"], - "number": 83, - "title": "Include should validate number of arguments", - "url": "https://github.com/hapijs/code/issues/83" - }, - { - "id": 171472936, - "labels": ["test"], - "number": 82, - "title": "fix broken test from Node v6.4.0 update", - "url": "https://github.com/hapijs/code/pull/82" - }, - { - "id": 171472622, - "labels": ["test"], - "number": 81, - "title": "Fix broken test", - "url": "https://github.com/hapijs/code/issues/81" - }, - { - "id": 161157858, - "labels": ["bug", "breaking changes"], - "number": 77, - "title": "Invalidate array of objects with only a partial object value", - "url": "https://github.com/hapijs/code/pull/77" - } - ], - "number": 15, - "url": "https://github.com/hapijs/code/milestone/15", - "version": "4.0.0" - }, - { - "date": "2016-06-07T13:16:52Z", - "id": 1779944, - "issues": [ - { - "id": 158920216, - "labels": ["feature"], - "number": 75, - "title": "Add .npmignore file", - "url": "https://github.com/hapijs/code/issues/75" - } - ], - "number": 14, - "url": "https://github.com/hapijs/code/milestone/14", - "version": "3.0.1" - }, - { - "date": "2016-05-21T01:35:27Z", - "id": 1752290, - "issues": [ - { - "id": 155860523, - "labels": ["breaking changes"], - "number": 73, - "title": "change default comparison behavior", - "url": "https://github.com/hapijs/code/pull/73" - }, - { - "id": 155842494, - "labels": ["documentation"], - "number": 72, - "title": "Fix link to hoek documentation", - "url": "https://github.com/hapijs/code/pull/72" - }, - { - "id": 151996071, - "labels": ["breaking changes", "feature"], - "number": 68, - "title": "Default to deep copy", - "url": "https://github.com/hapijs/code/issues/68" - } - ], - "number": 13, - "url": "https://github.com/hapijs/code/milestone/13", - "version": "3.0.0" - }, - { - "date": "2016-05-06T19:25:15Z", - "id": 1687236, - "issues": [ - { - "id": 153516094, - "labels": ["bug"], - "number": 71, - "title": "Fix at location information. Closes #70", - "url": "https://github.com/hapijs/code/pull/71" - }, - { - "id": 153516021, - "labels": ["bug"], - "number": 70, - "title": "expect(err).to.not.exist() reports wrong 'at' information", - "url": "https://github.com/hapijs/code/issues/70" - } - ], - "number": 12, - "url": "https://github.com/hapijs/code/milestone/12", - "version": "2.3.0" - }, - { - "date": "2016-04-06T13:55:11Z", - "id": 1687235, - "issues": [ - { - "id": 146319291, - "labels": ["documentation"], - "number": 64, - "title": "Add documentation to error() (fixes #63)", - "url": "https://github.com/hapijs/code/pull/64" - }, - { - "id": 146313145, - "labels": ["documentation"], - "number": 63, - "title": "Document new error() method", - "url": "https://github.com/hapijs/code/issues/63" - }, - { - "id": 146033514, - "labels": ["feature"], - "number": 62, - "title": "Add error type (fixes #61)", - "url": "https://github.com/hapijs/code/pull/62" - }, - { - "id": 145984653, - "labels": ["feature"], - "number": 61, - "title": "Proposal: error type", - "url": "https://github.com/hapijs/code/issues/61" - } - ], - "number": 11, - "url": "https://github.com/hapijs/code/milestone/11", - "version": "2.2.0" - }, - { - "date": "2016-04-06T13:19:32Z", - "id": 1478231, - "issues": [ - { - "id": 140221813, - "labels": ["bug"], - "number": 58, - "title": "handle errors without proper stacks", - "url": "https://github.com/hapijs/code/pull/58" - }, - { - "id": 139856359, - "labels": ["bug"], - "number": 57, - "title": "Problem with internals.at", - "url": "https://github.com/hapijs/code/issues/57" - }, - { - "id": 135490969, - "labels": ["documentation"], - "number": 56, - "title": "minor typo fix", - "url": "https://github.com/hapijs/code/pull/56" - }, - { - "id": 124793347, - "labels": ["dependency"], - "number": 55, - "title": "Update dep format for markdown-toc", - "url": "https://github.com/hapijs/code/pull/55" - }, - { - "id": 124587191, - "labels": ["documentation"], - "number": 54, - "title": "Readme tweaks", - "url": "https://github.com/hapijs/code/pull/54" - } - ], - "number": 10, - "url": "https://github.com/hapijs/code/milestone/10", - "version": "2.1.1" - }, - { - "date": "2015-12-30T15:50:42Z", - "id": 1386059, - "issues": [ - { - "id": 124356320, - "labels": ["feature"], - "number": 51, - "title": "add fail method", - "url": "https://github.com/hapijs/code/pull/51" - }, - { - "id": 119232498, - "labels": ["bug"], - "number": 48, - "title": "customize error message for once flag", - "url": "https://github.com/hapijs/code/pull/48" - }, - { - "id": 118779502, - "labels": ["bug"], - "number": 47, - "title": "once flag should change error message", - "url": "https://github.com/hapijs/code/issues/47" - } - ], - "number": 9, - "url": "https://github.com/hapijs/code/milestone/9", - "version": "2.1.0" - }, - { - "date": "2015-10-30T19:43:24Z", - "id": 1385958, - "issues": [ - { - "id": 114329544, - "labels": ["dependency"], - "number": 45, - "title": "Update hapijs/hoek to 3.0.0 from 2.16.3", - "url": "https://github.com/hapijs/code/issues/45" - } - ], - "number": 8, - "url": "https://github.com/hapijs/code/milestone/8", - "version": "2.0.1" - }, - { - "date": "2015-10-30T19:43:21Z", - "id": 1232572, - "issues": [ - { - "id": 114329094, - "labels": ["dependency", "feature"], - "number": 44, - "title": "es6 style. Closes #43", - "url": "https://github.com/hapijs/code/pull/44" - }, - { - "id": 114328758, - "labels": ["dependency", "feature"], - "number": 43, - "title": "node v4, es6", - "url": "https://github.com/hapijs/code/issues/43" - }, - { - "id": 103763104, - "labels": ["documentation"], + { + "date": "2023-02-11T18:01:54Z", + "id": 8701291, + "issues": [ + { + "id": 1551746332, + "labels": [], + "number": 179, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/code/pull/179" + } + ], + "number": 41, + "url": "https://github.com/hapijs/code/milestone/41", + "version": "9.0.3" + }, + { + "date": "2022-11-29T08:49:48Z", + "id": 8080669, + "issues": [ + { + "id": 1458813434, + "labels": ["bug", "types"], + "number": 178, + "title": "Fix typo and add missing type", + "url": "https://github.com/hapijs/code/pull/178" + } + ], + "number": 40, + "url": "https://github.com/hapijs/code/milestone/40", + "version": "9.0.2" + }, + { + "date": "2022-06-14T15:40:06Z", + "id": 7932293, + "issues": [ + { + "id": 1248750441, + "labels": ["dependency", "types"], + "number": 177, + "title": "Fix `reject()` types", + "url": "https://github.com/hapijs/code/pull/177" + } + ], + "number": 39, + "url": "https://github.com/hapijs/code/milestone/39", + "version": "9.0.1" + }, + { + "date": "2022-06-14T15:39:02Z", + "id": 7910880, + "issues": [ + { + "id": 1213761276, + "labels": ["breaking changes", "dependency"], + "number": 175, + "title": "Drop node v12, support node v18", + "url": "https://github.com/hapijs/code/pull/175" + } + ], "number": 38, - "title": "markdown fixes", - "url": "https://github.com/hapijs/code/pull/38" - }, - { - "id": 103366175, - "labels": ["documentation"], + "url": "https://github.com/hapijs/code/milestone/38", + "version": "9.0.0" + }, + { + "date": "2022-04-25T13:55:13Z", + "id": 7652853, + "issues": [], "number": 37, - "title": "fixed markdown link for equal", - "url": "https://github.com/hapijs/code/pull/37" - } - ], - "number": 7, - "url": "https://github.com/hapijs/code/milestone/7", - "version": "2.0.0" - }, - { - "date": "2015-07-29T23:49:49Z", - "id": 1167322, - "issues": [ - { - "id": 98046772, - "labels": ["feature"], + "url": "https://github.com/hapijs/code/milestone/37", + "version": "8.0.8" + }, + { + "date": "2022-02-08T07:04:40Z", + "id": 7604614, + "issues": [ + { + "id": 1126504744, + "labels": ["bug", "types"], + "number": 174, + "title": "Fix equal() type", + "url": "https://github.com/hapijs/code/pull/174" + } + ], "number": 36, - "title": "Display error when should not exist. Closes #35", - "url": "https://github.com/hapijs/code/pull/36" - }, - { - "id": 98046270, - "labels": ["feature"], + "url": "https://github.com/hapijs/code/milestone/36", + "version": "8.0.7" + }, + { + "date": "2022-01-24T14:51:35Z", + "id": 7413852, + "issues": [ + { + "id": 1112271871, + "labels": ["bug", "types"], + "number": 173, + "title": "Fix equal() types", + "url": "https://github.com/hapijs/code/pull/173" + }, + { + "id": 1112268077, + "labels": ["bug", "types"], + "number": 172, + "title": "equal(value: T) type should be Loosely when options ignore symbols or properties", + "url": "https://github.com/hapijs/code/issues/172" + }, + { + "id": 1111853212, + "labels": ["bug", "types"], + "number": 171, + "title": "Fix typings for throw() and reject()", + "url": "https://github.com/hapijs/code/pull/171" + } + ], "number": 35, - "title": "Throw original error when not.exist(err) is asserted", - "url": "https://github.com/hapijs/code/issues/35" - }, - { - "id": 90964416, - "labels": ["feature"], + "url": "https://github.com/hapijs/code/milestone/35", + "version": "8.0.6" + }, + { + "date": "2021-11-20T04:14:28Z", + "id": 7330956, + "issues": [ + { + "id": 1055987479, + "labels": ["types"], + "number": 168, + "title": "Don't narrow generic on type specific assertions", + "url": "https://github.com/hapijs/code/pull/168" + }, + { + "id": 1055372280, + "labels": ["types"], + "number": 167, + "title": "compilation errors for primitive type assertions", + "url": "https://github.com/hapijs/code/issues/167" + } + ], + "number": 34, + "url": "https://github.com/hapijs/code/milestone/34", + "version": "8.0.5" + }, + { + "date": "2021-11-05T14:23:06Z", + "id": 6548811, + "issues": [ + { + "id": 1045829273, + "labels": ["documentation"], + "number": 165, + "title": "Fix aliases for reject()", + "url": "https://github.com/hapijs/code/pull/165" + }, + { + "id": 853268953, + "labels": ["bug", "types"], + "number": 163, + "title": "Improve typings", + "url": "https://github.com/hapijs/code/pull/163" + } + ], + "number": 33, + "url": "https://github.com/hapijs/code/milestone/33", + "version": "8.0.4" + }, + { + "date": "2021-03-15T18:59:37Z", + "id": 6548801, + "issues": [ + { + "id": 830110474, + "labels": ["types"], + "number": 161, + "title": "Fix reject(s) return type", + "url": "https://github.com/hapijs/code/pull/161" + }, + { + "id": 829957775, + "labels": ["types"], + "number": 160, + "title": "The type `.rejects` returns should return a Promise", + "url": "https://github.com/hapijs/code/issues/160" + } + ], "number": 32, - "title": "Added new global setting to ignore prototypes.", - "url": "https://github.com/hapijs/code/pull/32" - } - ], - "number": 6, - "url": "https://github.com/hapijs/code/milestone/6", - "version": "1.5.0" - }, - { - "date": "2015-06-16T19:02:31Z", - "id": 1040842, - "issues": [ - { - "id": 88804789, - "labels": ["bug"], + "url": "https://github.com/hapijs/code/milestone/32", + "version": "8.0.3" + }, + { + "date": "2021-03-15T18:56:29Z", + "id": 4972049, + "issues": [ + { + "id": 709589174, + "labels": [], + "number": 158, + "title": "upgrade lab to v24 and devDependency of typescript", + "url": "https://github.com/hapijs/code/pull/158" + } + ], "number": 31, - "title": "Handle multi-line errors", - "url": "https://github.com/hapijs/code/pull/31" - }, - { - "id": 88566890, - "labels": ["bug"], + "url": "https://github.com/hapijs/code/milestone/31", + "version": "8.0.2" + }, + { + "date": "2020-01-03T23:26:48Z", + "id": 4972036, + "issues": [ + { + "id": 545203593, + "labels": ["dependency"], + "number": 155, + "title": "Fix function string in node 13", + "url": "https://github.com/hapijs/code/issues/155" + }, + { + "id": 545198217, + "labels": ["dependency"], + "number": 154, + "title": "Update hoek", + "url": "https://github.com/hapijs/code/issues/154" + } + ], "number": 30, - "title": "`settings.truncateMessages = false` causes issues with deep object comparisons", - "url": "https://github.com/hapijs/code/issues/30" - }, - { - "id": 78345232, - "labels": ["documentation"], + "url": "https://github.com/hapijs/code/milestone/30", + "version": "8.0.1" + }, + { + "date": "2020-01-03T23:00:17Z", + "id": 4972035, + "issues": [ + { + "id": 545196741, + "labels": ["breaking changes", "dependency"], + "number": 153, + "title": "Support only node 12", + "url": "https://github.com/hapijs/code/issues/153" + } + ], "number": 29, - "title": "Fixed the description for the empty() assertion in README.md", - "url": "https://github.com/hapijs/code/pull/29" - } - ], - "number": 5, - "url": "https://github.com/hapijs/code/milestone/5", - "version": "1.4.1" - }, - { - "date": "2015-03-27T08:20:56Z", - "id": 945734, - "issues": [ - { - "id": 64643563, - "labels": ["feature"], - "number": 28, - "title": "Release code 1.4.0", - "url": "https://github.com/hapijs/code/pull/28" - }, - { - "id": 64641770, - "labels": ["documentation"], + "url": "https://github.com/hapijs/code/milestone/29", + "version": "8.0.0" + }, + { + "date": "2019-10-13T01:12:53Z", + "id": 4519370, + "issues": [ + { + "id": 506238475, + "labels": ["breaking changes", "types"], + "number": 151, + "title": "Add types", + "url": "https://github.com/hapijs/code/issues/151" + }, + { + "id": 506238448, + "labels": ["breaking changes", "dependency"], + "number": 150, + "title": "Drop node 8", + "url": "https://github.com/hapijs/code/issues/150" + } + ], "number": 27, - "title": "Add documentation for global settings", - "url": "https://github.com/hapijs/code/pull/27" - }, - { - "id": 64631299, - "labels": ["feature"], + "url": "https://github.com/hapijs/code/milestone/27", + "version": "7.0.0" + }, + { + "date": "2019-07-24T18:08:54Z", + "id": 4184536, + "issues": [ + { + "id": 472425331, + "labels": ["breaking changes"], + "number": 142, + "title": "Deep comparison includes symbols", + "url": "https://github.com/hapijs/code/issues/142" + }, + { + "id": 472414176, + "labels": ["feature"], + "number": 141, + "title": "Support deep comparison key skipping", + "url": "https://github.com/hapijs/code/issues/141" + }, + { + "id": 472413755, + "labels": ["breaking changes", "feature"], + "number": 140, + "title": "Use deepFunction flag for deep comparison", + "url": "https://github.com/hapijs/code/issues/140" + } + ], "number": 26, - "title": "Add configuration settings, including disabling message truncating", - "url": "https://github.com/hapijs/code/pull/26" - }, - { - "id": 64080742, - "labels": ["feature"], + "url": "https://github.com/hapijs/code/milestone/26", + "version": "6.0.0" + }, + { + "date": "2019-03-29T23:11:53Z", + "id": 4184180, + "issues": [ + { + "id": 427209781, + "labels": ["bug"], + "number": 136, + "title": "Better handling of thrown stack parsing", + "url": "https://github.com/hapijs/code/issues/136" + } + ], "number": 25, - "title": "Allow prototypes to be ignored in deep.equal()", - "url": "https://github.com/hapijs/code/pull/25" - }, - { - "id": 64079830, - "labels": ["feature"], + "url": "https://github.com/hapijs/code/milestone/25", + "version": "5.3.1" + }, + { + "date": "2019-03-29T22:05:13Z", + "id": 3792164, + "issues": [ + { + "id": 427146439, + "labels": ["non issue"], + "number": 135, + "title": "Change module namespace", + "url": "https://github.com/hapijs/code/issues/135" + } + ], "number": 24, - "title": "Allow prototypes to be ignored in deep comparisons", - "url": "https://github.com/hapijs/code/issues/24" - }, - { - "id": 63805223, - "labels": ["bug", "documentation"], + "url": "https://github.com/hapijs/code/milestone/24", + "version": "5.3.0" + }, + { + "date": "2018-11-02T23:38:42Z", + "id": 3787411, + "issues": [ + { + "id": 376999137, + "labels": ["non issue"], + "number": 130, + "title": "Remove engines", + "url": "https://github.com/hapijs/code/issues/130" + } + ], "number": 23, - "title": "readme typo and better message", - "url": "https://github.com/hapijs/code/pull/23" - }, - { - "id": 59495622, - "labels": ["test"], + "url": "https://github.com/hapijs/code/milestone/23", + "version": "5.2.3" + }, + { + "date": "2018-11-01T07:16:43Z", + "id": 3104171, + "issues": [ + { + "id": 376280297, + "labels": ["dependency"], + "number": 129, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/code/issues/129" + } + ], + "number": 22, + "url": "https://github.com/hapijs/code/milestone/22", + "version": "5.2.2" + }, + { + "date": "2018-02-09T23:15:42Z", + "id": 2885256, + "issues": [ + { + "id": 295356208, + "labels": ["feature"], + "number": 124, + "title": "Return error when asserting for thrown. Closes #123", + "url": "https://github.com/hapijs/code/pull/124" + }, + { + "id": 292751326, + "labels": ["feature"], + "number": 123, + "title": "Assertions on error properties", + "url": "https://github.com/hapijs/code/issues/123" + }, + { + "id": 281221190, + "labels": [], + "number": 121, + "title": "Invalidates rejection with wrong type or message arguments", + "url": "https://github.com/hapijs/code/pull/121" + }, + { + "id": 276451633, + "labels": ["bug"], + "number": 119, + "title": " reject does not fail if argument is of the wrong type", + "url": "https://github.com/hapijs/code/issues/119" + } + ], + "number": 21, + "url": "https://github.com/hapijs/code/milestone/21", + "version": "5.2.0" + }, + { + "date": "2017-11-03T07:01:44Z", + "id": 2885255, + "issues": [ + { + "id": 270891986, + "labels": ["dependency"], + "number": 117, + "title": "Update dependencies", + "url": "https://github.com/hapijs/code/issues/117" + } + ], + "number": 20, + "url": "https://github.com/hapijs/code/milestone/20", + "version": "5.1.2" + }, + { + "date": "2017-11-03T07:01:00Z", + "id": 2772250, + "issues": [ + { + "id": 268568378, + "labels": ["documentation"], + "number": 116, + "title": "Fix broken API.md anchor", + "url": "https://github.com/hapijs/code/pull/116" + }, + { + "id": 263809706, + "labels": ["bug"], + "number": 111, + "title": "fix(length): throw decent error on length check of `null`", + "url": "https://github.com/hapijs/code/pull/111" + }, + { + "id": 263194236, + "labels": ["bug"], + "number": 110, + "title": "Cannot read property 'length' of null", + "url": "https://github.com/hapijs/code/issues/110" + } + ], + "number": 19, + "url": "https://github.com/hapijs/code/milestone/19", + "version": "5.1.1" + }, + { + "date": "2017-09-17T20:23:14Z", + "id": 2770640, + "issues": [ + { + "id": 258305485, + "labels": ["feature"], + "number": 106, + "title": "Allow custom validation function for reject ", + "url": "https://github.com/hapijs/code/issues/106" + } + ], "number": 18, - "title": "Remove Makefile in favor of npm scripts", - "url": "https://github.com/hapijs/code/pull/18" - }, - { - "id": 59493472, - "labels": ["bug"], + "url": "https://github.com/hapijs/code/milestone/18", + "version": "5.1.0" + }, + { + "date": "2017-09-17T17:44:30Z", + "id": 2154322, + "issues": [ + { + "id": 258206365, + "labels": ["breaking changes", "feature"], + "number": 105, + "title": "Add promises rejection support", + "url": "https://github.com/hapijs/code/pull/105" + }, + { + "id": 242996344, + "labels": ["test"], + "number": 104, + "title": "Add test for async functions", + "url": "https://github.com/hapijs/code/issues/104" + }, + { + "id": 242931205, + "labels": ["bug"], + "number": 103, + "title": "Expected async function to be a function", + "url": "https://github.com/hapijs/code/issues/103" + } + ], "number": 17, - "title": "Verify deep.equal() functionality after changes to Hoek.deepEqual()", - "url": "https://github.com/hapijs/code/pull/17" - }, - { - "id": 58510458, - "labels": ["bug"], + "url": "https://github.com/hapijs/code/milestone/17", + "version": "5.0.0" + }, + { + "date": "2017-06-08T16:27:08Z", + "id": 2020660, + "issues": [ + { + "id": 234581841, + "labels": ["feature"], + "number": 102, + "title": "please publish new version", + "url": "https://github.com/hapijs/code/pull/102" + }, + { + "id": 232672467, + "labels": ["feature"], + "number": 101, + "title": "print expected value on equals assertion", + "url": "https://github.com/hapijs/code/pull/101" + }, + { + "id": 190300300, + "labels": ["feature"], + "number": 94, + "title": "Reference value NaN assertion.", + "url": "https://github.com/hapijs/code/pull/94" + } + ], + "number": 16, + "url": "https://github.com/hapijs/code/milestone/16", + "version": "4.1.0" + }, + { + "date": "2016-09-21T23:41:19Z", + "id": 1813415, + "issues": [ + { + "id": 177740192, + "labels": ["non issue", "support"], + "number": 91, + "title": "New release?", + "url": "https://github.com/hapijs/code/issues/91" + }, + { + "id": 176196539, + "labels": ["documentation"], + "number": 89, + "title": "Docs: Modified match API documentation", + "url": "https://github.com/hapijs/code/pull/89" + }, + { + "id": 174562062, + "labels": ["test"], + "number": 87, + "title": "fix tests for Node v6.5.0", + "url": "https://github.com/hapijs/code/pull/87" + }, + { + "id": 174060638, + "labels": ["test"], + "number": 86, + "title": "Tests failing on node 6.5.0", + "url": "https://github.com/hapijs/code/issues/86" + }, + { + "id": 172622658, + "labels": ["feature"], + "number": 84, + "title": "Enhancement: Added validation to `include`", + "url": "https://github.com/hapijs/code/pull/84" + }, + { + "id": 172621809, + "labels": ["feature"], + "number": 83, + "title": "Include should validate number of arguments", + "url": "https://github.com/hapijs/code/issues/83" + }, + { + "id": 171472936, + "labels": ["test"], + "number": 82, + "title": "fix broken test from Node v6.4.0 update", + "url": "https://github.com/hapijs/code/pull/82" + }, + { + "id": 171472622, + "labels": ["test"], + "number": 81, + "title": "Fix broken test", + "url": "https://github.com/hapijs/code/issues/81" + }, + { + "id": 161157858, + "labels": ["bug", "breaking changes"], + "number": 77, + "title": "Invalidate array of objects with only a partial object value", + "url": "https://github.com/hapijs/code/pull/77" + } + ], "number": 15, - "title": ".to.deep.equal() performs unexpectedly with empty object", - "url": "https://github.com/hapijs/code/issues/15" - }, - { - "id": 55786623, - "labels": ["feature"], + "url": "https://github.com/hapijs/code/milestone/15", + "version": "4.0.0" + }, + { + "date": "2016-06-07T13:16:52Z", + "id": 1779944, + "issues": [ + { + "id": 158920216, + "labels": ["feature"], + "number": 75, + "title": "Add .npmignore file", + "url": "https://github.com/hapijs/code/issues/75" + } + ], "number": 14, - "title": "do not truncate values in assertions", - "url": "https://github.com/hapijs/code/issues/14" - } - ], - "number": 4, - "url": "https://github.com/hapijs/code/milestone/4", - "version": "1.4.0" - }, - { - "date": "2015-01-21T19:05:41Z", - "id": 850240, - "issues": [ - { - "id": 55060047, - "labels": ["feature"], + "url": "https://github.com/hapijs/code/milestone/14", + "version": "3.0.1" + }, + { + "date": "2016-05-21T01:35:27Z", + "id": 1752290, + "issues": [ + { + "id": 155860523, + "labels": ["breaking changes"], + "number": 73, + "title": "change default comparison behavior", + "url": "https://github.com/hapijs/code/pull/73" + }, + { + "id": 155842494, + "labels": ["documentation"], + "number": 72, + "title": "Fix link to hoek documentation", + "url": "https://github.com/hapijs/code/pull/72" + }, + { + "id": 151996071, + "labels": ["breaking changes", "feature"], + "number": 68, + "title": "Default to deep copy", + "url": "https://github.com/hapijs/code/issues/68" + } + ], "number": 13, - "title": "code 1.3.0", - "url": "https://github.com/hapijs/code/pull/13" - }, - { - "id": 54112514, - "labels": ["bug"], + "url": "https://github.com/hapijs/code/milestone/13", + "version": "3.0.0" + }, + { + "date": "2016-05-06T19:25:15Z", + "id": 1687236, + "issues": [ + { + "id": 153516094, + "labels": ["bug"], + "number": 71, + "title": "Fix at location information. Closes #70", + "url": "https://github.com/hapijs/code/pull/71" + }, + { + "id": 153516021, + "labels": ["bug"], + "number": 70, + "title": "expect(err).to.not.exist() reports wrong 'at' information", + "url": "https://github.com/hapijs/code/issues/70" + } + ], + "number": 12, + "url": "https://github.com/hapijs/code/milestone/12", + "version": "2.3.0" + }, + { + "date": "2016-04-06T13:55:11Z", + "id": 1687235, + "issues": [ + { + "id": 146319291, + "labels": ["documentation"], + "number": 64, + "title": "Add documentation to error() (fixes #63)", + "url": "https://github.com/hapijs/code/pull/64" + }, + { + "id": 146313145, + "labels": ["documentation"], + "number": 63, + "title": "Document new error() method", + "url": "https://github.com/hapijs/code/issues/63" + }, + { + "id": 146033514, + "labels": ["feature"], + "number": 62, + "title": "Add error type (fixes #61)", + "url": "https://github.com/hapijs/code/pull/62" + }, + { + "id": 145984653, + "labels": ["feature"], + "number": 61, + "title": "Proposal: error type", + "url": "https://github.com/hapijs/code/issues/61" + } + ], "number": 11, - "title": "Object [object Object] has no method 'startWith'", - "url": "https://github.com/hapijs/code/issues/11" - }, - { - "id": 50473060, - "labels": ["bug"], + "url": "https://github.com/hapijs/code/milestone/11", + "version": "2.2.0" + }, + { + "date": "2016-04-06T13:19:32Z", + "id": 1478231, + "issues": [ + { + "id": 140221813, + "labels": ["bug"], + "number": 58, + "title": "handle errors without proper stacks", + "url": "https://github.com/hapijs/code/pull/58" + }, + { + "id": 139856359, + "labels": ["bug"], + "number": 57, + "title": "Problem with internals.at", + "url": "https://github.com/hapijs/code/issues/57" + }, + { + "id": 135490969, + "labels": ["documentation"], + "number": 56, + "title": "minor typo fix", + "url": "https://github.com/hapijs/code/pull/56" + }, + { + "id": 124793347, + "labels": ["dependency"], + "number": 55, + "title": "Update dep format for markdown-toc", + "url": "https://github.com/hapijs/code/pull/55" + }, + { + "id": 124587191, + "labels": ["documentation"], + "number": 54, + "title": "Readme tweaks", + "url": "https://github.com/hapijs/code/pull/54" + } + ], "number": 10, - "title": "Reset flags after each assertion", - "url": "https://github.com/hapijs/code/pull/10" - }, - { - "id": 47699585, - "labels": ["feature"], + "url": "https://github.com/hapijs/code/milestone/10", + "version": "2.1.1" + }, + { + "date": "2015-12-30T15:50:42Z", + "id": 1386059, + "issues": [ + { + "id": 124356320, + "labels": ["feature"], + "number": 51, + "title": "add fail method", + "url": "https://github.com/hapijs/code/pull/51" + }, + { + "id": 119232498, + "labels": ["bug"], + "number": 48, + "title": "customize error message for once flag", + "url": "https://github.com/hapijs/code/pull/48" + }, + { + "id": 118779502, + "labels": ["bug"], + "number": 47, + "title": "once flag should change error message", + "url": "https://github.com/hapijs/code/issues/47" + } + ], + "number": 9, + "url": "https://github.com/hapijs/code/milestone/9", + "version": "2.1.0" + }, + { + "date": "2015-10-30T19:43:24Z", + "id": 1385958, + "issues": [ + { + "id": 114329544, + "labels": ["dependency"], + "number": 45, + "title": "Update hapijs/hoek to 3.0.0 from 2.16.3", + "url": "https://github.com/hapijs/code/issues/45" + } + ], + "number": 8, + "url": "https://github.com/hapijs/code/milestone/8", + "version": "2.0.1" + }, + { + "date": "2015-10-30T19:43:21Z", + "id": 1232572, + "issues": [ + { + "id": 114329094, + "labels": ["dependency", "feature"], + "number": 44, + "title": "es6 style. Closes #43", + "url": "https://github.com/hapijs/code/pull/44" + }, + { + "id": 114328758, + "labels": ["dependency", "feature"], + "number": 43, + "title": "node v4, es6", + "url": "https://github.com/hapijs/code/issues/43" + }, + { + "id": 103763104, + "labels": ["documentation"], + "number": 38, + "title": "markdown fixes", + "url": "https://github.com/hapijs/code/pull/38" + }, + { + "id": 103366175, + "labels": ["documentation"], + "number": 37, + "title": "fixed markdown link for equal", + "url": "https://github.com/hapijs/code/pull/37" + } + ], + "number": 7, + "url": "https://github.com/hapijs/code/milestone/7", + "version": "2.0.0" + }, + { + "date": "2015-07-29T23:49:49Z", + "id": 1167322, + "issues": [ + { + "id": 98046772, + "labels": ["feature"], + "number": 36, + "title": "Display error when should not exist. Closes #35", + "url": "https://github.com/hapijs/code/pull/36" + }, + { + "id": 98046270, + "labels": ["feature"], + "number": 35, + "title": "Throw original error when not.exist(err) is asserted", + "url": "https://github.com/hapijs/code/issues/35" + }, + { + "id": 90964416, + "labels": ["feature"], + "number": 32, + "title": "Added new global setting to ignore prototypes.", + "url": "https://github.com/hapijs/code/pull/32" + } + ], "number": 6, - "title": "Add startsWith and endsWith for URLs.", - "url": "https://github.com/hapijs/code/pull/6" - } - ], - "number": 3, - "url": "https://github.com/hapijs/code/milestone/3", - "version": "1.3.0" - }, - { - "date": "2014-11-02T18:59:41Z", - "id": 835500, - "issues": [ - { - "id": 47544946, - "labels": ["bug"], + "url": "https://github.com/hapijs/code/milestone/6", + "version": "1.5.0" + }, + { + "date": "2015-06-16T19:02:31Z", + "id": 1040842, + "issues": [ + { + "id": 88804789, + "labels": ["bug"], + "number": 31, + "title": "Handle multi-line errors", + "url": "https://github.com/hapijs/code/pull/31" + }, + { + "id": 88566890, + "labels": ["bug"], + "number": 30, + "title": "`settings.truncateMessages = false` causes issues with deep object comparisons", + "url": "https://github.com/hapijs/code/issues/30" + }, + { + "id": 78345232, + "labels": ["documentation"], + "number": 29, + "title": "Fixed the description for the empty() assertion in README.md", + "url": "https://github.com/hapijs/code/pull/29" + } + ], "number": 5, - "title": "throw('') matches any message", - "url": "https://github.com/hapijs/code/issues/5" - } - ], - "number": 2, - "url": "https://github.com/hapijs/code/milestone/2", - "version": "1.2.1" - }, - { - "date": "2014-10-22T06:14:51Z", - "id": 835499, - "issues": [ - { - "id": 46476183, - "labels": ["feature"], + "url": "https://github.com/hapijs/code/milestone/5", + "version": "1.4.1" + }, + { + "date": "2015-03-27T08:20:56Z", + "id": 945734, + "issues": [ + { + "id": 64643563, + "labels": ["feature"], + "number": 28, + "title": "Release code 1.4.0", + "url": "https://github.com/hapijs/code/pull/28" + }, + { + "id": 64641770, + "labels": ["documentation"], + "number": 27, + "title": "Add documentation for global settings", + "url": "https://github.com/hapijs/code/pull/27" + }, + { + "id": 64631299, + "labels": ["feature"], + "number": 26, + "title": "Add configuration settings, including disabling message truncating", + "url": "https://github.com/hapijs/code/pull/26" + }, + { + "id": 64080742, + "labels": ["feature"], + "number": 25, + "title": "Allow prototypes to be ignored in deep.equal()", + "url": "https://github.com/hapijs/code/pull/25" + }, + { + "id": 64079830, + "labels": ["feature"], + "number": 24, + "title": "Allow prototypes to be ignored in deep comparisons", + "url": "https://github.com/hapijs/code/issues/24" + }, + { + "id": 63805223, + "labels": ["bug", "documentation"], + "number": 23, + "title": "readme typo and better message", + "url": "https://github.com/hapijs/code/pull/23" + }, + { + "id": 59495622, + "labels": ["test"], + "number": 18, + "title": "Remove Makefile in favor of npm scripts", + "url": "https://github.com/hapijs/code/pull/18" + }, + { + "id": 59493472, + "labels": ["bug"], + "number": 17, + "title": "Verify deep.equal() functionality after changes to Hoek.deepEqual()", + "url": "https://github.com/hapijs/code/pull/17" + }, + { + "id": 58510458, + "labels": ["bug"], + "number": 15, + "title": ".to.deep.equal() performs unexpectedly with empty object", + "url": "https://github.com/hapijs/code/issues/15" + }, + { + "id": 55786623, + "labels": ["feature"], + "number": 14, + "title": "do not truncate values in assertions", + "url": "https://github.com/hapijs/code/issues/14" + } + ], + "number": 4, + "url": "https://github.com/hapijs/code/milestone/4", + "version": "1.4.0" + }, + { + "date": "2015-01-21T19:05:41Z", + "id": 850240, + "issues": [ + { + "id": 55060047, + "labels": ["feature"], + "number": 13, + "title": "code 1.3.0", + "url": "https://github.com/hapijs/code/pull/13" + }, + { + "id": 54112514, + "labels": ["bug"], + "number": 11, + "title": "Object [object Object] has no method 'startWith'", + "url": "https://github.com/hapijs/code/issues/11" + }, + { + "id": 50473060, + "labels": ["bug"], + "number": 10, + "title": "Reset flags after each assertion", + "url": "https://github.com/hapijs/code/pull/10" + }, + { + "id": 47699585, + "labels": ["feature"], + "number": 6, + "title": "Add startsWith and endsWith for URLs.", + "url": "https://github.com/hapijs/code/pull/6" + } + ], + "number": 3, + "url": "https://github.com/hapijs/code/milestone/3", + "version": "1.3.0" + }, + { + "date": "2014-11-02T18:59:41Z", + "id": 835500, + "issues": [ + { + "id": 47544946, + "labels": ["bug"], + "number": 5, + "title": "throw('') matches any message", + "url": "https://github.com/hapijs/code/issues/5" + } + ], "number": 2, - "title": "between()", - "url": "https://github.com/hapijs/code/issues/2" - } - ], - "number": 1, - "url": "https://github.com/hapijs/code/milestone/1", - "version": "1.2.0" - } + "url": "https://github.com/hapijs/code/milestone/2", + "version": "1.2.1" + }, + { + "date": "2014-10-22T06:14:51Z", + "id": 835499, + "issues": [ + { + "id": 46476183, + "labels": ["feature"], + "number": 2, + "title": "between()", + "url": "https://github.com/hapijs/code/issues/2" + } + ], + "number": 1, + "url": "https://github.com/hapijs/code/milestone/1", + "version": "1.2.0" + } ] diff --git a/generated/modules/code/info.json b/generated/modules/code/info.json index fdb26198..f8440b92 100644 --- a/generated/modules/code/info.json +++ b/generated/modules/code/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 73, - "isPlugin": false, - "link": "https://github.com/hapijs/code", - "name": "code", - "package": "@hapi/code", - "slogan": "BDD assertion library.", - "sloganHtml": "BDD assertion library.", - "stars": 231, - "updated": "2024-10-23T15:37:52Z", - "versions": [ - { - "branch": "v9.0.3", - "license": "BSD", - "name": "9.0.3", - "node": ">= 16" - } - ], - "versionsArray": ["9.0.3"], - "latestVersion": "9.x.x" + "api": true, + "forks": 73, + "isPlugin": false, + "latestVersion": "9.x.x", + "link": "https://github.com/hapijs/code", + "name": "code", + "package": "@hapi/code", + "slogan": "BDD assertion library.", + "sloganHtml": "BDD assertion library.", + "stars": 231, + "updated": "2024-10-23T15:37:52Z", + "versions": [ + { + "branch": "v9.0.3", + "license": "BSD", + "name": "9.0.3", + "node": ">= 16" + } + ], + "versionsArray": ["9.0.3"] } diff --git a/generated/modules/content/changelog.json b/generated/modules/content/changelog.json index 01cb8608..a94aa7c5 100644 --- a/generated/modules/content/changelog.json +++ b/generated/modules/content/changelog.json @@ -1,249 +1,281 @@ [ - { - "date": "2022-05-24T01:54:39Z", - "id": 8008356, - "issues": [ - { - "id": 1244574978, - "labels": ["dependency", "breaking changes"], - "number": 35, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/content/pull/35" - }, - { - "id": 1202798827, - "labels": ["feature"], - "number": 34, - "title": "support parsing charset", - "url": "https://github.com/hapijs/content/pull/34" - } - ], - "number": 16, - "url": "https://github.com/hapijs/content/milestone/16", - "version": "6.0.0" - }, - { - "date": "2020-02-13T08:07:57Z", - "id": 5100807, - "issues": [ - { - "id": 564507692, - "labels": ["bug", "security"], - "number": 22, - "title": "Block __proto__ name", - "url": "https://github.com/hapijs/content/issues/22" - } - ], - "number": 14, - "url": "https://github.com/hapijs/content/milestone/14", - "version": "5.0.2" - }, - { - "date": "2020-02-13T07:23:14Z", - "id": 4973272, - "issues": [ - { - "id": 564489030, - "labels": ["bug", "security"], - "number": 21, - "title": "Explicitly handle __proto__", - "url": "https://github.com/hapijs/content/issues/21" - } - ], - "number": 13, - "url": "https://github.com/hapijs/content/milestone/13", - "version": "5.0.1" - }, - { - "date": "2020-01-05T01:02:33Z", - "id": 4973271, - "issues": [ - { - "id": 545351974, - "labels": ["dependency", "breaking changes"], - "number": 20, - "title": "Only node 12", - "url": "https://github.com/hapijs/content/issues/20" - } - ], - "number": 12, - "url": "https://github.com/hapijs/content/milestone/12", - "version": "5.0.0" - }, - { - "date": "2020-02-13T08:22:05Z", - "id": 4194622, - "issues": [ - { - "id": 564509321, - "labels": ["bug", "security", "lts"], - "number": 24, - "title": "Backport #21, #22", - "url": "https://github.com/hapijs/content/issues/24" - } - ], - "number": 11, - "url": "https://github.com/hapijs/content/milestone/11", - "version": "4.1.1" - }, - { - "date": "2019-04-02T17:54:24Z", - "id": 3792181, - "issues": [ - { - "id": 428362063, - "labels": ["dependency"], + { + "date": "2026-05-06T08:40:35Z", + "id": 15813735, + "issues": [ + { + "id": 4389936338, + "labels": ["bug", "security"], + "number": 39, + "title": "fix: error on duplicate parameters", + "url": "https://github.com/hapijs/content/pull/39" + } + ], + "number": 18, + "url": "https://github.com/hapijs/content/milestone/18", + "version": "6.0.2" + }, + { + "date": "2026-05-06T08:40:33Z", + "id": 8008357, + "issues": [ + { + "id": 4192635071, + "labels": ["bug", "security"], + "number": 38, + "title": "fix: protect regex from redos", + "url": "https://github.com/hapijs/content/pull/38" + } + ], + "number": 17, + "url": "https://github.com/hapijs/content/milestone/17", + "version": "6.0.1" + }, + { + "date": "2022-05-24T01:54:39Z", + "id": 8008356, + "issues": [ + { + "id": 1244574978, + "labels": ["dependency", "breaking changes"], + "number": 35, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/content/pull/35" + }, + { + "id": 1202798827, + "labels": ["feature"], + "number": 34, + "title": "support parsing charset", + "url": "https://github.com/hapijs/content/pull/34" + } + ], + "number": 16, + "url": "https://github.com/hapijs/content/milestone/16", + "version": "6.0.0" + }, + { + "date": "2020-02-13T08:07:57Z", + "id": 5100807, + "issues": [ + { + "id": 564507692, + "labels": ["bug", "security"], + "number": 22, + "title": "Block __proto__ name", + "url": "https://github.com/hapijs/content/issues/22" + } + ], + "number": 14, + "url": "https://github.com/hapijs/content/milestone/14", + "version": "5.0.2" + }, + { + "date": "2020-02-13T07:23:14Z", + "id": 4973272, + "issues": [ + { + "id": 564489030, + "labels": ["bug", "security"], + "number": 21, + "title": "Explicitly handle __proto__", + "url": "https://github.com/hapijs/content/issues/21" + } + ], "number": 13, - "title": "Change module namespace", - "url": "https://github.com/hapijs/content/issues/13" - } - ], - "number": 8, - "url": "https://github.com/hapijs/content/milestone/8", - "version": "4.1.0" - }, - { - "date": "2018-11-03T00:24:12Z", - "id": 3232145, - "issues": [ - { - "id": 377001121, - "labels": ["non issue"], - "number": 9, - "title": "Remove engines", - "url": "https://github.com/hapijs/content/issues/9" - } - ], - "number": 7, - "url": "https://github.com/hapijs/content/milestone/7", - "version": "4.0.6" - }, - { - "date": "2018-03-31T00:02:31Z", - "id": 3153033, - "issues": [ - { - "id": 308112275, - "labels": ["bug"], + "url": "https://github.com/hapijs/content/milestone/13", + "version": "5.0.1" + }, + { + "date": "2020-01-05T01:02:33Z", + "id": 4973271, + "issues": [ + { + "id": 545351974, + "labels": ["dependency", "breaking changes"], + "number": 20, + "title": "Only node 12", + "url": "https://github.com/hapijs/content/issues/20" + } + ], + "number": 12, + "url": "https://github.com/hapijs/content/milestone/12", + "version": "5.0.0" + }, + { + "date": "2020-02-13T08:22:05Z", + "id": 4194622, + "issues": [ + { + "id": 564509321, + "labels": ["bug", "security", "lts"], + "number": 24, + "title": "Backport #21, #22", + "url": "https://github.com/hapijs/content/issues/24" + } + ], + "number": 11, + "url": "https://github.com/hapijs/content/milestone/11", + "version": "4.1.1" + }, + { + "date": "2019-04-02T17:54:24Z", + "id": 3792181, + "issues": [ + { + "id": 428362063, + "labels": ["dependency"], + "number": 13, + "title": "Change module namespace", + "url": "https://github.com/hapijs/content/issues/13" + } + ], + "number": 8, + "url": "https://github.com/hapijs/content/milestone/8", + "version": "4.1.0" + }, + { + "date": "2018-11-03T00:24:12Z", + "id": 3232145, + "issues": [ + { + "id": 377001121, + "labels": ["non issue"], + "number": 9, + "title": "Remove engines", + "url": "https://github.com/hapijs/content/issues/9" + } + ], "number": 7, - "title": "Throw on .type() if header is completely missing", - "url": "https://github.com/hapijs/content/pull/7" - } - ], - "number": 6, - "url": "https://github.com/hapijs/content/milestone/6", - "version": "4.0.5" - }, - { - "date": "2018-03-01T09:19:33Z", - "id": 2886841, - "issues": [ - { - "id": 301155318, - "labels": ["feature"], + "url": "https://github.com/hapijs/content/milestone/7", + "version": "4.0.6" + }, + { + "date": "2018-03-31T00:02:31Z", + "id": 3153033, + "issues": [ + { + "id": 308112275, + "labels": ["bug"], + "number": 7, + "title": "Throw on .type() if header is completely missing", + "url": "https://github.com/hapijs/content/pull/7" + } + ], + "number": 6, + "url": "https://github.com/hapijs/content/milestone/6", + "version": "4.0.5" + }, + { + "date": "2018-03-01T09:19:33Z", + "id": 2886841, + "issues": [ + { + "id": 301155318, + "labels": ["feature"], + "number": 5, + "title": "Skip processing parameters when content type is not multipart", + "url": "https://github.com/hapijs/content/issues/5" + } + ], "number": 5, - "title": "Skip processing parameters when content type is not multipart", - "url": "https://github.com/hapijs/content/issues/5" - } - ], - "number": 5, - "url": "https://github.com/hapijs/content/milestone/5", - "version": "4.0.4" - }, - { - "date": "2017-11-03T20:02:55Z", - "id": 2886840, - "issues": [ - { - "id": 271102816, - "labels": ["feature"], + "url": "https://github.com/hapijs/content/milestone/5", + "version": "4.0.4" + }, + { + "date": "2017-11-03T20:02:55Z", + "id": 2886840, + "issues": [ + { + "id": 271102816, + "labels": ["feature"], + "number": 4, + "title": "Throw directly from header processing", + "url": "https://github.com/hapijs/content/issues/4" + } + ], "number": 4, - "title": "Throw directly from header processing", - "url": "https://github.com/hapijs/content/issues/4" - } - ], - "number": 4, - "url": "https://github.com/hapijs/content/milestone/4", - "version": "4.0.3" - }, - { - "date": "2017-11-03T20:02:21Z", - "id": 2794193, - "issues": [ - { - "id": 270892801, - "labels": ["dependency"], + "url": "https://github.com/hapijs/content/milestone/4", + "version": "4.0.3" + }, + { + "date": "2017-11-03T20:02:21Z", + "id": 2794193, + "issues": [ + { + "id": 270892801, + "labels": ["dependency"], + "number": 3, + "title": "Update deps", + "url": "https://github.com/hapijs/content/issues/3" + } + ], "number": 3, - "title": "Update deps", - "url": "https://github.com/hapijs/content/issues/3" - } - ], - "number": 3, - "url": "https://github.com/hapijs/content/milestone/3", - "version": "4.0.2" - }, - { - "date": "2017-09-26T09:07:07Z", - "id": 2793390, - "issues": [ - { - "id": 260547043, - "labels": ["dependency"], + "url": "https://github.com/hapijs/content/milestone/3", + "version": "4.0.2" + }, + { + "date": "2017-09-26T09:07:07Z", + "id": 2793390, + "issues": [ + { + "id": 260547043, + "labels": ["dependency"], + "number": 2, + "title": "Update deps", + "url": "https://github.com/hapijs/content/issues/2" + } + ], "number": 2, - "title": "Update deps", - "url": "https://github.com/hapijs/content/issues/2" - } - ], - "number": 2, - "url": "https://github.com/hapijs/content/milestone/2", - "version": "4.0.1" - }, - { - "date": "2017-09-26T00:11:17Z", - "id": 2793389, - "issues": [ - { - "id": 260451990, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/content/milestone/2", + "version": "4.0.1" + }, + { + "date": "2017-09-26T00:11:17Z", + "id": 2793389, + "issues": [ + { + "id": 260451990, + "labels": ["breaking changes"], + "number": 1, + "title": "Throw errors", + "url": "https://github.com/hapijs/content/issues/1" + } + ], "number": 1, - "title": "Throw errors", - "url": "https://github.com/hapijs/content/issues/1" - } - ], - "number": 1, - "url": "https://github.com/hapijs/content/milestone/1", - "version": "4.0.0" - }, - { - "date": "2020-02-13T08:16:30Z", - "id": 4170911, - "issues": [ - { - "id": 564509042, - "labels": ["bug", "security", "lts", "commercial"], - "number": 23, - "title": "Backport #21, #22", - "url": "https://github.com/hapijs/content/issues/23" - } - ], - "number": 10, - "url": "https://github.com/hapijs/content/milestone/10", - "version": "3.1.1" - }, - { - "date": "2019-03-25T18:02:27Z", - "id": 4170910, - "issues": [ - { - "id": 425039253, - "labels": ["lts"], - "number": 12, - "title": "Commercial version of v3 branch", - "url": "https://github.com/hapijs/content/issues/12" - } - ], - "number": 9, - "url": "https://github.com/hapijs/content/milestone/9", - "version": "3.1.0" - } + "url": "https://github.com/hapijs/content/milestone/1", + "version": "4.0.0" + }, + { + "date": "2020-02-13T08:16:30Z", + "id": 4170911, + "issues": [ + { + "id": 564509042, + "labels": ["bug", "security", "lts", "commercial"], + "number": 23, + "title": "Backport #21, #22", + "url": "https://github.com/hapijs/content/issues/23" + } + ], + "number": 10, + "url": "https://github.com/hapijs/content/milestone/10", + "version": "3.1.1" + }, + { + "date": "2019-03-25T18:02:27Z", + "id": 4170910, + "issues": [ + { + "id": 425039253, + "labels": ["lts"], + "number": 12, + "title": "Commercial version of v3 branch", + "url": "https://github.com/hapijs/content/issues/12" + } + ], + "number": 9, + "url": "https://github.com/hapijs/content/milestone/9", + "version": "3.1.0" + } ] diff --git a/generated/modules/content/info.json b/generated/modules/content/info.json index 81e39d92..084e74bd 100644 --- a/generated/modules/content/info.json +++ b/generated/modules/content/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 13, - "isPlugin": false, - "link": "https://github.com/hapijs/content", - "name": "content", - "package": "@hapi/content", - "slogan": "HTTP Content-* headers parsing.", - "sloganHtml": "HTTP Content-* headers parsing.", - "stars": 7, - "updated": "2026-04-02T08:04:34Z", - "versions": [ - { - "branch": "v6.0.1", - "license": "BSD", - "name": "6.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.1"], - "latestVersion": "6.x.x" + "api": true, + "forks": 13, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/content", + "name": "content", + "package": "@hapi/content", + "slogan": "HTTP Content-* headers parsing.", + "sloganHtml": "HTTP Content-* headers parsing.", + "stars": 7, + "updated": "2026-05-06T08:39:04Z", + "versions": [ + { + "branch": "v6.0.2", + "license": "BSD", + "name": "6.0.2", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.2"] } diff --git a/generated/modules/cookie/changelog.json b/generated/modules/cookie/changelog.json index 3393f66a..ecf9dce3 100644 --- a/generated/modules/cookie/changelog.json +++ b/generated/modules/cookie/changelog.json @@ -1,886 +1,886 @@ [ - { - "date": "2023-02-11T19:30:47Z", - "id": 8550561, - "issues": [ - { - "id": 1551796104, - "labels": [], - "number": 248, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/cookie/pull/248" - } - ], - "number": 37, - "url": "https://github.com/hapijs/cookie/milestone/37", - "version": "12.0.1" - }, - { - "date": "2022-10-17T19:51:45Z", - "id": 7813492, - "issues": [ - { - "id": 1307309292, - "labels": ["feature", "breaking changes", "test", "dependency"], - "number": 246, - "title": "Support for hapi v21, node v18, ESM tests", - "url": "https://github.com/hapijs/cookie/pull/246" - }, - { - "id": 1184202864, - "labels": ["breaking changes"], - "number": 244, - "title": "Drop support for node v12 and hapi v18", - "url": "https://github.com/hapijs/cookie/pull/244" - }, - { - "id": 806809697, - "labels": ["breaking changes"], - "number": 236, - "title": "Rename plugin options to be consistent across the hapi ecosystem", - "url": "https://github.com/hapijs/cookie/pull/236" - }, - { - "id": 806803389, - "labels": ["breaking changes"], - "number": 235, - "title": "Remove old repository name", - "url": "https://github.com/hapijs/cookie/pull/235" - } - ], - "number": 36, - "url": "https://github.com/hapijs/cookie/milestone/36", - "version": "12.0.0" - }, - { - "date": "2020-09-26T16:59:56Z", - "id": 5200162, - "issues": [ - { - "id": 684044796, - "labels": [], - "number": 232, - "title": "update to hapi v20", - "url": "https://github.com/hapijs/cookie/pull/232" - }, - { - "id": 684029866, - "labels": [], - "number": 231, - "title": "migrate to new travis format", - "url": "https://github.com/hapijs/cookie/pull/231" - }, - { - "id": 672129940, - "labels": [], - "number": 229, - "title": "change joi to validate and update lab", - "url": "https://github.com/hapijs/cookie/pull/229" - } - ], - "number": 34, - "url": "https://github.com/hapijs/cookie/milestone/34", - "version": "11.0.2" - }, - { - "date": "2020-03-13T19:26:59Z", - "id": 4993609, - "issues": [ - { - "id": 550282146, - "labels": ["bug"], - "number": 228, - "title": "Non system error in validateFunc will be swallowed", - "url": "https://github.com/hapijs/cookie/issues/228" - } - ], - "number": 33, - "url": "https://github.com/hapijs/cookie/milestone/33", - "version": "11.0.1" - }, - { - "date": "2020-01-10T07:21:58Z", - "id": 4654915, - "issues": [ - { - "id": 547909554, - "labels": ["breaking changes", "dependency"], - "number": 227, - "title": "Only node 12", - "url": "https://github.com/hapijs/cookie/issues/227" - } - ], - "number": 32, - "url": "https://github.com/hapijs/cookie/milestone/32", - "version": "11.0.0" - }, - { - "date": "2019-09-12T17:45:35Z", - "id": 4574291, - "issues": [ - { - "id": 492937397, - "labels": ["dependency"], - "number": 222, - "title": "Update joi", - "url": "https://github.com/hapijs/cookie/issues/222" - } - ], - "number": 31, - "url": "https://github.com/hapijs/cookie/milestone/31", - "version": "10.1.2" - }, - { - "date": "2019-08-14T22:39:58Z", - "id": 4244813, - "issues": [ - { - "id": 480891027, - "labels": ["dependency"], - "number": 221, - "title": "Update deps", - "url": "https://github.com/hapijs/cookie/issues/221" - } - ], - "number": 30, - "url": "https://github.com/hapijs/cookie/milestone/30", - "version": "10.1.1" - }, - { - "date": "2019-04-19T21:19:30Z", - "id": 4144206, - "issues": [ - { - "id": 435307605, - "labels": ["dependency"], - "number": 213, - "title": "Change module namespace", - "url": "https://github.com/hapijs/cookie/issues/213" - } - ], - "number": 29, - "url": "https://github.com/hapijs/cookie/milestone/29", - "version": "10.1.0" - }, - { - "date": "2019-04-19T21:10:37Z", - "id": 3844723, - "issues": [ - { - "id": 421636792, - "labels": ["breaking changes"], - "number": 210, - "title": "Move all cookie settings to `cookie`", - "url": "https://github.com/hapijs/cookie/issues/210" - }, - { - "id": 421614167, - "labels": ["breaking changes", "release notes"], - "number": 209, - "title": "10.0.0 Release notes", - "url": "https://github.com/hapijs/cookie/issues/209" - }, - { - "id": 421612582, - "labels": ["bug", "breaking changes"], - "number": 208, - "title": "Remove ignoreIfDecorated", - "url": "https://github.com/hapijs/cookie/issues/208" - }, - { - "id": 418808258, - "labels": ["bug", "breaking changes"], - "number": 207, - "title": "No override of default cookie settings", - "url": "https://github.com/hapijs/cookie/issues/207" - }, - { - "id": 411863030, - "labels": ["breaking changes"], - "number": 205, - "title": "Upgrade to hapi 18", - "url": "https://github.com/hapijs/cookie/pull/205" - }, - { - "id": 401284634, - "labels": ["breaking changes", "dependency"], - "number": 204, - "title": "Update for hapi 18", - "url": "https://github.com/hapijs/cookie/issues/204" - }, - { - "id": 312299124, - "labels": ["feature"], - "number": 193, - "title": "Support password rotation", - "url": "https://github.com/hapijs/cookie/issues/193" - } - ], - "number": 28, - "url": "https://github.com/hapijs/cookie/milestone/28", - "version": "10.0.0" - }, - { - "date": "2018-11-24T05:12:17Z", - "id": 3379400, - "issues": [ - { - "id": 329532102, - "labels": ["feature"], - "number": 196, - "title": "referenced the raw request when setting next", - "url": "https://github.com/hapijs/cookie/pull/196" - } - ], - "number": 27, - "url": "https://github.com/hapijs/cookie/milestone/27", - "version": "9.1.0" - }, - { - "date": "2018-05-27T23:39:04Z", - "id": 3050977, - "issues": [ - { - "id": 287335768, - "labels": ["feature", "breaking changes"], - "number": 186, - "title": "Respect auth mode for redirects", - "url": "https://github.com/hapijs/cookie/pull/186" - } - ], - "number": 24, - "url": "https://github.com/hapijs/cookie/milestone/24", - "version": "9.0.0" - }, - { - "date": "2018-02-08T21:14:21Z", - "id": 2969691, - "issues": [ - { - "id": 276868074, - "labels": ["documentation"], - "number": 176, - "title": "Use options key for route configuration", - "url": "https://github.com/hapijs/cookie/pull/176" - }, - { - "id": 245854170, - "labels": ["feature"], - "number": 164, - "title": "Issue 163", - "url": "https://github.com/hapijs/cookie/pull/164" - } - ], - "number": 23, - "url": "https://github.com/hapijs/cookie/milestone/23", - "version": "8.1.0" - }, - { - "date": "2018-02-08T09:43:49Z", - "id": 3051237, - "issues": [ - { - "id": 282892396, - "labels": ["bug"], - "number": 183, - "title": "Fix redirectTo function w/ blank to behave like blank redirectTo (fix)", - "url": "https://github.com/hapijs/cookie/pull/183" - }, - { - "id": 266975391, - "labels": ["documentation"], - "number": 170, - "title": "Drop session from cache in examples", - "url": "https://github.com/hapijs/cookie/pull/170" - } - ], - "number": 25, - "url": "https://github.com/hapijs/cookie/milestone/25", - "version": "8.0.1" - }, - { - "date": "2017-12-10T20:05:55Z", - "id": 2417184, - "issues": [ - { - "id": 280739407, - "labels": ["documentation"], - "number": 179, - "title": "Update lead maintainer", - "url": "https://github.com/hapijs/cookie/issues/179" - }, - { - "id": 271814649, - "labels": ["breaking changes"], - "number": 174, - "title": "Upgraded module to hapi v17", - "url": "https://github.com/hapijs/cookie/pull/174" - } - ], - "number": 22, - "url": "https://github.com/hapijs/cookie/milestone/22", - "version": "8.0.0" - }, - { - "date": "2018-05-27T23:38:05Z", - "id": 3101130, - "issues": [ - { - "id": 193862309, - "labels": ["feature"], - "number": 151, - "title": "referenced the raw request when setting next", - "url": "https://github.com/hapijs/cookie/pull/151" - } - ], - "number": 26, - "url": "https://github.com/hapijs/cookie/milestone/26", - "version": "7.1.0" - }, - { - "date": "2017-03-28T16:53:54Z", - "id": 2417176, - "issues": [ - { - "id": 196192894, - "labels": ["bug"], - "number": 152, - "title": "Do not redecorate the request object if already decorated", - "url": "https://github.com/hapijs/cookie/pull/152" - }, - { - "id": 186610427, - "labels": [], - "number": 148, - "title": "Allow redirectTo to be a function ", - "url": "https://github.com/hapijs/cookie/pull/148" - }, - { - "id": 176238602, - "labels": ["feature"], - "number": 142, - "title": "Add isSameSite to schema", - "url": "https://github.com/hapijs/cookie/pull/142" - }, - { - "id": 162323296, - "labels": ["documentation"], - "number": 138, - "title": "Options aren't required", - "url": "https://github.com/hapijs/cookie/pull/138" - }, - { - "id": 161399038, - "labels": ["documentation"], - "number": 134, - "title": "add note to readme about the 'ttl' option", - "url": "https://github.com/hapijs/cookie/pull/134" - }, - { - "id": 155620795, - "labels": ["dependency"], - "number": 130, - "title": "Test on node v6, update dependencies", - "url": "https://github.com/hapijs/cookie/pull/130" - }, - { - "id": 153522433, - "labels": ["documentation"], - "number": 127, - "title": "fix typo in readme", - "url": "https://github.com/hapijs/cookie/pull/127" - }, - { - "id": 148793222, - "labels": ["feature"], - "number": 124, - "title": "Allow null to be passed for the ttl", - "url": "https://github.com/hapijs/cookie/pull/124" - }, - { - "id": 135138588, - "labels": ["documentation"], - "number": 115, - "title": "update readme with information/warning about cookie length", - "url": "https://github.com/hapijs/cookie/pull/115" - } - ], - "number": 21, - "url": "https://github.com/hapijs/cookie/milestone/21", - "version": "7.0.0" - }, - { - "date": "2017-03-28T16:47:45Z", - "id": 1607158, - "issues": [ - { - "id": 136583849, - "labels": [], - "number": 118, - "title": "decorator fix", - "url": "https://github.com/hapijs/cookie/pull/118" - } - ], - "number": 20, - "url": "https://github.com/hapijs/cookie/milestone/20", - "version": "6.1.1" - }, - { - "date": "2016-02-22T13:43:36Z", - "id": 1592245, - "issues": [ - { - "id": 134772959, - "labels": ["feature"], - "number": 114, - "title": "support many strategies", - "url": "https://github.com/hapijs/cookie/pull/114" - } - ], - "number": 19, - "url": "https://github.com/hapijs/cookie/milestone/19", - "version": "6.1.0" - }, - { - "date": "2016-01-29T13:31:05Z", - "id": 1551169, - "issues": [ - { - "id": 127454671, - "labels": [], - "number": 107, - "title": "Use server.decorate", - "url": "https://github.com/hapijs/cookie/pull/107" - } - ], - "number": 18, - "url": "https://github.com/hapijs/cookie/milestone/18", - "version": "6.0.0" - }, - { - "date": "2016-01-05T17:37:49Z", - "id": 1485235, - "issues": [ - { - "id": 125004343, - "labels": ["breaking changes"], - "number": 103, - "title": "move away from request.auth.session", - "url": "https://github.com/hapijs/cookie/pull/103" - }, - { - "id": 124604592, - "labels": ["breaking changes", "dependency"], - "number": 101, - "title": "Switch to use a request decoration instead of request.auth.session", - "url": "https://github.com/hapijs/cookie/issues/101" - } - ], - "number": 17, - "url": "https://github.com/hapijs/cookie/milestone/17", - "version": "5.0" - }, - { - "date": "2016-01-05T16:26:41Z", - "id": 1399212, - "issues": [ - { - "id": 124987803, - "labels": ["breaking changes"], - "number": 102, - "title": "node 4 update", - "url": "https://github.com/hapijs/cookie/pull/102" - }, - { - "id": 115541788, - "labels": ["breaking changes"], - "number": 93, - "title": "Node >= 4 / es6 updates", - "url": "https://github.com/hapijs/cookie/issues/93" - } - ], - "number": 16, - "url": "https://github.com/hapijs/cookie/milestone/16", - "version": "4.0.0" - }, - { - "date": "2015-08-17T12:33:41Z", - "id": 1256036, - "issues": [ - { - "id": 101408737, - "labels": ["feature"], - "number": 83, - "title": "allow buffer as password", - "url": "https://github.com/hapijs/cookie/pull/83" - }, - { - "id": 100754815, - "labels": ["feature"], - "number": 80, - "title": "Buffer type should be allowed for \"password\" option", - "url": "https://github.com/hapijs/cookie/issues/80" - } - ], - "number": 15, - "url": "https://github.com/hapijs/cookie/milestone/15", - "version": "3.1.0" - }, - { - "date": "2015-06-13T13:23:09Z", - "id": 1158124, - "issues": [ - { - "id": 93623332, - "labels": ["documentation"], - "number": 75, - "title": "validateFunc according to signature function", - "url": "https://github.com/hapijs/cookie/pull/75" - }, - { - "id": 87999909, - "labels": ["documentation"], - "number": 74, - "title": "Updated docs", - "url": "https://github.com/hapijs/cookie/pull/74" - }, - { - "id": 86885449, - "labels": ["feature", "breaking changes"], - "number": 72, - "title": "Pass request object to validation function", - "url": "https://github.com/hapijs/cookie/pull/72" - } - ], - "number": 14, - "url": "https://github.com/hapijs/cookie/milestone/14", - "version": "3.0.0" - }, - { - "date": "2015-05-04T19:53:09Z", - "id": 1091133, - "issues": [ - { - "id": 73111618, - "labels": ["non issue"], - "number": 69, - "title": "2.2.0 update", - "url": "https://github.com/hapijs/cookie/pull/69" - }, - { - "id": 73109259, - "labels": ["bug"], - "number": 68, - "title": "Fix support for custom appendNext param", - "url": "https://github.com/hapijs/cookie/pull/68" - }, - { - "id": 72302311, - "labels": ["bug", "support"], - "number": 67, - "title": "`appendNext` no longer accepts a string", - "url": "https://github.com/hapijs/cookie/issues/67" - }, - { - "id": 69645344, - "labels": ["feature"], - "number": 65, - "title": "allow null setting for domain", - "url": "https://github.com/hapijs/cookie/pull/65" - }, - { - "id": 69644787, - "labels": ["feature"], - "number": 64, - "title": "domain is now required as a string, and null does not pass validation", - "url": "https://github.com/hapijs/cookie/issues/64" - } - ], - "number": 13, - "url": "https://github.com/hapijs/cookie/milestone/13", - "version": "2.2.0" - }, - { - "date": "2015-04-22T17:02:08Z", - "id": 900075, - "issues": [ - { - "id": 69603418, - "labels": [], - "number": 63, - "title": "Version 2.1.0", - "url": "https://github.com/hapijs/cookie/pull/63" - }, - { - "id": 68521537, - "labels": ["feature"], - "number": 62, - "title": "Allow environment variables to configure cookie scheme", - "url": "https://github.com/hapijs/cookie/pull/62" - } - ], - "number": 12, - "url": "https://github.com/hapijs/cookie/milestone/12", - "version": "2.1.0" - }, - { - "date": "2014-12-11T06:59:31Z", - "id": 873786, - "issues": [ - { - "id": 51644277, - "labels": ["non issue"], - "number": 45, - "title": "Version 2.0.0", - "url": "https://github.com/hapijs/cookie/pull/45" - }, - { - "id": 51003906, - "labels": ["dependency"], - "number": 43, - "title": "Use request.route.settings.plugin", - "url": "https://github.com/hapijs/cookie/pull/43" - }, - { - "id": 50124084, - "labels": ["bug"], - "number": 40, - "title": "Invalid cookie should still return 401", - "url": "https://github.com/hapijs/cookie/issues/40" - }, - { - "id": 50122456, - "labels": ["breaking changes", "dependency"], - "number": 39, - "title": "hapi 8.0 API", - "url": "https://github.com/hapijs/cookie/issues/39" - } - ], - "number": 10, - "url": "https://github.com/hapijs/cookie/milestone/10", - "version": "2.0.0" - }, - { - "date": "2014-12-04T17:36:52Z", - "id": 890747, - "issues": [ - { - "id": 50910692, - "labels": ["bug"], - "number": 42, - "title": "Invalid cookie blocks scheme from redirecting", - "url": "https://github.com/hapijs/cookie/issues/42" - } - ], - "number": 11, - "url": "https://github.com/hapijs/cookie/milestone/11", - "version": "1.4.2" - }, - { - "date": "2014-11-20T05:02:27Z", - "id": 863739, - "issues": [ - { - "id": 49492896, - "labels": ["bug"], + { + "date": "2023-02-11T19:30:47Z", + "id": 8550561, + "issues": [ + { + "id": 1551796104, + "labels": [], + "number": 248, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/cookie/pull/248" + } + ], "number": 37, - "title": "Fix clearInvalid (for issue #34)", - "url": "https://github.com/hapijs/cookie/pull/37" - }, - { - "id": 48156100, - "labels": ["bug"], + "url": "https://github.com/hapijs/cookie/milestone/37", + "version": "12.0.1" + }, + { + "date": "2022-10-17T19:51:45Z", + "id": 7813492, + "issues": [ + { + "id": 1307309292, + "labels": ["feature", "breaking changes", "test", "dependency"], + "number": 246, + "title": "Support for hapi v21, node v18, ESM tests", + "url": "https://github.com/hapijs/cookie/pull/246" + }, + { + "id": 1184202864, + "labels": ["breaking changes"], + "number": 244, + "title": "Drop support for node v12 and hapi v18", + "url": "https://github.com/hapijs/cookie/pull/244" + }, + { + "id": 806809697, + "labels": ["breaking changes"], + "number": 236, + "title": "Rename plugin options to be consistent across the hapi ecosystem", + "url": "https://github.com/hapijs/cookie/pull/236" + }, + { + "id": 806803389, + "labels": ["breaking changes"], + "number": 235, + "title": "Remove old repository name", + "url": "https://github.com/hapijs/cookie/pull/235" + } + ], + "number": 36, + "url": "https://github.com/hapijs/cookie/milestone/36", + "version": "12.0.0" + }, + { + "date": "2020-09-26T16:59:56Z", + "id": 5200162, + "issues": [ + { + "id": 684044796, + "labels": [], + "number": 232, + "title": "update to hapi v20", + "url": "https://github.com/hapijs/cookie/pull/232" + }, + { + "id": 684029866, + "labels": [], + "number": 231, + "title": "migrate to new travis format", + "url": "https://github.com/hapijs/cookie/pull/231" + }, + { + "id": 672129940, + "labels": [], + "number": 229, + "title": "change joi to validate and update lab", + "url": "https://github.com/hapijs/cookie/pull/229" + } + ], "number": 34, - "title": "Bad cookie value even with clearInvalid true", - "url": "https://github.com/hapijs/cookie/issues/34" - } - ], - "number": 9, - "url": "https://github.com/hapijs/cookie/milestone/9", - "version": "1.4.1" - }, - { - "date": "2014-11-12T22:55:45Z", - "id": 741793, - "issues": [ - { - "id": 48554127, - "labels": ["feature"], - "number": 35, - "title": "Session keepAlive and ttl override", - "url": "https://github.com/hapijs/cookie/issues/35" - }, - { - "id": 42957473, - "labels": ["feature"], + "url": "https://github.com/hapijs/cookie/milestone/34", + "version": "11.0.2" + }, + { + "date": "2020-03-13T19:26:59Z", + "id": 4993609, + "issues": [ + { + "id": 550282146, + "labels": ["bug"], + "number": 228, + "title": "Non system error in validateFunc will be swallowed", + "url": "https://github.com/hapijs/cookie/issues/228" + } + ], + "number": 33, + "url": "https://github.com/hapijs/cookie/milestone/33", + "version": "11.0.1" + }, + { + "date": "2020-01-10T07:21:58Z", + "id": 4654915, + "issues": [ + { + "id": 547909554, + "labels": ["breaking changes", "dependency"], + "number": 227, + "title": "Only node 12", + "url": "https://github.com/hapijs/cookie/issues/227" + } + ], + "number": 32, + "url": "https://github.com/hapijs/cookie/milestone/32", + "version": "11.0.0" + }, + { + "date": "2019-09-12T17:45:35Z", + "id": 4574291, + "issues": [ + { + "id": 492937397, + "labels": ["dependency"], + "number": 222, + "title": "Update joi", + "url": "https://github.com/hapijs/cookie/issues/222" + } + ], + "number": 31, + "url": "https://github.com/hapijs/cookie/milestone/31", + "version": "10.1.2" + }, + { + "date": "2019-08-14T22:39:58Z", + "id": 4244813, + "issues": [ + { + "id": 480891027, + "labels": ["dependency"], + "number": 221, + "title": "Update deps", + "url": "https://github.com/hapijs/cookie/issues/221" + } + ], "number": 30, - "title": "add set/clear key for cookie", - "url": "https://github.com/hapijs/cookie/pull/30" - }, - { - "id": 42605968, - "labels": ["bug"], + "url": "https://github.com/hapijs/cookie/milestone/30", + "version": "10.1.1" + }, + { + "date": "2019-04-19T21:19:30Z", + "id": 4144206, + "issues": [ + { + "id": 435307605, + "labels": ["dependency"], + "number": 213, + "title": "Change module namespace", + "url": "https://github.com/hapijs/cookie/issues/213" + } + ], "number": 29, - "title": "Fix for handling multiple strategies", - "url": "https://github.com/hapijs/cookie/pull/29" - }, - { - "id": 40640489, - "labels": ["feature"], - "number": 26, - "title": "Update key in auth.credentials", - "url": "https://github.com/hapijs/cookie/issues/26" - }, - { - "id": 40326854, - "labels": ["feature"], + "url": "https://github.com/hapijs/cookie/milestone/29", + "version": "10.1.0" + }, + { + "date": "2019-04-19T21:10:37Z", + "id": 3844723, + "issues": [ + { + "id": 421636792, + "labels": ["breaking changes"], + "number": 210, + "title": "Move all cookie settings to `cookie`", + "url": "https://github.com/hapijs/cookie/issues/210" + }, + { + "id": 421614167, + "labels": ["breaking changes", "release notes"], + "number": 209, + "title": "10.0.0 Release notes", + "url": "https://github.com/hapijs/cookie/issues/209" + }, + { + "id": 421612582, + "labels": ["bug", "breaking changes"], + "number": 208, + "title": "Remove ignoreIfDecorated", + "url": "https://github.com/hapijs/cookie/issues/208" + }, + { + "id": 418808258, + "labels": ["bug", "breaking changes"], + "number": 207, + "title": "No override of default cookie settings", + "url": "https://github.com/hapijs/cookie/issues/207" + }, + { + "id": 411863030, + "labels": ["breaking changes"], + "number": 205, + "title": "Upgrade to hapi 18", + "url": "https://github.com/hapijs/cookie/pull/205" + }, + { + "id": 401284634, + "labels": ["breaking changes", "dependency"], + "number": 204, + "title": "Update for hapi 18", + "url": "https://github.com/hapijs/cookie/issues/204" + }, + { + "id": 312299124, + "labels": ["feature"], + "number": 193, + "title": "Support password rotation", + "url": "https://github.com/hapijs/cookie/issues/193" + } + ], + "number": 28, + "url": "https://github.com/hapijs/cookie/milestone/28", + "version": "10.0.0" + }, + { + "date": "2018-11-24T05:12:17Z", + "id": 3379400, + "issues": [ + { + "id": 329532102, + "labels": ["feature"], + "number": 196, + "title": "referenced the raw request when setting next", + "url": "https://github.com/hapijs/cookie/pull/196" + } + ], + "number": 27, + "url": "https://github.com/hapijs/cookie/milestone/27", + "version": "9.1.0" + }, + { + "date": "2018-05-27T23:39:04Z", + "id": 3050977, + "issues": [ + { + "id": 287335768, + "labels": ["feature", "breaking changes"], + "number": 186, + "title": "Respect auth mode for redirects", + "url": "https://github.com/hapijs/cookie/pull/186" + } + ], + "number": 24, + "url": "https://github.com/hapijs/cookie/milestone/24", + "version": "9.0.0" + }, + { + "date": "2018-02-08T21:14:21Z", + "id": 2969691, + "issues": [ + { + "id": 276868074, + "labels": ["documentation"], + "number": 176, + "title": "Use options key for route configuration", + "url": "https://github.com/hapijs/cookie/pull/176" + }, + { + "id": 245854170, + "labels": ["feature"], + "number": 164, + "title": "Issue 163", + "url": "https://github.com/hapijs/cookie/pull/164" + } + ], + "number": 23, + "url": "https://github.com/hapijs/cookie/milestone/23", + "version": "8.1.0" + }, + { + "date": "2018-02-08T09:43:49Z", + "id": 3051237, + "issues": [ + { + "id": 282892396, + "labels": ["bug"], + "number": 183, + "title": "Fix redirectTo function w/ blank to behave like blank redirectTo (fix)", + "url": "https://github.com/hapijs/cookie/pull/183" + }, + { + "id": 266975391, + "labels": ["documentation"], + "number": 170, + "title": "Drop session from cache in examples", + "url": "https://github.com/hapijs/cookie/pull/170" + } + ], + "number": 25, + "url": "https://github.com/hapijs/cookie/milestone/25", + "version": "8.0.1" + }, + { + "date": "2017-12-10T20:05:55Z", + "id": 2417184, + "issues": [ + { + "id": 280739407, + "labels": ["documentation"], + "number": 179, + "title": "Update lead maintainer", + "url": "https://github.com/hapijs/cookie/issues/179" + }, + { + "id": 271814649, + "labels": ["breaking changes"], + "number": 174, + "title": "Upgraded module to hapi v17", + "url": "https://github.com/hapijs/cookie/pull/174" + } + ], "number": 22, - "title": "Exposed path option for session cookie", - "url": "https://github.com/hapijs/cookie/pull/22" - }, - { - "id": 40326785, - "labels": ["feature"], + "url": "https://github.com/hapijs/cookie/milestone/22", + "version": "8.0.0" + }, + { + "date": "2018-05-27T23:38:05Z", + "id": 3101130, + "issues": [ + { + "id": 193862309, + "labels": ["feature"], + "number": 151, + "title": "referenced the raw request when setting next", + "url": "https://github.com/hapijs/cookie/pull/151" + } + ], + "number": 26, + "url": "https://github.com/hapijs/cookie/milestone/26", + "version": "7.1.0" + }, + { + "date": "2017-03-28T16:53:54Z", + "id": 2417176, + "issues": [ + { + "id": 196192894, + "labels": ["bug"], + "number": 152, + "title": "Do not redecorate the request object if already decorated", + "url": "https://github.com/hapijs/cookie/pull/152" + }, + { + "id": 186610427, + "labels": [], + "number": 148, + "title": "Allow redirectTo to be a function ", + "url": "https://github.com/hapijs/cookie/pull/148" + }, + { + "id": 176238602, + "labels": ["feature"], + "number": 142, + "title": "Add isSameSite to schema", + "url": "https://github.com/hapijs/cookie/pull/142" + }, + { + "id": 162323296, + "labels": ["documentation"], + "number": 138, + "title": "Options aren't required", + "url": "https://github.com/hapijs/cookie/pull/138" + }, + { + "id": 161399038, + "labels": ["documentation"], + "number": 134, + "title": "add note to readme about the 'ttl' option", + "url": "https://github.com/hapijs/cookie/pull/134" + }, + { + "id": 155620795, + "labels": ["dependency"], + "number": 130, + "title": "Test on node v6, update dependencies", + "url": "https://github.com/hapijs/cookie/pull/130" + }, + { + "id": 153522433, + "labels": ["documentation"], + "number": 127, + "title": "fix typo in readme", + "url": "https://github.com/hapijs/cookie/pull/127" + }, + { + "id": 148793222, + "labels": ["feature"], + "number": 124, + "title": "Allow null to be passed for the ttl", + "url": "https://github.com/hapijs/cookie/pull/124" + }, + { + "id": 135138588, + "labels": ["documentation"], + "number": 115, + "title": "update readme with information/warning about cookie length", + "url": "https://github.com/hapijs/cookie/pull/115" + } + ], "number": 21, - "title": "Expose 'path' in cookieOptions", - "url": "https://github.com/hapijs/cookie/issues/21" - } - ], - "number": 8, - "url": "https://github.com/hapijs/cookie/milestone/8", - "version": "1.4.0" - }, - { - "date": "2014-08-04T08:50:12Z", - "id": 724193, - "issues": [ - { - "id": 39371719, - "labels": ["documentation"], + "url": "https://github.com/hapijs/cookie/milestone/21", + "version": "7.0.0" + }, + { + "date": "2017-03-28T16:47:45Z", + "id": 1607158, + "issues": [ + { + "id": 136583849, + "labels": [], + "number": 118, + "title": "decorator fix", + "url": "https://github.com/hapijs/cookie/pull/118" + } + ], "number": 20, - "title": "Update LICENSE", - "url": "https://github.com/hapijs/cookie/pull/20" - }, - { - "id": 39371697, - "labels": ["documentation"], + "url": "https://github.com/hapijs/cookie/milestone/20", + "version": "6.1.1" + }, + { + "date": "2016-02-22T13:43:36Z", + "id": 1592245, + "issues": [ + { + "id": 134772959, + "labels": ["feature"], + "number": 114, + "title": "support many strategies", + "url": "https://github.com/hapijs/cookie/pull/114" + } + ], "number": 19, - "title": "Update License", - "url": "https://github.com/hapijs/cookie/issues/19" - } - ], - "number": 7, - "url": "https://github.com/hapijs/cookie/milestone/7", - "version": "1.3.2" - }, - { - "date": "2014-07-17T12:35:49Z", - "id": 724187, - "issues": [ - { - "id": 38076455, - "labels": ["test"], + "url": "https://github.com/hapijs/cookie/milestone/19", + "version": "6.1.0" + }, + { + "date": "2016-01-29T13:31:05Z", + "id": 1551169, + "issues": [ + { + "id": 127454671, + "labels": [], + "number": 107, + "title": "Use server.decorate", + "url": "https://github.com/hapijs/cookie/pull/107" + } + ], + "number": 18, + "url": "https://github.com/hapijs/cookie/milestone/18", + "version": "6.0.0" + }, + { + "date": "2016-01-05T17:37:49Z", + "id": 1485235, + "issues": [ + { + "id": 125004343, + "labels": ["breaking changes"], + "number": 103, + "title": "move away from request.auth.session", + "url": "https://github.com/hapijs/cookie/pull/103" + }, + { + "id": 124604592, + "labels": ["breaking changes", "dependency"], + "number": 101, + "title": "Switch to use a request decoration instead of request.auth.session", + "url": "https://github.com/hapijs/cookie/issues/101" + } + ], + "number": 17, + "url": "https://github.com/hapijs/cookie/milestone/17", + "version": "5.0" + }, + { + "date": "2016-01-05T16:26:41Z", + "id": 1399212, + "issues": [ + { + "id": 124987803, + "labels": ["breaking changes"], + "number": 102, + "title": "node 4 update", + "url": "https://github.com/hapijs/cookie/pull/102" + }, + { + "id": 115541788, + "labels": ["breaking changes"], + "number": 93, + "title": "Node >= 4 / es6 updates", + "url": "https://github.com/hapijs/cookie/issues/93" + } + ], "number": 16, - "title": "Fix hapi dev dep", - "url": "https://github.com/hapijs/cookie/issues/16" - } - ], - "number": 6, - "url": "https://github.com/hapijs/cookie/milestone/6", - "version": "1.3.1" - }, - { - "date": "2014-07-17T12:29:47Z", - "id": 690104, - "issues": [ - { - "id": 38076115, - "labels": ["feature"], + "url": "https://github.com/hapijs/cookie/milestone/16", + "version": "4.0.0" + }, + { + "date": "2015-08-17T12:33:41Z", + "id": 1256036, + "issues": [ + { + "id": 101408737, + "labels": ["feature"], + "number": 83, + "title": "allow buffer as password", + "url": "https://github.com/hapijs/cookie/pull/83" + }, + { + "id": 100754815, + "labels": ["feature"], + "number": 80, + "title": "Buffer type should be allowed for \"password\" option", + "url": "https://github.com/hapijs/cookie/issues/80" + } + ], "number": 15, - "title": "Skip redirection on try", - "url": "https://github.com/hapijs/cookie/issues/15" - } - ], - "number": 5, - "url": "https://github.com/hapijs/cookie/milestone/5", - "version": "1.3.0" - }, - { - "date": "2014-06-13T19:16:21Z", - "id": 689695, - "issues": [ - { - "id": 35653886, - "labels": ["bug"], - "number": 11, - "title": "No way to use with 'try' mode if 'redirectTo' is set", - "url": "https://github.com/hapijs/cookie/issues/11" - }, - { - "id": 35653850, - "labels": ["bug"], + "url": "https://github.com/hapijs/cookie/milestone/15", + "version": "3.1.0" + }, + { + "date": "2015-06-13T13:23:09Z", + "id": 1158124, + "issues": [ + { + "id": 93623332, + "labels": ["documentation"], + "number": 75, + "title": "validateFunc according to signature function", + "url": "https://github.com/hapijs/cookie/pull/75" + }, + { + "id": 87999909, + "labels": ["documentation"], + "number": 74, + "title": "Updated docs", + "url": "https://github.com/hapijs/cookie/pull/74" + }, + { + "id": 86885449, + "labels": ["feature", "breaking changes"], + "number": 72, + "title": "Pass request object to validation function", + "url": "https://github.com/hapijs/cookie/pull/72" + } + ], + "number": 14, + "url": "https://github.com/hapijs/cookie/milestone/14", + "version": "3.0.0" + }, + { + "date": "2015-05-04T19:53:09Z", + "id": 1091133, + "issues": [ + { + "id": 73111618, + "labels": ["non issue"], + "number": 69, + "title": "2.2.0 update", + "url": "https://github.com/hapijs/cookie/pull/69" + }, + { + "id": 73109259, + "labels": ["bug"], + "number": 68, + "title": "Fix support for custom appendNext param", + "url": "https://github.com/hapijs/cookie/pull/68" + }, + { + "id": 72302311, + "labels": ["bug", "support"], + "number": 67, + "title": "`appendNext` no longer accepts a string", + "url": "https://github.com/hapijs/cookie/issues/67" + }, + { + "id": 69645344, + "labels": ["feature"], + "number": 65, + "title": "allow null setting for domain", + "url": "https://github.com/hapijs/cookie/pull/65" + }, + { + "id": 69644787, + "labels": ["feature"], + "number": 64, + "title": "domain is now required as a string, and null does not pass validation", + "url": "https://github.com/hapijs/cookie/issues/64" + } + ], + "number": 13, + "url": "https://github.com/hapijs/cookie/milestone/13", + "version": "2.2.0" + }, + { + "date": "2015-04-22T17:02:08Z", + "id": 900075, + "issues": [ + { + "id": 69603418, + "labels": [], + "number": 63, + "title": "Version 2.1.0", + "url": "https://github.com/hapijs/cookie/pull/63" + }, + { + "id": 68521537, + "labels": ["feature"], + "number": 62, + "title": "Allow environment variables to configure cookie scheme", + "url": "https://github.com/hapijs/cookie/pull/62" + } + ], + "number": 12, + "url": "https://github.com/hapijs/cookie/milestone/12", + "version": "2.1.0" + }, + { + "date": "2014-12-11T06:59:31Z", + "id": 873786, + "issues": [ + { + "id": 51644277, + "labels": ["non issue"], + "number": 45, + "title": "Version 2.0.0", + "url": "https://github.com/hapijs/cookie/pull/45" + }, + { + "id": 51003906, + "labels": ["dependency"], + "number": 43, + "title": "Use request.route.settings.plugin", + "url": "https://github.com/hapijs/cookie/pull/43" + }, + { + "id": 50124084, + "labels": ["bug"], + "number": 40, + "title": "Invalid cookie should still return 401", + "url": "https://github.com/hapijs/cookie/issues/40" + }, + { + "id": 50122456, + "labels": ["breaking changes", "dependency"], + "number": 39, + "title": "hapi 8.0 API", + "url": "https://github.com/hapijs/cookie/issues/39" + } + ], "number": 10, - "title": "validateFunc credentials override session", - "url": "https://github.com/hapijs/cookie/issues/10" - } - ], - "number": 4, - "url": "https://github.com/hapijs/cookie/milestone/4", - "version": "1.2.0" - }, - { - "date": "2014-06-12T19:47:21Z", - "id": 665149, - "issues": [ - { - "id": 35397852, - "labels": ["feature"], + "url": "https://github.com/hapijs/cookie/milestone/10", + "version": "2.0.0" + }, + { + "date": "2014-12-04T17:36:52Z", + "id": 890747, + "issues": [ + { + "id": 50910692, + "labels": ["bug"], + "number": 42, + "title": "Invalid cookie blocks scheme from redirecting", + "url": "https://github.com/hapijs/cookie/issues/42" + } + ], + "number": 11, + "url": "https://github.com/hapijs/cookie/milestone/11", + "version": "1.4.2" + }, + { + "date": "2014-11-20T05:02:27Z", + "id": 863739, + "issues": [ + { + "id": 49492896, + "labels": ["bug"], + "number": 37, + "title": "Fix clearInvalid (for issue #34)", + "url": "https://github.com/hapijs/cookie/pull/37" + }, + { + "id": 48156100, + "labels": ["bug"], + "number": 34, + "title": "Bad cookie value even with clearInvalid true", + "url": "https://github.com/hapijs/cookie/issues/34" + } + ], "number": 9, - "title": "hapi 6.0", - "url": "https://github.com/hapijs/cookie/pull/9" - } - ], - "number": 3, - "url": "https://github.com/hapijs/cookie/milestone/3", - "version": "1.1.0" - }, - { - "date": "2014-05-21T02:18:17Z", - "id": 605520, - "issues": [ - { - "id": 33939248, - "labels": ["test"], + "url": "https://github.com/hapijs/cookie/milestone/9", + "version": "1.4.1" + }, + { + "date": "2014-11-12T22:55:45Z", + "id": 741793, + "issues": [ + { + "id": 48554127, + "labels": ["feature"], + "number": 35, + "title": "Session keepAlive and ttl override", + "url": "https://github.com/hapijs/cookie/issues/35" + }, + { + "id": 42957473, + "labels": ["feature"], + "number": 30, + "title": "add set/clear key for cookie", + "url": "https://github.com/hapijs/cookie/pull/30" + }, + { + "id": 42605968, + "labels": ["bug"], + "number": 29, + "title": "Fix for handling multiple strategies", + "url": "https://github.com/hapijs/cookie/pull/29" + }, + { + "id": 40640489, + "labels": ["feature"], + "number": 26, + "title": "Update key in auth.credentials", + "url": "https://github.com/hapijs/cookie/issues/26" + }, + { + "id": 40326854, + "labels": ["feature"], + "number": 22, + "title": "Exposed path option for session cookie", + "url": "https://github.com/hapijs/cookie/pull/22" + }, + { + "id": 40326785, + "labels": ["feature"], + "number": 21, + "title": "Expose 'path' in cookieOptions", + "url": "https://github.com/hapijs/cookie/issues/21" + } + ], + "number": 8, + "url": "https://github.com/hapijs/cookie/milestone/8", + "version": "1.4.0" + }, + { + "date": "2014-08-04T08:50:12Z", + "id": 724193, + "issues": [ + { + "id": 39371719, + "labels": ["documentation"], + "number": 20, + "title": "Update LICENSE", + "url": "https://github.com/hapijs/cookie/pull/20" + }, + { + "id": 39371697, + "labels": ["documentation"], + "number": 19, + "title": "Update License", + "url": "https://github.com/hapijs/cookie/issues/19" + } + ], + "number": 7, + "url": "https://github.com/hapijs/cookie/milestone/7", + "version": "1.3.2" + }, + { + "date": "2014-07-17T12:35:49Z", + "id": 724187, + "issues": [ + { + "id": 38076455, + "labels": ["test"], + "number": 16, + "title": "Fix hapi dev dep", + "url": "https://github.com/hapijs/cookie/issues/16" + } + ], "number": 6, - "title": "Bring coverage back to 100%", - "url": "https://github.com/hapijs/cookie/issues/6" - } - ], - "number": 2, - "url": "https://github.com/hapijs/cookie/milestone/2", - "version": "1.0.3" - }, - { - "date": "2014-03-21T20:29:24Z", - "id": 605519, - "issues": [ - { - "id": 29934621, - "labels": ["test"], + "url": "https://github.com/hapijs/cookie/milestone/6", + "version": "1.3.1" + }, + { + "date": "2014-07-17T12:29:47Z", + "id": 690104, + "issues": [ + { + "id": 38076115, + "labels": ["feature"], + "number": 15, + "title": "Skip redirection on try", + "url": "https://github.com/hapijs/cookie/issues/15" + } + ], "number": 5, - "title": "Bring coverage back to 100% after lab fix", - "url": "https://github.com/hapijs/cookie/issues/5" - }, - { - "id": 29482823, - "labels": ["feature"], + "url": "https://github.com/hapijs/cookie/milestone/5", + "version": "1.3.0" + }, + { + "date": "2014-06-13T19:16:21Z", + "id": 689695, + "issues": [ + { + "id": 35653886, + "labels": ["bug"], + "number": 11, + "title": "No way to use with 'try' mode if 'redirectTo' is set", + "url": "https://github.com/hapijs/cookie/issues/11" + }, + { + "id": 35653850, + "labels": ["bug"], + "number": 10, + "title": "validateFunc credentials override session", + "url": "https://github.com/hapijs/cookie/issues/10" + } + ], "number": 4, - "title": "fix peerDependencies for hapi", - "url": "https://github.com/hapijs/cookie/issues/4" - } - ], - "number": 1, - "url": "https://github.com/hapijs/cookie/milestone/1", - "version": "1.0.2" - } + "url": "https://github.com/hapijs/cookie/milestone/4", + "version": "1.2.0" + }, + { + "date": "2014-06-12T19:47:21Z", + "id": 665149, + "issues": [ + { + "id": 35397852, + "labels": ["feature"], + "number": 9, + "title": "hapi 6.0", + "url": "https://github.com/hapijs/cookie/pull/9" + } + ], + "number": 3, + "url": "https://github.com/hapijs/cookie/milestone/3", + "version": "1.1.0" + }, + { + "date": "2014-05-21T02:18:17Z", + "id": 605520, + "issues": [ + { + "id": 33939248, + "labels": ["test"], + "number": 6, + "title": "Bring coverage back to 100%", + "url": "https://github.com/hapijs/cookie/issues/6" + } + ], + "number": 2, + "url": "https://github.com/hapijs/cookie/milestone/2", + "version": "1.0.3" + }, + { + "date": "2014-03-21T20:29:24Z", + "id": 605519, + "issues": [ + { + "id": 29934621, + "labels": ["test"], + "number": 5, + "title": "Bring coverage back to 100% after lab fix", + "url": "https://github.com/hapijs/cookie/issues/5" + }, + { + "id": 29482823, + "labels": ["feature"], + "number": 4, + "title": "fix peerDependencies for hapi", + "url": "https://github.com/hapijs/cookie/issues/4" + } + ], + "number": 1, + "url": "https://github.com/hapijs/cookie/milestone/1", + "version": "1.0.2" + } ] diff --git a/generated/modules/cookie/info.json b/generated/modules/cookie/info.json index 83feff50..e806b8db 100644 --- a/generated/modules/cookie/info.json +++ b/generated/modules/cookie/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 98, - "isPlugin": true, - "link": "https://github.com/hapijs/cookie", - "name": "cookie", - "package": "@hapi/cookie", - "slogan": "Cookie authentication plugin.", - "sloganHtml": "Cookie authentication plugin.", - "stars": 229, - "updated": "2024-10-23T15:43:20Z", - "versions": [ - { - "branch": "v12.0.1", - "license": "BSD", - "name": "12.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["12.0.1"], - "latestVersion": "12.x.x" + "api": true, + "forks": 98, + "isPlugin": true, + "latestVersion": "12.x.x", + "link": "https://github.com/hapijs/cookie", + "name": "cookie", + "package": "@hapi/cookie", + "slogan": "Cookie authentication plugin.", + "sloganHtml": "Cookie authentication plugin.", + "stars": 229, + "updated": "2024-10-23T15:43:20Z", + "versions": [ + { + "branch": "v12.0.1", + "license": "BSD", + "name": "12.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["12.0.1"] } diff --git a/generated/modules/crumb/changelog.json b/generated/modules/crumb/changelog.json index c82ec8ff..fbe0a3d0 100644 --- a/generated/modules/crumb/changelog.json +++ b/generated/modules/crumb/changelog.json @@ -1,554 +1,554 @@ [ - { - "date": "2023-02-11T19:29:58Z", - "id": 8594993, - "issues": [ - { - "id": 1551793104, - "labels": ["dependency"], - "number": 163, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/crumb/pull/163" - } - ], - "number": 22, - "url": "https://github.com/hapijs/crumb/milestone/22", - "version": "9.0.1" - }, - { - "date": "2022-10-29T20:21:00Z", - "id": 8570132, - "issues": [ - { - "id": 1419470531, - "labels": ["feature", "test", "breaking changes", "dependency"], - "number": 162, - "title": "Support for hapi v21, node v18, ESM tests", - "url": "https://github.com/hapijs/crumb/pull/162" - } - ], - "number": 21, - "url": "https://github.com/hapijs/crumb/milestone/21", - "version": "9.0.0" - }, - { - "date": "2020-09-26T23:19:23Z", - "id": 4993627, - "issues": [ - { - "id": 709590070, - "labels": [], - "number": 153, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/crumb/pull/153" - }, - { - "id": 684053273, - "labels": [], - "number": 150, - "title": "update dependencies", - "url": "https://github.com/hapijs/crumb/pull/150" - }, - { - "id": 684028939, - "labels": [], - "number": 149, - "title": "migrate to new travis format", - "url": "https://github.com/hapijs/crumb/pull/149" - }, - { - "id": 672177291, - "labels": [], - "number": 147, - "title": "upgrade to use the latest lab and joi to validate", - "url": "https://github.com/hapijs/crumb/pull/147" - } - ], - "number": 19, - "url": "https://github.com/hapijs/crumb/milestone/19", - "version": "8.0.1" - }, - { - "date": "2020-01-10T07:36:50Z", - "id": 4655596, - "issues": [ - { - "id": 547915832, - "labels": ["breaking changes", "dependency"], - "number": 144, - "title": "Drop hapi v17 and v18", - "url": "https://github.com/hapijs/crumb/issues/144" - }, - { - "id": 547915667, - "labels": ["breaking changes"], - "number": 143, - "title": "Change plugin name to @hapi/crubm", - "url": "https://github.com/hapijs/crumb/issues/143" - }, - { - "id": 547915440, - "labels": ["breaking changes", "dependency"], - "number": 142, - "title": "Only node 12", - "url": "https://github.com/hapijs/crumb/issues/142" - } - ], - "number": 18, - "url": "https://github.com/hapijs/crumb/milestone/18", - "version": "8.0.0" - }, - { - "date": "2019-09-12T22:53:52Z", - "id": 4574290, - "issues": [ - { - "id": 493064073, - "labels": ["dependency"], - "number": 135, - "title": "Update joi", - "url": "https://github.com/hapijs/crumb/issues/135" - }, - { - "id": 439712798, - "labels": ["bug"], - "number": 131, - "title": "validate crumb when autoGenerate is false and crumb not defined on route", - "url": "https://github.com/hapijs/crumb/pull/131" - } - ], - "number": 17, - "url": "https://github.com/hapijs/crumb/milestone/17", - "version": "7.3.2" - }, - { - "date": "2019-08-14T22:36:04Z", - "id": 4245146, - "issues": [ - { - "id": 480890736, - "labels": ["dependency"], - "number": 134, - "title": "Update deps", - "url": "https://github.com/hapijs/crumb/issues/134" - } - ], - "number": 16, - "url": "https://github.com/hapijs/crumb/milestone/16", - "version": "7.3.1" - }, - { - "date": "2019-08-14T21:10:22Z", - "id": 3818806, - "issues": [ - { - "id": 435360156, - "labels": ["dependency"], - "number": 129, - "title": "Change module namespace", - "url": "https://github.com/hapijs/crumb/issues/129" - } - ], - "number": 15, - "url": "https://github.com/hapijs/crumb/milestone/15", - "version": "7.3.0" - }, - { - "date": "2018-11-13T18:43:24Z", - "id": 3290101, - "issues": [], - "number": 14, - "url": "https://github.com/hapijs/crumb/milestone/14", - "version": "7.1.1" - }, - { - "date": "2018-04-23T15:22:25Z", - "id": 2947826, - "issues": [ - { - "id": 311804855, - "labels": ["feature"], - "number": 112, - "title": "adds logUnauthorized option - addresses #56", - "url": "https://github.com/hapijs/crumb/pull/112" - }, - { - "id": 307177389, - "labels": ["bug"], - "number": 111, - "title": "Remove new Buffer usage", - "url": "https://github.com/hapijs/crumb/pull/111" - }, - { - "id": 259476159, - "labels": ["feature"], - "number": 103, - "title": "Add an option to specify the CSRF header name", - "url": "https://github.com/hapijs/crumb/pull/103" - }, - { - "id": 106330580, - "labels": ["feature"], - "number": 56, - "title": "Provide more relevant feedback", - "url": "https://github.com/hapijs/crumb/issues/56" - } - ], - "number": 13, - "url": "https://github.com/hapijs/crumb/milestone/13", - "version": "7.1.0" - }, - { - "date": "2017-11-29T22:08:48Z", - "id": 1942581, - "issues": [ - { - "id": 277924810, - "labels": ["documentation"], - "number": 107, - "title": "Update contact details/maintainer", - "url": "https://github.com/hapijs/crumb/pull/107" - }, - { - "id": 271501752, - "labels": ["breaking changes"], - "number": 106, - "title": "Upgrade Crumb to Hapi 17", - "url": "https://github.com/hapijs/crumb/pull/106" - }, - { - "id": 271151755, - "labels": ["breaking changes", "dependency"], - "number": 105, - "title": "hapi v17 support", - "url": "https://github.com/hapijs/crumb/issues/105" - }, - { - "id": 247006357, - "labels": ["documentation"], - "number": 101, - "title": "Enable Crumb for specific routes only", - "url": "https://github.com/hapijs/crumb/issues/101" - }, - { - "id": 227085417, - "labels": ["documentation"], - "number": 99, - "title": "Add sentence to README about how to disable the plugin for a particular route.", - "url": "https://github.com/hapijs/crumb/pull/99" - }, - { - "id": 215314021, - "labels": ["documentation"], - "number": 98, - "title": "Make both examples runnable with a package.json and proper dependencies", - "url": "https://github.com/hapijs/crumb/pull/98" - }, - { - "id": 202617223, - "labels": ["documentation"], - "number": 97, - "title": "Example won't launch: `Server.views is not a function`", - "url": "https://github.com/hapijs/crumb/issues/97" - }, - { - "id": 182439180, - "labels": ["documentation", "dependency"], - "number": 93, - "title": "Documentation Improvement", - "url": "https://github.com/hapijs/crumb/pull/93" - } - ], - "number": 12, - "url": "https://github.com/hapijs/crumb/milestone/12", - "version": "7.0.0" - }, - { - "date": "2016-08-15T14:50:45Z", - "id": 1856644, - "issues": [ - { - "id": 170913530, - "labels": ["bug", "feature"], - "number": 91, - "title": "Cors origin", - "url": "https://github.com/hapijs/crumb/pull/91" - }, - { - "id": 170194903, - "labels": ["bug", "documentation", "support"], - "number": 90, - "title": "Generate function never called when Vision route has CORS enabled", - "url": "https://github.com/hapijs/crumb/issues/90" - }, - { - "id": 169992097, - "labels": ["support"], - "number": 89, - "title": "Generate is running a second time and 500-ing hapi", - "url": "https://github.com/hapijs/crumb/issues/89" - }, - { - "id": 169122857, - "labels": ["bug", "test"], - "number": 87, - "title": "remove arrow function to fix context", - "url": "https://github.com/hapijs/crumb/pull/87" - }, - { - "id": 94764476, - "labels": ["bug"], - "number": 54, - "title": "Getting 403 forbidden because token has changed", - "url": "https://github.com/hapijs/crumb/issues/54" - } - ], - "number": 11, - "url": "https://github.com/hapijs/crumb/milestone/11", - "version": "6.0.3" - }, - { - "date": "2016-06-30T04:58:45Z", - "id": 1763201, - "issues": [ - { - "id": 162824433, - "labels": ["bug"], - "number": 84, - "title": "#80: fixes crumb route settings bug", - "url": "https://github.com/hapijs/crumb/pull/84" - }, - { - "id": 155618425, - "labels": [], - "number": 82, - "title": "Test on node v6, update dependencies", - "url": "https://github.com/hapijs/crumb/pull/82" - }, - { - "id": 154786786, - "labels": ["bug"], - "number": 80, - "title": "6.0.1 update breaks route-restful option", - "url": "https://github.com/hapijs/crumb/issues/80" - } - ], - "number": 10, - "url": "https://github.com/hapijs/crumb/milestone/10", - "version": "6.0.2" - }, - { - "date": "2016-05-12T20:17:54Z", - "id": 1763168, - "issues": [ - { - "id": 154564385, - "labels": ["bug"], - "number": 79, - "title": "Fixes #74 -- restful configured through routes is not superceded by global config", - "url": "https://github.com/hapijs/crumb/pull/79" - }, - { - "id": 150412889, - "labels": ["documentation"], - "number": 78, - "title": "Purpose readme contribution", - "url": "https://github.com/hapijs/crumb/pull/78" - }, - { - "id": 126263490, - "labels": ["documentation"], - "number": 69, - "title": "Update restful example to respond with JSON. Closes #64", - "url": "https://github.com/hapijs/crumb/pull/69" - } - ], - "number": 9, - "url": "https://github.com/hapijs/crumb/milestone/9", - "version": "6.0.1" - }, - { - "date": "2016-05-12T20:03:30Z", - "id": 1509518, - "issues": [ - { - "id": 126486194, - "labels": [], - "number": 70, - "title": "Hapi12", - "url": "https://github.com/hapijs/crumb/pull/70" - }, - { - "id": 118386357, - "labels": [], - "number": 68, - "title": "Heroku disallows host binding but Crumb requires it", - "url": "https://github.com/hapijs/crumb/issues/68" - }, - { - "id": 116056765, - "labels": ["breaking changes"], - "number": 67, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/crumb/issues/67" - }, - { - "id": 111899625, - "labels": ["breaking changes", "security"], - "number": 61, - "title": "Ignore CORS", - "url": "https://github.com/hapijs/crumb/issues/61" - } - ], - "number": 8, - "url": "https://github.com/hapijs/crumb/milestone/8", - "version": "6.0.0" - }, - { - "date": "2016-01-15T19:10:59Z", - "id": 1306660, - "issues": [ - { - "id": 113432120, - "labels": ["bug", "dependency"], - "number": 63, - "title": "Update 9", - "url": "https://github.com/hapijs/crumb/pull/63" - }, - { - "id": 106583291, - "labels": ["breaking changes"], - "number": 58, - "title": "update to hapi 9/10", - "url": "https://github.com/hapijs/crumb/issues/58" - }, - { - "id": 85088274, - "labels": ["bug"], - "number": 51, - "title": "crumb request.plugins.crumb: undefined", - "url": "https://github.com/hapijs/crumb/issues/51" - } - ], - "number": 7, - "url": "https://github.com/hapijs/crumb/milestone/7", - "version": "5.0.0" - }, - { - "date": "2016-01-15T19:11:02Z", - "id": 1151202, - "issues": [ - { - "id": 87838420, - "labels": ["feature"], - "number": 53, - "title": "correct linting issues", - "url": "https://github.com/hapijs/crumb/pull/53" - }, - { - "id": 86798640, - "labels": ["feature"], - "number": 52, - "title": "Updated joi to 6.x.x", - "url": "https://github.com/hapijs/crumb/pull/52" - } - ], - "number": 6, - "url": "https://github.com/hapijs/crumb/milestone/6", - "version": "4.04" - }, - { - "date": "2015-06-05T14:00:44Z", - "id": 997035, - "issues": [ - { - "id": 59031999, - "labels": ["feature"], - "number": 49, - "title": "Return error during plugin registration for invalid options.", - "url": "https://github.com/hapijs/crumb/pull/49" - } - ], - "number": 5, - "url": "https://github.com/hapijs/crumb/milestone/5", - "version": "4.0.3" - }, - { - "date": "2015-02-26T14:24:19Z", - "id": 977944, - "issues": [ - { - "id": 57526445, - "labels": ["bug"], - "number": 46, - "title": "fix internals.originParser + tests to add protocol in all origin/allowOrigins values", - "url": "https://github.com/hapijs/crumb/pull/46" - } - ], - "number": 4, - "url": "https://github.com/hapijs/crumb/milestone/4", - "version": "4.0.2" - }, - { - "date": "2015-02-13T04:56:16Z", - "id": 966138, - "issues": [ - { - "id": 50437538, - "labels": ["bug"], - "number": 34, - "title": "Host header cannot include URI scheme", - "url": "https://github.com/hapijs/crumb/issues/34" - } - ], - "number": 3, - "url": "https://github.com/hapijs/crumb/milestone/3", - "version": "4.0.1" - }, - { - "date": "2015-02-04T21:14:02Z", - "id": 604456, - "issues": [ - { - "id": 50439213, - "labels": ["bug", "breaking changes", "dependency"], - "number": 37, - "title": "hapi8. Closes #35. internals bug. Closes #33", - "url": "https://github.com/hapijs/crumb/pull/37" - }, - { - "id": 50438479, - "labels": ["breaking changes", "dependency"], - "number": 35, - "title": "hapi 8.0 API", - "url": "https://github.com/hapijs/crumb/issues/35" - }, - { - "id": 50437211, - "labels": ["bug"], - "number": 33, - "title": "Don't use internals for plugin state", - "url": "https://github.com/hapijs/crumb/issues/33" - } - ], - "number": 2, - "url": "https://github.com/hapijs/crumb/milestone/2", - "version": "4.0.0" - }, - { - "date": "2014-03-21T00:42:56Z", - "id": 604455, - "issues": [ - { - "id": 29870772, - "labels": ["feature"], + { + "date": "2023-02-11T19:29:58Z", + "id": 8594993, + "issues": [ + { + "id": 1551793104, + "labels": ["dependency"], + "number": 163, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/crumb/pull/163" + } + ], + "number": 22, + "url": "https://github.com/hapijs/crumb/milestone/22", + "version": "9.0.1" + }, + { + "date": "2022-10-29T20:21:00Z", + "id": 8570132, + "issues": [ + { + "id": 1419470531, + "labels": ["feature", "test", "breaking changes", "dependency"], + "number": 162, + "title": "Support for hapi v21, node v18, ESM tests", + "url": "https://github.com/hapijs/crumb/pull/162" + } + ], + "number": 21, + "url": "https://github.com/hapijs/crumb/milestone/21", + "version": "9.0.0" + }, + { + "date": "2020-09-26T23:19:23Z", + "id": 4993627, + "issues": [ + { + "id": 709590070, + "labels": [], + "number": 153, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/crumb/pull/153" + }, + { + "id": 684053273, + "labels": [], + "number": 150, + "title": "update dependencies", + "url": "https://github.com/hapijs/crumb/pull/150" + }, + { + "id": 684028939, + "labels": [], + "number": 149, + "title": "migrate to new travis format", + "url": "https://github.com/hapijs/crumb/pull/149" + }, + { + "id": 672177291, + "labels": [], + "number": 147, + "title": "upgrade to use the latest lab and joi to validate", + "url": "https://github.com/hapijs/crumb/pull/147" + } + ], + "number": 19, + "url": "https://github.com/hapijs/crumb/milestone/19", + "version": "8.0.1" + }, + { + "date": "2020-01-10T07:36:50Z", + "id": 4655596, + "issues": [ + { + "id": 547915832, + "labels": ["breaking changes", "dependency"], + "number": 144, + "title": "Drop hapi v17 and v18", + "url": "https://github.com/hapijs/crumb/issues/144" + }, + { + "id": 547915667, + "labels": ["breaking changes"], + "number": 143, + "title": "Change plugin name to @hapi/crubm", + "url": "https://github.com/hapijs/crumb/issues/143" + }, + { + "id": 547915440, + "labels": ["breaking changes", "dependency"], + "number": 142, + "title": "Only node 12", + "url": "https://github.com/hapijs/crumb/issues/142" + } + ], + "number": 18, + "url": "https://github.com/hapijs/crumb/milestone/18", + "version": "8.0.0" + }, + { + "date": "2019-09-12T22:53:52Z", + "id": 4574290, + "issues": [ + { + "id": 493064073, + "labels": ["dependency"], + "number": 135, + "title": "Update joi", + "url": "https://github.com/hapijs/crumb/issues/135" + }, + { + "id": 439712798, + "labels": ["bug"], + "number": 131, + "title": "validate crumb when autoGenerate is false and crumb not defined on route", + "url": "https://github.com/hapijs/crumb/pull/131" + } + ], + "number": 17, + "url": "https://github.com/hapijs/crumb/milestone/17", + "version": "7.3.2" + }, + { + "date": "2019-08-14T22:36:04Z", + "id": 4245146, + "issues": [ + { + "id": 480890736, + "labels": ["dependency"], + "number": 134, + "title": "Update deps", + "url": "https://github.com/hapijs/crumb/issues/134" + } + ], + "number": 16, + "url": "https://github.com/hapijs/crumb/milestone/16", + "version": "7.3.1" + }, + { + "date": "2019-08-14T21:10:22Z", + "id": 3818806, + "issues": [ + { + "id": 435360156, + "labels": ["dependency"], + "number": 129, + "title": "Change module namespace", + "url": "https://github.com/hapijs/crumb/issues/129" + } + ], + "number": 15, + "url": "https://github.com/hapijs/crumb/milestone/15", + "version": "7.3.0" + }, + { + "date": "2018-11-13T18:43:24Z", + "id": 3290101, + "issues": [], + "number": 14, + "url": "https://github.com/hapijs/crumb/milestone/14", + "version": "7.1.1" + }, + { + "date": "2018-04-23T15:22:25Z", + "id": 2947826, + "issues": [ + { + "id": 311804855, + "labels": ["feature"], + "number": 112, + "title": "adds logUnauthorized option - addresses #56", + "url": "https://github.com/hapijs/crumb/pull/112" + }, + { + "id": 307177389, + "labels": ["bug"], + "number": 111, + "title": "Remove new Buffer usage", + "url": "https://github.com/hapijs/crumb/pull/111" + }, + { + "id": 259476159, + "labels": ["feature"], + "number": 103, + "title": "Add an option to specify the CSRF header name", + "url": "https://github.com/hapijs/crumb/pull/103" + }, + { + "id": 106330580, + "labels": ["feature"], + "number": 56, + "title": "Provide more relevant feedback", + "url": "https://github.com/hapijs/crumb/issues/56" + } + ], + "number": 13, + "url": "https://github.com/hapijs/crumb/milestone/13", + "version": "7.1.0" + }, + { + "date": "2017-11-29T22:08:48Z", + "id": 1942581, + "issues": [ + { + "id": 277924810, + "labels": ["documentation"], + "number": 107, + "title": "Update contact details/maintainer", + "url": "https://github.com/hapijs/crumb/pull/107" + }, + { + "id": 271501752, + "labels": ["breaking changes"], + "number": 106, + "title": "Upgrade Crumb to Hapi 17", + "url": "https://github.com/hapijs/crumb/pull/106" + }, + { + "id": 271151755, + "labels": ["breaking changes", "dependency"], + "number": 105, + "title": "hapi v17 support", + "url": "https://github.com/hapijs/crumb/issues/105" + }, + { + "id": 247006357, + "labels": ["documentation"], + "number": 101, + "title": "Enable Crumb for specific routes only", + "url": "https://github.com/hapijs/crumb/issues/101" + }, + { + "id": 227085417, + "labels": ["documentation"], + "number": 99, + "title": "Add sentence to README about how to disable the plugin for a particular route.", + "url": "https://github.com/hapijs/crumb/pull/99" + }, + { + "id": 215314021, + "labels": ["documentation"], + "number": 98, + "title": "Make both examples runnable with a package.json and proper dependencies", + "url": "https://github.com/hapijs/crumb/pull/98" + }, + { + "id": 202617223, + "labels": ["documentation"], + "number": 97, + "title": "Example won't launch: `Server.views is not a function`", + "url": "https://github.com/hapijs/crumb/issues/97" + }, + { + "id": 182439180, + "labels": ["documentation", "dependency"], + "number": 93, + "title": "Documentation Improvement", + "url": "https://github.com/hapijs/crumb/pull/93" + } + ], + "number": 12, + "url": "https://github.com/hapijs/crumb/milestone/12", + "version": "7.0.0" + }, + { + "date": "2016-08-15T14:50:45Z", + "id": 1856644, + "issues": [ + { + "id": 170913530, + "labels": ["bug", "feature"], + "number": 91, + "title": "Cors origin", + "url": "https://github.com/hapijs/crumb/pull/91" + }, + { + "id": 170194903, + "labels": ["bug", "documentation", "support"], + "number": 90, + "title": "Generate function never called when Vision route has CORS enabled", + "url": "https://github.com/hapijs/crumb/issues/90" + }, + { + "id": 169992097, + "labels": ["support"], + "number": 89, + "title": "Generate is running a second time and 500-ing hapi", + "url": "https://github.com/hapijs/crumb/issues/89" + }, + { + "id": 169122857, + "labels": ["bug", "test"], + "number": 87, + "title": "remove arrow function to fix context", + "url": "https://github.com/hapijs/crumb/pull/87" + }, + { + "id": 94764476, + "labels": ["bug"], + "number": 54, + "title": "Getting 403 forbidden because token has changed", + "url": "https://github.com/hapijs/crumb/issues/54" + } + ], "number": 11, - "title": "Support hapi 3.0", - "url": "https://github.com/hapijs/crumb/issues/11" - } - ], - "number": 1, - "url": "https://github.com/hapijs/crumb/milestone/1", - "version": "1.1.2" - } + "url": "https://github.com/hapijs/crumb/milestone/11", + "version": "6.0.3" + }, + { + "date": "2016-06-30T04:58:45Z", + "id": 1763201, + "issues": [ + { + "id": 162824433, + "labels": ["bug"], + "number": 84, + "title": "#80: fixes crumb route settings bug", + "url": "https://github.com/hapijs/crumb/pull/84" + }, + { + "id": 155618425, + "labels": [], + "number": 82, + "title": "Test on node v6, update dependencies", + "url": "https://github.com/hapijs/crumb/pull/82" + }, + { + "id": 154786786, + "labels": ["bug"], + "number": 80, + "title": "6.0.1 update breaks route-restful option", + "url": "https://github.com/hapijs/crumb/issues/80" + } + ], + "number": 10, + "url": "https://github.com/hapijs/crumb/milestone/10", + "version": "6.0.2" + }, + { + "date": "2016-05-12T20:17:54Z", + "id": 1763168, + "issues": [ + { + "id": 154564385, + "labels": ["bug"], + "number": 79, + "title": "Fixes #74 -- restful configured through routes is not superceded by global config", + "url": "https://github.com/hapijs/crumb/pull/79" + }, + { + "id": 150412889, + "labels": ["documentation"], + "number": 78, + "title": "Purpose readme contribution", + "url": "https://github.com/hapijs/crumb/pull/78" + }, + { + "id": 126263490, + "labels": ["documentation"], + "number": 69, + "title": "Update restful example to respond with JSON. Closes #64", + "url": "https://github.com/hapijs/crumb/pull/69" + } + ], + "number": 9, + "url": "https://github.com/hapijs/crumb/milestone/9", + "version": "6.0.1" + }, + { + "date": "2016-05-12T20:03:30Z", + "id": 1509518, + "issues": [ + { + "id": 126486194, + "labels": [], + "number": 70, + "title": "Hapi12", + "url": "https://github.com/hapijs/crumb/pull/70" + }, + { + "id": 118386357, + "labels": [], + "number": 68, + "title": "Heroku disallows host binding but Crumb requires it", + "url": "https://github.com/hapijs/crumb/issues/68" + }, + { + "id": 116056765, + "labels": ["breaking changes"], + "number": 67, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/crumb/issues/67" + }, + { + "id": 111899625, + "labels": ["breaking changes", "security"], + "number": 61, + "title": "Ignore CORS", + "url": "https://github.com/hapijs/crumb/issues/61" + } + ], + "number": 8, + "url": "https://github.com/hapijs/crumb/milestone/8", + "version": "6.0.0" + }, + { + "date": "2016-01-15T19:10:59Z", + "id": 1306660, + "issues": [ + { + "id": 113432120, + "labels": ["bug", "dependency"], + "number": 63, + "title": "Update 9", + "url": "https://github.com/hapijs/crumb/pull/63" + }, + { + "id": 106583291, + "labels": ["breaking changes"], + "number": 58, + "title": "update to hapi 9/10", + "url": "https://github.com/hapijs/crumb/issues/58" + }, + { + "id": 85088274, + "labels": ["bug"], + "number": 51, + "title": "crumb request.plugins.crumb: undefined", + "url": "https://github.com/hapijs/crumb/issues/51" + } + ], + "number": 7, + "url": "https://github.com/hapijs/crumb/milestone/7", + "version": "5.0.0" + }, + { + "date": "2016-01-15T19:11:02Z", + "id": 1151202, + "issues": [ + { + "id": 87838420, + "labels": ["feature"], + "number": 53, + "title": "correct linting issues", + "url": "https://github.com/hapijs/crumb/pull/53" + }, + { + "id": 86798640, + "labels": ["feature"], + "number": 52, + "title": "Updated joi to 6.x.x", + "url": "https://github.com/hapijs/crumb/pull/52" + } + ], + "number": 6, + "url": "https://github.com/hapijs/crumb/milestone/6", + "version": "4.04" + }, + { + "date": "2015-06-05T14:00:44Z", + "id": 997035, + "issues": [ + { + "id": 59031999, + "labels": ["feature"], + "number": 49, + "title": "Return error during plugin registration for invalid options.", + "url": "https://github.com/hapijs/crumb/pull/49" + } + ], + "number": 5, + "url": "https://github.com/hapijs/crumb/milestone/5", + "version": "4.0.3" + }, + { + "date": "2015-02-26T14:24:19Z", + "id": 977944, + "issues": [ + { + "id": 57526445, + "labels": ["bug"], + "number": 46, + "title": "fix internals.originParser + tests to add protocol in all origin/allowOrigins values", + "url": "https://github.com/hapijs/crumb/pull/46" + } + ], + "number": 4, + "url": "https://github.com/hapijs/crumb/milestone/4", + "version": "4.0.2" + }, + { + "date": "2015-02-13T04:56:16Z", + "id": 966138, + "issues": [ + { + "id": 50437538, + "labels": ["bug"], + "number": 34, + "title": "Host header cannot include URI scheme", + "url": "https://github.com/hapijs/crumb/issues/34" + } + ], + "number": 3, + "url": "https://github.com/hapijs/crumb/milestone/3", + "version": "4.0.1" + }, + { + "date": "2015-02-04T21:14:02Z", + "id": 604456, + "issues": [ + { + "id": 50439213, + "labels": ["bug", "breaking changes", "dependency"], + "number": 37, + "title": "hapi8. Closes #35. internals bug. Closes #33", + "url": "https://github.com/hapijs/crumb/pull/37" + }, + { + "id": 50438479, + "labels": ["breaking changes", "dependency"], + "number": 35, + "title": "hapi 8.0 API", + "url": "https://github.com/hapijs/crumb/issues/35" + }, + { + "id": 50437211, + "labels": ["bug"], + "number": 33, + "title": "Don't use internals for plugin state", + "url": "https://github.com/hapijs/crumb/issues/33" + } + ], + "number": 2, + "url": "https://github.com/hapijs/crumb/milestone/2", + "version": "4.0.0" + }, + { + "date": "2014-03-21T00:42:56Z", + "id": 604455, + "issues": [ + { + "id": 29870772, + "labels": ["feature"], + "number": 11, + "title": "Support hapi 3.0", + "url": "https://github.com/hapijs/crumb/issues/11" + } + ], + "number": 1, + "url": "https://github.com/hapijs/crumb/milestone/1", + "version": "1.1.2" + } ] diff --git a/generated/modules/crumb/info.json b/generated/modules/crumb/info.json index 1f18e9bb..774f7083 100644 --- a/generated/modules/crumb/info.json +++ b/generated/modules/crumb/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 48, - "isPlugin": true, - "link": "https://github.com/hapijs/crumb", - "name": "crumb", - "package": "@hapi/crumb", - "slogan": "CSRF crumb generation and validation for hapi.", - "sloganHtml": "CSRF crumb generation and validation for hapi.", - "stars": 170, - "updated": "2024-10-23T15:29:18Z", - "versions": [ - { - "branch": "v9.0.1", - "license": "BSD", - "name": "9.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["9.0.1"], - "latestVersion": "9.x.x" + "api": true, + "forks": 48, + "isPlugin": true, + "latestVersion": "9.x.x", + "link": "https://github.com/hapijs/crumb", + "name": "crumb", + "package": "@hapi/crumb", + "slogan": "CSRF crumb generation and validation for hapi.", + "sloganHtml": "CSRF crumb generation and validation for hapi.", + "stars": 170, + "updated": "2024-10-23T15:29:18Z", + "versions": [ + { + "branch": "v9.0.1", + "license": "BSD", + "name": "9.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["9.0.1"] } diff --git a/generated/modules/cryptiles/changelog.json b/generated/modules/cryptiles/changelog.json index 2f623c74..45f2b6f8 100644 --- a/generated/modules/cryptiles/changelog.json +++ b/generated/modules/cryptiles/changelog.json @@ -1,464 +1,464 @@ [ - { - "date": "2025-12-09T17:04:51Z", - "id": 14313399, - "issues": [ - { - "id": 3711785066, - "labels": ["bug", "documentation"], - "number": 63, - "title": "fix: 🐛 Add timing-safe comparison tests and update API docs", - "url": "https://github.com/hapijs/cryptiles/pull/63" - } - ], - "number": 31, - "url": "https://github.com/hapijs/cryptiles/milestone/31", - "version": "6.0.2" - }, - { - "date": "2023-02-11T18:56:26Z", - "id": 7953238, - "issues": [ - { - "id": 1580971904, - "labels": [], - "number": 60, - "title": "chore: bump packages", - "url": "https://github.com/hapijs/cryptiles/pull/60" - } - ], - "number": 30, - "url": "https://github.com/hapijs/cryptiles/milestone/30", - "version": "6.0.1" - }, - { - "date": "2022-05-07T22:43:55Z", - "id": 7953237, - "issues": [ - { - "id": 1228485070, - "labels": ["breaking changes", "dependency"], - "number": 58, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/cryptiles/pull/58" - } - ], - "number": 29, - "url": "https://github.com/hapijs/cryptiles/milestone/29", - "version": "6.0.0" - }, - { - "date": "2020-05-15T20:25:04Z", - "id": 4973277, - "issues": [ - { - "id": 619225572, - "labels": ["feature"], - "number": 51, - "title": "Add randomAlphanumString()", - "url": "https://github.com/hapijs/cryptiles/issues/51" - } - ], - "number": 27, - "url": "https://github.com/hapijs/cryptiles/milestone/27", - "version": "5.1.0" - }, - { - "date": "2020-01-05T01:06:58Z", - "id": 4973276, - "issues": [ - { - "id": 545352270, - "labels": ["breaking changes", "dependency"], - "number": 50, - "title": "Only node 12", - "url": "https://github.com/hapijs/cryptiles/issues/50" - } - ], - "number": 26, - "url": "https://github.com/hapijs/cryptiles/milestone/26", - "version": "5.0.0" - }, - { - "date": "2019-09-19T18:16:57Z", - "id": 4192199, - "issues": [ - { - "id": 481120957, - "labels": ["types"], - "number": 45, - "title": "Added TS declarations", - "url": "https://github.com/hapijs/cryptiles/pull/45" - } - ], - "number": 24, - "url": "https://github.com/hapijs/cryptiles/milestone/24", - "version": "4.2.1" - }, - { - "date": "2019-04-02T06:15:55Z", - "id": 3792281, - "issues": [ - { - "id": 428041448, - "labels": ["dependency"], - "number": 40, - "title": "Change module namespace", - "url": "https://github.com/hapijs/cryptiles/issues/40" - } - ], - "number": 20, - "url": "https://github.com/hapijs/cryptiles/milestone/20", - "version": "4.2.0" - }, - { - "date": "2018-11-03T00:26:25Z", - "id": 3446717, - "issues": [ - { - "id": 377001781, - "labels": ["non issue"], - "number": 36, - "title": "Remove engines", - "url": "https://github.com/hapijs/cryptiles/issues/36" - } - ], - "number": 18, - "url": "https://github.com/hapijs/cryptiles/milestone/18", - "version": "4.1.3" - }, - { - "date": "2018-06-24T04:07:49Z", - "id": 2904486, - "issues": [ - { - "id": 335149107, - "labels": ["bug", "security"], - "number": 34, - "title": "randomDigits() generates biased random digits", - "url": "https://github.com/hapijs/cryptiles/issues/34" - } - ], - "number": 17, - "url": "https://github.com/hapijs/cryptiles/milestone/17", - "version": "4.1.2" - }, - { - "date": "2017-11-10T20:15:19Z", - "id": 2886953, - "issues": [ - { - "id": 272885440, - "labels": ["bug"], - "number": 33, - "title": "fix(fixedTimeComparison): use Buffer.from", - "url": "https://github.com/hapijs/cryptiles/pull/33" - } - ], - "number": 16, - "url": "https://github.com/hapijs/cryptiles/milestone/16", - "version": "4.1.1" - }, - { - "date": "2017-11-03T20:46:13Z", - "id": 2886952, - "issues": [ - { - "id": 271113883, - "labels": ["feature"], - "number": 32, - "title": "Add fixedTimeComparison()", - "url": "https://github.com/hapijs/cryptiles/issues/32" - } - ], - "number": 15, - "url": "https://github.com/hapijs/cryptiles/milestone/15", - "version": "4.1.0" - }, - { - "date": "2017-11-03T20:45:19Z", - "id": 2794201, - "issues": [ - { - "id": 270893394, - "labels": ["dependency"], + { + "date": "2025-12-09T17:04:51Z", + "id": 14313399, + "issues": [ + { + "id": 3711785066, + "labels": ["bug", "documentation"], + "number": 63, + "title": "fix: 🐛 Add timing-safe comparison tests and update API docs", + "url": "https://github.com/hapijs/cryptiles/pull/63" + } + ], "number": 31, - "title": "Update deps", - "url": "https://github.com/hapijs/cryptiles/issues/31" - } - ], - "number": 14, - "url": "https://github.com/hapijs/cryptiles/milestone/14", - "version": "4.0.2" - }, - { - "date": "2017-09-26T09:08:43Z", - "id": 2787939, - "issues": [ - { - "id": 260547757, - "labels": ["dependency"], - "number": 28, - "title": "Update deps", - "url": "https://github.com/hapijs/cryptiles/issues/28" - } - ], - "number": 13, - "url": "https://github.com/hapijs/cryptiles/milestone/13", - "version": "4.0.1" - }, - { - "date": "2017-09-24T21:26:52Z", - "id": 2546750, - "issues": [ - { - "id": 260117167, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/cryptiles/milestone/31", + "version": "6.0.2" + }, + { + "date": "2023-02-11T18:56:26Z", + "id": 7953238, + "issues": [ + { + "id": 1580971904, + "labels": [], + "number": 60, + "title": "chore: bump packages", + "url": "https://github.com/hapijs/cryptiles/pull/60" + } + ], + "number": 30, + "url": "https://github.com/hapijs/cryptiles/milestone/30", + "version": "6.0.1" + }, + { + "date": "2022-05-07T22:43:55Z", + "id": 7953237, + "issues": [ + { + "id": 1228485070, + "labels": ["breaking changes", "dependency"], + "number": 58, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/cryptiles/pull/58" + } + ], + "number": 29, + "url": "https://github.com/hapijs/cryptiles/milestone/29", + "version": "6.0.0" + }, + { + "date": "2020-05-15T20:25:04Z", + "id": 4973277, + "issues": [ + { + "id": 619225572, + "labels": ["feature"], + "number": 51, + "title": "Add randomAlphanumString()", + "url": "https://github.com/hapijs/cryptiles/issues/51" + } + ], "number": 27, - "title": "Throw errors", - "url": "https://github.com/hapijs/cryptiles/issues/27" - }, - { - "id": 177288767, - "labels": ["breaking changes"], - "number": 24, - "title": "Use crypto.timingSafeEqual for fixedTimeComparison", - "url": "https://github.com/hapijs/cryptiles/issues/24" - } - ], - "number": 12, - "url": "https://github.com/hapijs/cryptiles/milestone/12", - "version": "4.0.0" - }, - { - "date": "2019-04-02T06:12:23Z", - "id": 4167581, - "issues": [ - { - "id": 424675671, - "labels": ["lts"], - "number": 39, - "title": "Commercial version of v3 branch", - "url": "https://github.com/hapijs/cryptiles/issues/39" - } - ], - "number": 22, - "url": "https://github.com/hapijs/cryptiles/milestone/22", - "version": "3.2.0" - }, - { - "date": "2018-11-05T22:45:49Z", - "id": 3798334, - "issues": [ - { - "id": 377615014, - "labels": ["non issue", "lts"], - "number": 37, - "title": "Remove engines", - "url": "https://github.com/hapijs/cryptiles/issues/37" - } - ], - "number": 21, - "url": "https://github.com/hapijs/cryptiles/milestone/21", - "version": "3.1.4" - }, - { - "date": "2018-11-02T21:48:07Z", - "id": 3792011, - "issues": [ - { - "id": 376973840, - "labels": ["bug", "lts"], - "number": 35, - "title": "randomDigits() generates biased random digits", - "url": "https://github.com/hapijs/cryptiles/issues/35" - } - ], - "number": 19, - "url": "https://github.com/hapijs/cryptiles/milestone/19", - "version": "3.1.3" - }, - { - "date": "2017-05-28T06:24:36Z", - "id": 1984963, - "issues": [ - { - "id": 231849594, - "labels": ["dependency"], + "url": "https://github.com/hapijs/cryptiles/milestone/27", + "version": "5.1.0" + }, + { + "date": "2020-01-05T01:06:58Z", + "id": 4973276, + "issues": [ + { + "id": 545352270, + "labels": ["breaking changes", "dependency"], + "number": 50, + "title": "Only node 12", + "url": "https://github.com/hapijs/cryptiles/issues/50" + } + ], "number": 26, - "title": "Update deps.", - "url": "https://github.com/hapijs/cryptiles/issues/26" - } - ], - "number": 11, - "url": "https://github.com/hapijs/cryptiles/milestone/11", - "version": "3.1.2" - }, - { - "date": "2016-09-05T22:10:42Z", - "id": 1984959, - "issues": [ - { - "id": 175131602, - "labels": ["bug"], - "number": 23, - "title": "Support node 4", - "url": "https://github.com/hapijs/cryptiles/issues/23" - } - ], - "number": 10, - "url": "https://github.com/hapijs/cryptiles/milestone/10", - "version": "3.1.1" - }, - { - "date": "2016-09-05T22:01:59Z", - "id": 1908029, - "issues": [ - { - "id": 175131040, - "labels": ["feature"], - "number": 22, - "title": "Generate random digits", - "url": "https://github.com/hapijs/cryptiles/issues/22" - } - ], - "number": 9, - "url": "https://github.com/hapijs/cryptiles/milestone/9", - "version": "3.1.0" - }, - { - "date": "2016-07-27T19:50:53Z", - "id": 1777268, - "issues": [ - { - "id": 167940345, - "labels": ["dependency"], - "number": 21, - "title": "Update deps", - "url": "https://github.com/hapijs/cryptiles/issues/21" - } - ], - "number": 8, - "url": "https://github.com/hapijs/cryptiles/milestone/8", - "version": "3.0.2" - }, - { - "date": "2016-05-19T18:00:07Z", - "id": 1387893, - "issues": [ - { - "id": 155618825, - "labels": ["documentation", "test"], - "number": 19, - "title": "Test on node v6, update dependencies", - "url": "https://github.com/hapijs/cryptiles/pull/19" - } - ], - "number": 7, - "url": "https://github.com/hapijs/cryptiles/milestone/7", - "version": "3.0.1" - }, - { - "date": "2015-11-02T03:43:40Z", - "id": 1297126, - "issues": [ - { - "id": 114518101, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/cryptiles/milestone/26", + "version": "5.0.0" + }, + { + "date": "2019-09-19T18:16:57Z", + "id": 4192199, + "issues": [ + { + "id": 481120957, + "labels": ["types"], + "number": 45, + "title": "Added TS declarations", + "url": "https://github.com/hapijs/cryptiles/pull/45" + } + ], + "number": 24, + "url": "https://github.com/hapijs/cryptiles/milestone/24", + "version": "4.2.1" + }, + { + "date": "2019-04-02T06:15:55Z", + "id": 3792281, + "issues": [ + { + "id": 428041448, + "labels": ["dependency"], + "number": 40, + "title": "Change module namespace", + "url": "https://github.com/hapijs/cryptiles/issues/40" + } + ], + "number": 20, + "url": "https://github.com/hapijs/cryptiles/milestone/20", + "version": "4.2.0" + }, + { + "date": "2018-11-03T00:26:25Z", + "id": 3446717, + "issues": [ + { + "id": 377001781, + "labels": ["non issue"], + "number": 36, + "title": "Remove engines", + "url": "https://github.com/hapijs/cryptiles/issues/36" + } + ], "number": 18, - "title": "es6. Closes #17", - "url": "https://github.com/hapijs/cryptiles/pull/18" - }, - { - "id": 114517936, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/cryptiles/milestone/18", + "version": "4.1.3" + }, + { + "date": "2018-06-24T04:07:49Z", + "id": 2904486, + "issues": [ + { + "id": 335149107, + "labels": ["bug", "security"], + "number": 34, + "title": "randomDigits() generates biased random digits", + "url": "https://github.com/hapijs/cryptiles/issues/34" + } + ], "number": 17, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/cryptiles/issues/17" - } - ], - "number": 6, - "url": "https://github.com/hapijs/cryptiles/milestone/6", - "version": "3.0.0" - }, - { - "date": "2015-09-09T06:09:59Z", - "id": 790765, - "issues": [ - { - "id": 105526465, - "labels": ["documentation", "test"], + "url": "https://github.com/hapijs/cryptiles/milestone/17", + "version": "4.1.2" + }, + { + "date": "2017-11-10T20:15:19Z", + "id": 2886953, + "issues": [ + { + "id": 272885440, + "labels": ["bug"], + "number": 33, + "title": "fix(fixedTimeComparison): use Buffer.from", + "url": "https://github.com/hapijs/cryptiles/pull/33" + } + ], "number": 16, - "title": "Update hapi style", - "url": "https://github.com/hapijs/cryptiles/issues/16" - } - ], - "number": 5, - "url": "https://github.com/hapijs/cryptiles/milestone/5", - "version": "2.0.5" - }, - { - "date": "2014-09-15T22:11:54Z", - "id": 780206, - "issues": [ - { - "id": 42824734, - "labels": ["non issue"], + "url": "https://github.com/hapijs/cryptiles/milestone/16", + "version": "4.1.1" + }, + { + "date": "2017-11-03T20:46:13Z", + "id": 2886952, + "issues": [ + { + "id": 271113883, + "labels": ["feature"], + "number": 32, + "title": "Add fixedTimeComparison()", + "url": "https://github.com/hapijs/cryptiles/issues/32" + } + ], + "number": 15, + "url": "https://github.com/hapijs/cryptiles/milestone/15", + "version": "4.1.0" + }, + { + "date": "2017-11-03T20:45:19Z", + "id": 2794201, + "issues": [ + { + "id": 270893394, + "labels": ["dependency"], + "number": 31, + "title": "Update deps", + "url": "https://github.com/hapijs/cryptiles/issues/31" + } + ], + "number": 14, + "url": "https://github.com/hapijs/cryptiles/milestone/14", + "version": "4.0.2" + }, + { + "date": "2017-09-26T09:08:43Z", + "id": 2787939, + "issues": [ + { + "id": 260547757, + "labels": ["dependency"], + "number": 28, + "title": "Update deps", + "url": "https://github.com/hapijs/cryptiles/issues/28" + } + ], + "number": 13, + "url": "https://github.com/hapijs/cryptiles/milestone/13", + "version": "4.0.1" + }, + { + "date": "2017-09-24T21:26:52Z", + "id": 2546750, + "issues": [ + { + "id": 260117167, + "labels": ["breaking changes"], + "number": 27, + "title": "Throw errors", + "url": "https://github.com/hapijs/cryptiles/issues/27" + }, + { + "id": 177288767, + "labels": ["breaking changes"], + "number": 24, + "title": "Use crypto.timingSafeEqual for fixedTimeComparison", + "url": "https://github.com/hapijs/cryptiles/issues/24" + } + ], + "number": 12, + "url": "https://github.com/hapijs/cryptiles/milestone/12", + "version": "4.0.0" + }, + { + "date": "2019-04-02T06:12:23Z", + "id": 4167581, + "issues": [ + { + "id": 424675671, + "labels": ["lts"], + "number": 39, + "title": "Commercial version of v3 branch", + "url": "https://github.com/hapijs/cryptiles/issues/39" + } + ], + "number": 22, + "url": "https://github.com/hapijs/cryptiles/milestone/22", + "version": "3.2.0" + }, + { + "date": "2018-11-05T22:45:49Z", + "id": 3798334, + "issues": [ + { + "id": 377615014, + "labels": ["non issue", "lts"], + "number": 37, + "title": "Remove engines", + "url": "https://github.com/hapijs/cryptiles/issues/37" + } + ], + "number": 21, + "url": "https://github.com/hapijs/cryptiles/milestone/21", + "version": "3.1.4" + }, + { + "date": "2018-11-02T21:48:07Z", + "id": 3792011, + "issues": [ + { + "id": 376973840, + "labels": ["bug", "lts"], + "number": 35, + "title": "randomDigits() generates biased random digits", + "url": "https://github.com/hapijs/cryptiles/issues/35" + } + ], + "number": 19, + "url": "https://github.com/hapijs/cryptiles/milestone/19", + "version": "3.1.3" + }, + { + "date": "2017-05-28T06:24:36Z", + "id": 1984963, + "issues": [ + { + "id": 231849594, + "labels": ["dependency"], + "number": 26, + "title": "Update deps.", + "url": "https://github.com/hapijs/cryptiles/issues/26" + } + ], + "number": 11, + "url": "https://github.com/hapijs/cryptiles/milestone/11", + "version": "3.1.2" + }, + { + "date": "2016-09-05T22:10:42Z", + "id": 1984959, + "issues": [ + { + "id": 175131602, + "labels": ["bug"], + "number": 23, + "title": "Support node 4", + "url": "https://github.com/hapijs/cryptiles/issues/23" + } + ], "number": 10, - "title": "Move to hapijs", - "url": "https://github.com/hapijs/cryptiles/issues/10" - } - ], - "number": 4, - "url": "https://github.com/hapijs/cryptiles/milestone/4", - "version": "2.0.4" - }, - { - "date": "2014-09-05T19:43:02Z", - "id": 740453, - "issues": [ - { - "id": 42081933, - "labels": ["test"], + "url": "https://github.com/hapijs/cryptiles/milestone/10", + "version": "3.1.1" + }, + { + "date": "2016-09-05T22:01:59Z", + "id": 1908029, + "issues": [ + { + "id": 175131040, + "labels": ["feature"], + "number": 22, + "title": "Generate random digits", + "url": "https://github.com/hapijs/cryptiles/issues/22" + } + ], "number": 9, - "title": "lab 4.0", - "url": "https://github.com/hapijs/cryptiles/issues/9" - } - ], - "number": 3, - "url": "https://github.com/hapijs/cryptiles/milestone/3", - "version": "2.0.3" - }, - { - "date": "2014-08-02T07:22:12Z", - "id": 623577, - "issues": [ - { - "id": 39344209, - "labels": [], + "url": "https://github.com/hapijs/cryptiles/milestone/9", + "version": "3.1.0" + }, + { + "date": "2016-07-27T19:50:53Z", + "id": 1777268, + "issues": [ + { + "id": 167940345, + "labels": ["dependency"], + "number": 21, + "title": "Update deps", + "url": "https://github.com/hapijs/cryptiles/issues/21" + } + ], "number": 8, - "title": "Update contact", - "url": "https://github.com/hapijs/cryptiles/issues/8" - } - ], - "number": 2, - "url": "https://github.com/hapijs/cryptiles/milestone/2", - "version": "2.0.2" - }, - { - "date": "2014-04-08T07:41:09Z", - "id": 623576, - "issues": [ - { - "id": 31049215, - "labels": ["test"], + "url": "https://github.com/hapijs/cryptiles/milestone/8", + "version": "3.0.2" + }, + { + "date": "2016-05-19T18:00:07Z", + "id": 1387893, + "issues": [ + { + "id": 155618825, + "labels": ["documentation", "test"], + "number": 19, + "title": "Test on node v6, update dependencies", + "url": "https://github.com/hapijs/cryptiles/pull/19" + } + ], + "number": 7, + "url": "https://github.com/hapijs/cryptiles/milestone/7", + "version": "3.0.1" + }, + { + "date": "2015-11-02T03:43:40Z", + "id": 1297126, + "issues": [ + { + "id": 114518101, + "labels": ["breaking changes"], + "number": 18, + "title": "es6. Closes #17", + "url": "https://github.com/hapijs/cryptiles/pull/18" + }, + { + "id": 114517936, + "labels": ["breaking changes"], + "number": 17, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/cryptiles/issues/17" + } + ], + "number": 6, + "url": "https://github.com/hapijs/cryptiles/milestone/6", + "version": "3.0.0" + }, + { + "date": "2015-09-09T06:09:59Z", + "id": 790765, + "issues": [ + { + "id": 105526465, + "labels": ["documentation", "test"], + "number": 16, + "title": "Update hapi style", + "url": "https://github.com/hapijs/cryptiles/issues/16" + } + ], "number": 5, - "title": "Bring coverage back to 100% after lab partial condition result coverage", - "url": "https://github.com/hapijs/cryptiles/issues/5" - } - ], - "number": 1, - "url": "https://github.com/hapijs/cryptiles/milestone/1", - "version": "2.0.1" - } + "url": "https://github.com/hapijs/cryptiles/milestone/5", + "version": "2.0.5" + }, + { + "date": "2014-09-15T22:11:54Z", + "id": 780206, + "issues": [ + { + "id": 42824734, + "labels": ["non issue"], + "number": 10, + "title": "Move to hapijs", + "url": "https://github.com/hapijs/cryptiles/issues/10" + } + ], + "number": 4, + "url": "https://github.com/hapijs/cryptiles/milestone/4", + "version": "2.0.4" + }, + { + "date": "2014-09-05T19:43:02Z", + "id": 740453, + "issues": [ + { + "id": 42081933, + "labels": ["test"], + "number": 9, + "title": "lab 4.0", + "url": "https://github.com/hapijs/cryptiles/issues/9" + } + ], + "number": 3, + "url": "https://github.com/hapijs/cryptiles/milestone/3", + "version": "2.0.3" + }, + { + "date": "2014-08-02T07:22:12Z", + "id": 623577, + "issues": [ + { + "id": 39344209, + "labels": [], + "number": 8, + "title": "Update contact", + "url": "https://github.com/hapijs/cryptiles/issues/8" + } + ], + "number": 2, + "url": "https://github.com/hapijs/cryptiles/milestone/2", + "version": "2.0.2" + }, + { + "date": "2014-04-08T07:41:09Z", + "id": 623576, + "issues": [ + { + "id": 31049215, + "labels": ["test"], + "number": 5, + "title": "Bring coverage back to 100% after lab partial condition result coverage", + "url": "https://github.com/hapijs/cryptiles/issues/5" + } + ], + "number": 1, + "url": "https://github.com/hapijs/cryptiles/milestone/1", + "version": "2.0.1" + } ] diff --git a/generated/modules/cryptiles/info.json b/generated/modules/cryptiles/info.json index b882c8ba..bece1675 100644 --- a/generated/modules/cryptiles/info.json +++ b/generated/modules/cryptiles/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 25, - "isPlugin": false, - "link": "https://github.com/hapijs/cryptiles", - "name": "cryptiles", - "package": "@hapi/cryptiles", - "slogan": "General purpose crypto utilities.", - "sloganHtml": "General purpose crypto utilities.", - "stars": 183, - "updated": "2025-12-11T11:38:33Z", - "versions": [ - { - "branch": "v6.0.3", - "license": "BSD", - "name": "6.0.3", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.3"], - "latestVersion": "6.x.x" + "api": true, + "forks": 27, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/cryptiles", + "name": "cryptiles", + "package": "@hapi/cryptiles", + "slogan": "General purpose crypto utilities.", + "sloganHtml": "General purpose crypto utilities.", + "stars": 184, + "updated": "2025-12-11T11:38:33Z", + "versions": [ + { + "branch": "v6.0.3", + "license": "BSD", + "name": "6.0.3", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.3"] } diff --git a/generated/modules/eslint-plugin/changelog.json b/generated/modules/eslint-plugin/changelog.json index 2dc054bb..47f69f66 100644 --- a/generated/modules/eslint-plugin/changelog.json +++ b/generated/modules/eslint-plugin/changelog.json @@ -1,257 +1,257 @@ [ - { - "date": "2024-10-22T13:42:11Z", - "id": 11773540, - "issues": [ - { - "id": 2433661542, - "labels": ["breaking changes"], - "number": 33, - "title": "feat: target ESLint v9", - "url": "https://github.com/hapijs/eslint-plugin/pull/33" - } - ], - "number": 14, - "url": "https://github.com/hapijs/eslint-plugin/milestone/14", - "version": "7.0.0" - }, - { - "date": "2024-10-22T13:42:03Z", - "id": 7948982, - "issues": [ - { - "id": 1227388957, - "labels": ["dependency", "breaking changes"], - "number": 31, - "title": "Drop support for node v12, support node v18, upgrade eslint", - "url": "https://github.com/hapijs/eslint-plugin/pull/31" - } - ], - "number": 12, - "url": "https://github.com/hapijs/eslint-plugin/milestone/12", - "version": "6.0.0" - }, - { - "date": "2021-05-21T17:30:07Z", - "id": 5877327, - "issues": [ - { - "id": 854765946, - "labels": ["feature"], - "number": 27, - "title": "Migrate lab internal eslint config", - "url": "https://github.com/hapijs/eslint-plugin/pull/27" - }, - { - "id": 854757204, - "labels": ["dependency"], - "number": 26, - "title": "Update to @babel/eslint-parser", - "url": "https://github.com/hapijs/eslint-plugin/issues/26" - }, - { - "id": 709600547, - "labels": [], - "number": 24, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/eslint-plugin/pull/24" - } - ], - "number": 10, - "url": "https://github.com/hapijs/eslint-plugin/milestone/10", - "version": "5.1.0" - }, - { - "date": "2020-09-15T00:06:00Z", - "id": 5871699, - "issues": [ - { - "id": 691106119, - "labels": [], - "number": 23, - "title": "Rename to eslint-plugin", - "url": "https://github.com/hapijs/eslint-plugin/pull/23" - }, - { - "id": 671888227, - "labels": ["feature", "breaking changes"], - "number": 21, - "title": "Change package name to @hapi/eslint-plugin", - "url": "https://github.com/hapijs/eslint-plugin/issues/21" - } - ], - "number": 9, - "url": "https://github.com/hapijs/eslint-plugin/milestone/9", - "version": "5.0.0" - }, - { - "date": "2020-09-13T14:51:39Z", - "id": 4973281, - "issues": [ - { - "id": 682756105, - "labels": ["feature"], - "number": 22, - "title": "Update rules for modern eslint", - "url": "https://github.com/hapijs/eslint-plugin/pull/22" - }, - { - "id": 668201273, - "labels": ["feature"], - "number": 20, - "title": "Merge eslint-config-hapi and rules", - "url": "https://github.com/hapijs/eslint-plugin/pull/20" - }, - { - "id": 664135479, - "labels": [], - "number": 19, - "title": "update to travis templates and test on node 14", - "url": "https://github.com/hapijs/eslint-plugin/pull/19" - }, - { - "id": 600173238, - "labels": ["documentation"], - "number": 17, - "title": "Create API.md", - "url": "https://github.com/hapijs/eslint-plugin/pull/17" - }, - { - "id": 600095950, - "labels": ["documentation"], - "number": 16, - "title": "Update README.md", - "url": "https://github.com/hapijs/eslint-plugin/pull/16" - }, - { - "id": 568615186, - "labels": ["documentation"], - "number": 15, - "title": "fix(package.json): repository url", - "url": "https://github.com/hapijs/eslint-plugin/pull/15" - } - ], - "number": 8, - "url": "https://github.com/hapijs/eslint-plugin/milestone/8", - "version": "4.3.6" - }, - { - "date": "2020-01-05T01:14:59Z", - "id": 4556488, - "issues": [ - { - "id": 545352963, - "labels": ["non issue"], + { + "date": "2024-10-22T13:42:11Z", + "id": 11773540, + "issues": [ + { + "id": 2433661542, + "labels": ["breaking changes"], + "number": 33, + "title": "feat: target ESLint v9", + "url": "https://github.com/hapijs/eslint-plugin/pull/33" + } + ], "number": 14, - "title": "Cleanup", - "url": "https://github.com/hapijs/eslint-plugin/issues/14" - } - ], - "number": 7, - "url": "https://github.com/hapijs/eslint-plugin/milestone/7", - "version": "4.3.5" - }, - { - "date": "2019-08-07T20:19:01Z", - "id": 4252548, - "issues": [ - { - "id": 461411598, - "labels": ["dependency"], - "number": 11, - "title": "eslint 6 support", - "url": "https://github.com/hapijs/eslint-plugin/issues/11" - } - ], - "number": 6, - "url": "https://github.com/hapijs/eslint-plugin/milestone/6", - "version": "4.3.4" - }, - { - "date": "2019-04-23T16:20:53Z", - "id": 4250616, - "issues": [ - { - "id": 436277387, - "labels": ["bug"], + "url": "https://github.com/hapijs/eslint-plugin/milestone/14", + "version": "7.0.0" + }, + { + "date": "2024-10-22T13:42:03Z", + "id": 7948982, + "issues": [ + { + "id": 1227388957, + "labels": ["dependency", "breaking changes"], + "number": 31, + "title": "Drop support for node v12, support node v18, upgrade eslint", + "url": "https://github.com/hapijs/eslint-plugin/pull/31" + } + ], + "number": 12, + "url": "https://github.com/hapijs/eslint-plugin/milestone/12", + "version": "6.0.0" + }, + { + "date": "2021-05-21T17:30:07Z", + "id": 5877327, + "issues": [ + { + "id": 854765946, + "labels": ["feature"], + "number": 27, + "title": "Migrate lab internal eslint config", + "url": "https://github.com/hapijs/eslint-plugin/pull/27" + }, + { + "id": 854757204, + "labels": ["dependency"], + "number": 26, + "title": "Update to @babel/eslint-parser", + "url": "https://github.com/hapijs/eslint-plugin/issues/26" + }, + { + "id": 709600547, + "labels": [], + "number": 24, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/eslint-plugin/pull/24" + } + ], "number": 10, - "title": "Fix names", - "url": "https://github.com/hapijs/eslint-plugin/issues/10" - } - ], - "number": 5, - "url": "https://github.com/hapijs/eslint-plugin/milestone/5", - "version": "4.3.3" - }, - { - "date": "2019-04-23T07:02:53Z", - "id": 4250614, - "issues": [ - { - "id": 436026095, - "labels": ["dependency"], + "url": "https://github.com/hapijs/eslint-plugin/milestone/10", + "version": "5.1.0" + }, + { + "date": "2020-09-15T00:06:00Z", + "id": 5871699, + "issues": [ + { + "id": 691106119, + "labels": [], + "number": 23, + "title": "Rename to eslint-plugin", + "url": "https://github.com/hapijs/eslint-plugin/pull/23" + }, + { + "id": 671888227, + "labels": ["feature", "breaking changes"], + "number": 21, + "title": "Change package name to @hapi/eslint-plugin", + "url": "https://github.com/hapijs/eslint-plugin/issues/21" + } + ], "number": 9, - "title": "Change module namespace", - "url": "https://github.com/hapijs/eslint-plugin/issues/9" - } - ], - "number": 4, - "url": "https://github.com/hapijs/eslint-plugin/milestone/4", - "version": "4.2.0" - }, - { - "date": "2015-11-04T18:29:10Z", - "id": 1394118, - "issues": [ - { - "id": 114968819, - "labels": ["feature"], + "url": "https://github.com/hapijs/eslint-plugin/milestone/9", + "version": "5.0.0" + }, + { + "date": "2020-09-13T14:51:39Z", + "id": 4973281, + "issues": [ + { + "id": 682756105, + "labels": ["feature"], + "number": 22, + "title": "Update rules for modern eslint", + "url": "https://github.com/hapijs/eslint-plugin/pull/22" + }, + { + "id": 668201273, + "labels": ["feature"], + "number": 20, + "title": "Merge eslint-config-hapi and rules", + "url": "https://github.com/hapijs/eslint-plugin/pull/20" + }, + { + "id": 664135479, + "labels": [], + "number": 19, + "title": "update to travis templates and test on node 14", + "url": "https://github.com/hapijs/eslint-plugin/pull/19" + }, + { + "id": 600173238, + "labels": ["documentation"], + "number": 17, + "title": "Create API.md", + "url": "https://github.com/hapijs/eslint-plugin/pull/17" + }, + { + "id": 600095950, + "labels": ["documentation"], + "number": 16, + "title": "Update README.md", + "url": "https://github.com/hapijs/eslint-plugin/pull/16" + }, + { + "id": 568615186, + "labels": ["documentation"], + "number": 15, + "title": "fix(package.json): repository url", + "url": "https://github.com/hapijs/eslint-plugin/pull/15" + } + ], + "number": 8, + "url": "https://github.com/hapijs/eslint-plugin/milestone/8", + "version": "4.3.6" + }, + { + "date": "2020-01-05T01:14:59Z", + "id": 4556488, + "issues": [ + { + "id": 545352963, + "labels": ["non issue"], + "number": 14, + "title": "Cleanup", + "url": "https://github.com/hapijs/eslint-plugin/issues/14" + } + ], + "number": 7, + "url": "https://github.com/hapijs/eslint-plugin/milestone/7", + "version": "4.3.5" + }, + { + "date": "2019-08-07T20:19:01Z", + "id": 4252548, + "issues": [ + { + "id": 461411598, + "labels": ["dependency"], + "number": 11, + "title": "eslint 6 support", + "url": "https://github.com/hapijs/eslint-plugin/issues/11" + } + ], "number": 6, - "title": "Remove no-shadow-relaxed", - "url": "https://github.com/hapijs/eslint-plugin/issues/6" - } - ], - "number": 3, - "url": "https://github.com/hapijs/eslint-plugin/milestone/3", - "version": "3.0.0" - }, - { - "date": "2015-10-30T20:35:59Z", - "id": 1374682, - "issues": [ - { - "id": 114350803, - "labels": ["feature"], + "url": "https://github.com/hapijs/eslint-plugin/milestone/6", + "version": "4.3.4" + }, + { + "date": "2019-04-23T16:20:53Z", + "id": 4250616, + "issues": [ + { + "id": 436277387, + "labels": ["bug"], + "number": 10, + "title": "Fix names", + "url": "https://github.com/hapijs/eslint-plugin/issues/10" + } + ], "number": 5, - "title": "Add rule no-arrowception", - "url": "https://github.com/hapijs/eslint-plugin/issues/5" - }, - { - "id": 113204822, - "labels": ["feature"], + "url": "https://github.com/hapijs/eslint-plugin/milestone/5", + "version": "4.3.3" + }, + { + "date": "2019-04-23T07:02:53Z", + "id": 4250614, + "issues": [ + { + "id": 436026095, + "labels": ["dependency"], + "number": 9, + "title": "Change module namespace", + "url": "https://github.com/hapijs/eslint-plugin/issues/9" + } + ], "number": 4, - "title": "Update to hapi-scope-start@2.0.0", - "url": "https://github.com/hapijs/eslint-plugin/issues/4" - } - ], - "number": 2, - "url": "https://github.com/hapijs/eslint-plugin/milestone/2", - "version": "v2.0.0" - }, - { - "date": "2015-06-25T14:52:50Z", - "id": 1181152, - "issues": [ - { - "id": 90983200, - "labels": ["feature"], + "url": "https://github.com/hapijs/eslint-plugin/milestone/4", + "version": "4.2.0" + }, + { + "date": "2015-11-04T18:29:10Z", + "id": 1394118, + "issues": [ + { + "id": 114968819, + "labels": ["feature"], + "number": 6, + "title": "Remove no-shadow-relaxed", + "url": "https://github.com/hapijs/eslint-plugin/issues/6" + } + ], "number": 3, - "title": "Add no-shadow-relaxed rule to plugin", - "url": "https://github.com/hapijs/eslint-plugin/pull/3" - } - ], - "number": 1, - "url": "https://github.com/hapijs/eslint-plugin/milestone/1", - "version": "v1.2.0" - } + "url": "https://github.com/hapijs/eslint-plugin/milestone/3", + "version": "3.0.0" + }, + { + "date": "2015-10-30T20:35:59Z", + "id": 1374682, + "issues": [ + { + "id": 114350803, + "labels": ["feature"], + "number": 5, + "title": "Add rule no-arrowception", + "url": "https://github.com/hapijs/eslint-plugin/issues/5" + }, + { + "id": 113204822, + "labels": ["feature"], + "number": 4, + "title": "Update to hapi-scope-start@2.0.0", + "url": "https://github.com/hapijs/eslint-plugin/issues/4" + } + ], + "number": 2, + "url": "https://github.com/hapijs/eslint-plugin/milestone/2", + "version": "v2.0.0" + }, + { + "date": "2015-06-25T14:52:50Z", + "id": 1181152, + "issues": [ + { + "id": 90983200, + "labels": ["feature"], + "number": 3, + "title": "Add no-shadow-relaxed rule to plugin", + "url": "https://github.com/hapijs/eslint-plugin/pull/3" + } + ], + "number": 1, + "url": "https://github.com/hapijs/eslint-plugin/milestone/1", + "version": "v1.2.0" + } ] diff --git a/generated/modules/eslint-plugin/info.json b/generated/modules/eslint-plugin/info.json index f99f2a22..efcfcc44 100644 --- a/generated/modules/eslint-plugin/info.json +++ b/generated/modules/eslint-plugin/info.json @@ -1,28 +1,28 @@ { - "api": true, - "forks": 10, - "isPlugin": false, - "link": "https://github.com/hapijs/eslint-plugin", - "name": "eslint-plugin", - "package": "@hapi/eslint-plugin", - "slogan": "ESLint plugin containing hapi style guide rules and config.", - "sloganHtml": "ESLint plugin containing hapi style guide rules and config.", - "stars": 22, - "updated": "2026-04-01T09:41:45Z", - "versions": [ - { - "branch": "v6.0.0", - "license": "BSD", - "name": "6.0.0", - "node": ">= 16" - }, - { - "branch": "v7.0.0", - "license": "BSD", - "name": "7.0.0", - "node": ">= 16" - } - ], - "versionsArray": ["7.0.0", "6.0.0"], - "latestVersion": "7.x.x" + "api": true, + "forks": 10, + "isPlugin": false, + "latestVersion": "7.x.x", + "link": "https://github.com/hapijs/eslint-plugin", + "name": "eslint-plugin", + "package": "@hapi/eslint-plugin", + "slogan": "ESLint plugin containing hapi style guide rules and config.", + "sloganHtml": "ESLint plugin containing hapi style guide rules and config.", + "stars": 22, + "updated": "2026-04-01T09:41:45Z", + "versions": [ + { + "branch": "v6.0.0", + "license": "BSD", + "name": "6.0.0", + "node": ">= 16" + }, + { + "branch": "v7.0.0", + "license": "BSD", + "name": "7.0.0", + "node": ">= 16" + } + ], + "versionsArray": ["7.0.0", "6.0.0"] } diff --git a/generated/modules/file/changelog.json b/generated/modules/file/changelog.json index 05b0e769..945fb8a7 100644 --- a/generated/modules/file/changelog.json +++ b/generated/modules/file/changelog.json @@ -1,34 +1,34 @@ [ - { - "date": "2022-05-30T23:07:31Z", - "id": 8031809, - "issues": [ - { - "id": 1253158712, - "labels": ["dependency", "breaking changes"], - "number": 14, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/file/pull/14" - } - ], - "number": 3, - "url": "https://github.com/hapijs/file/milestone/3", - "version": "3.0.0" - }, - { - "date": "2020-01-05T05:01:42Z", - "id": 4973380, - "issues": [ - { - "id": 545370374, - "labels": ["dependency", "breaking changes"], - "number": 4, - "title": "Only node 12", - "url": "https://github.com/hapijs/file/issues/4" - } - ], - "number": 1, - "url": "https://github.com/hapijs/file/milestone/1", - "version": "2.0.0" - } + { + "date": "2022-05-30T23:07:31Z", + "id": 8031809, + "issues": [ + { + "id": 1253158712, + "labels": ["dependency", "breaking changes"], + "number": 14, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/file/pull/14" + } + ], + "number": 3, + "url": "https://github.com/hapijs/file/milestone/3", + "version": "3.0.0" + }, + { + "date": "2020-01-05T05:01:42Z", + "id": 4973380, + "issues": [ + { + "id": 545370374, + "labels": ["dependency", "breaking changes"], + "number": 4, + "title": "Only node 12", + "url": "https://github.com/hapijs/file/issues/4" + } + ], + "number": 1, + "url": "https://github.com/hapijs/file/milestone/1", + "version": "2.0.0" + } ] diff --git a/generated/modules/file/info.json b/generated/modules/file/info.json index a876c6fd..3af7b678 100644 --- a/generated/modules/file/info.json +++ b/generated/modules/file/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 6, - "isPlugin": false, - "link": "https://github.com/hapijs/file", - "name": "file", - "package": "@hapi/file", - "slogan": "General purpose file utilities.", - "sloganHtml": "General purpose file utilities.", - "stars": 5, - "updated": "2022-05-30T23:06:24Z", - "versions": [ - { - "branch": "v3.0.0", - "license": "BSD", - "name": "3.0.0", - "node": ">= 16" - } - ], - "versionsArray": ["3.0.0"], - "latestVersion": "3.x.x" + "api": true, + "forks": 6, + "isPlugin": false, + "latestVersion": "3.x.x", + "link": "https://github.com/hapijs/file", + "name": "file", + "package": "@hapi/file", + "slogan": "General purpose file utilities.", + "sloganHtml": "General purpose file utilities.", + "stars": 5, + "updated": "2022-05-30T23:06:24Z", + "versions": [ + { + "branch": "v3.0.0", + "license": "BSD", + "name": "3.0.0", + "node": ">= 16" + } + ], + "versionsArray": ["3.0.0"] } diff --git a/generated/modules/glue/changelog.json b/generated/modules/glue/changelog.json index e833b2c4..662174fd 100644 --- a/generated/modules/glue/changelog.json +++ b/generated/modules/glue/changelog.json @@ -1,591 +1,591 @@ [ - { - "date": "2023-02-11T20:18:12Z", - "id": 8594992, - "issues": [ - { - "id": 1551795006, - "labels": ["dependency"], - "number": 149, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/glue/pull/149" - } - ], - "number": 29, - "url": "https://github.com/hapijs/glue/milestone/29", - "version": "9.0.1" - }, - { - "date": "2022-10-29T20:20:06Z", - "id": 8572514, - "issues": [ - { - "id": 1420172569, - "labels": ["feature", "breaking changes", "test", "dependency"], - "number": 148, - "title": "Support for node v18 and hapi v21, ESM support", - "url": "https://github.com/hapijs/glue/pull/148" - } - ], - "number": 28, - "url": "https://github.com/hapijs/glue/milestone/28", - "version": "9.0.0" - }, - { - "date": "2020-08-13T22:48:26Z", - "id": 5771137, - "issues": [ - { - "id": 678545802, - "labels": ["breaking changes", "dependency"], - "number": 142, - "title": "fix: 🐛 bump hapi 20 dependency", - "url": "https://github.com/hapijs/glue/pull/142" - } - ], - "number": 26, - "url": "https://github.com/hapijs/glue/milestone/26", - "version": "8.0.0" - }, - { - "date": "2020-01-12T04:47:15Z", - "id": 4996991, - "issues": [ - { - "id": 548520298, - "labels": ["breaking changes", "dependency"], - "number": 138, - "title": "Only node 12", - "url": "https://github.com/hapijs/glue/issues/138" - } - ], - "number": 25, - "url": "https://github.com/hapijs/glue/milestone/25", - "version": "7.0.0" - }, - { - "date": "2019-09-12T22:29:28Z", - "id": 4574281, - "issues": [ - { - "id": 493021659, - "labels": ["dependency"], - "number": 133, - "title": "Update joi", - "url": "https://github.com/hapijs/glue/issues/133" - }, - { - "id": 445878608, - "labels": ["bug"], - "number": 129, - "title": "#128 Add support for constructor property and additional options in server cache configuration", - "url": "https://github.com/hapijs/glue/pull/129" - }, - { - "id": 444370966, - "labels": ["bug"], - "number": 128, - "title": "Server cache options in hapi 18 cannot be passed", - "url": "https://github.com/hapijs/glue/issues/128" - } - ], - "number": 23, - "url": "https://github.com/hapijs/glue/milestone/23", - "version": "6.2.0" - }, - { - "date": "2019-08-14T22:32:56Z", - "id": 4227478, - "issues": [ - { - "id": 480888926, - "labels": ["dependency"], - "number": 132, - "title": "Update deps", - "url": "https://github.com/hapijs/glue/issues/132" - } - ], - "number": 20, - "url": "https://github.com/hapijs/glue/milestone/20", - "version": "6.1.1" - }, - { - "date": "2019-04-14T00:17:39Z", - "id": 3992812, - "issues": [ - { - "id": 432915838, - "labels": ["dependency"], - "number": 126, - "title": "Change module namespace", - "url": "https://github.com/hapijs/glue/issues/126" - } - ], - "number": 19, - "url": "https://github.com/hapijs/glue/milestone/19", - "version": "6.1.0" - }, - { - "date": "2019-01-22T14:06:45Z", - "id": 2889010, - "issues": [ - { - "id": 401038489, - "labels": ["breaking changes"], - "number": 124, - "title": "Updates to hapi 18; refactors cache.engine to cache.provider", - "url": "https://github.com/hapijs/glue/pull/124" - }, - { - "id": 389885653, - "labels": [], - "number": 121, - "title": "Updating package dependencies.", - "url": "https://github.com/hapijs/glue/pull/121" - } - ], - "number": 18, - "url": "https://github.com/hapijs/glue/milestone/18", - "version": "6.0.0" - }, - { - "date": "2019-04-16T05:03:21Z", - "id": 4233278, - "issues": [ - { - "id": 433573424, - "labels": ["dependency", "lts"], - "number": 127, - "title": "Change module namespace for v5 branch", - "url": "https://github.com/hapijs/glue/issues/127" - } - ], - "number": 21, - "url": "https://github.com/hapijs/glue/milestone/21", - "version": "5.1.0" - }, - { - "date": "2017-11-06T00:14:32Z", - "id": 2856196, - "issues": [ - { - "id": 267394265, - "labels": ["breaking changes"], - "number": 104, - "title": "Update to hapi v17.", - "url": "https://github.com/hapijs/glue/pull/104" - }, - { - "id": 267269084, - "labels": ["breaking changes", "dependency"], - "number": 102, - "title": "Hapi 17", - "url": "https://github.com/hapijs/glue/issues/102" - } - ], - "number": 17, - "url": "https://github.com/hapijs/glue/milestone/17", - "version": "5.0.0" - }, - { - "date": "2017-10-28T22:57:30Z", - "id": 2666802, - "issues": [ - { - "id": 246030073, - "labels": ["bug"], - "number": 98, - "title": "Promises aren't quite right", - "url": "https://github.com/hapijs/glue/issues/98" - } - ], - "number": 16, - "url": "https://github.com/hapijs/glue/milestone/16", - "version": "4.2.1" - }, - { - "date": "2017-07-28T05:56:49Z", - "id": 2213076, - "issues": [ - { - "id": 219925924, - "labels": [], - "number": 95, - "title": "This is for issue #89", - "url": "https://github.com/hapijs/glue/pull/95" - }, - { - "id": 202240519, - "labels": ["feature"], - "number": 89, - "title": "Plugin as function", - "url": "https://github.com/hapijs/glue/issues/89" - } - ], - "number": 15, - "url": "https://github.com/hapijs/glue/milestone/15", - "version": "4.2.0" - }, - { - "date": "2016-12-23T05:23:13Z", - "id": 1967440, - "issues": [ - { - "id": 193795323, - "labels": ["dependency"], - "number": 85, - "title": "Hapi v16", - "url": "https://github.com/hapijs/glue/pull/85" - }, - { - "id": 193604967, - "labels": ["bug"], - "number": 84, - "title": "Refactors Joi.array() to utilize .items()", - "url": "https://github.com/hapijs/glue/pull/84" - }, - { - "id": 193604271, - "labels": ["bug", "dependency"], - "number": 83, - "title": "Joi.array() does not accept arguments", - "url": "https://github.com/hapijs/glue/issues/83" - }, - { - "id": 193311479, - "labels": ["dependency"], - "number": 82, - "title": "Add Hapi 16 support", - "url": "https://github.com/hapijs/glue/issues/82" - } - ], - "number": 14, - "url": "https://github.com/hapijs/glue/milestone/14", - "version": "4.1.0" - }, - { - "date": "2016-08-27T20:24:40Z", - "id": 1947831, - "issues": [ - { - "id": 173613823, - "labels": ["dependency"], - "number": 74, - "title": "Support hapi 15", - "url": "https://github.com/hapijs/glue/issues/74" - }, - { - "id": 169558759, - "labels": ["bug", "breaking changes"], - "number": 72, - "title": "Make compose callback always execute async", - "url": "https://github.com/hapijs/glue/issues/72" - } - ], - "number": 13, - "url": "https://github.com/hapijs/glue/milestone/13", - "version": "4.0.0" - }, - { - "date": "2016-08-17T16:38:35Z", - "id": 1808492, - "issues": [ - { - "id": 170868931, - "labels": ["dependency"], - "number": 73, - "title": "Add Hapi 14.x.x to dependencies", - "url": "https://github.com/hapijs/glue/issues/73" - }, - { - "id": 166959246, - "labels": ["bug"], - "number": 71, - "title": "using Hoek.clone makes some plugins stop working", - "url": "https://github.com/hapijs/glue/issues/71" - } - ], - "number": 12, - "url": "https://github.com/hapijs/glue/milestone/12", - "version": "3.4.0" - }, - { - "date": "2016-06-04T15:48:15Z", - "id": 1779016, - "issues": [ - { - "id": 139138185, - "labels": ["feature"], - "number": 64, - "title": "add plugin-specific registration options to schema", - "url": "https://github.com/hapijs/glue/pull/64" - } - ], - "number": 11, - "url": "https://github.com/hapijs/glue/milestone/11", - "version": "3.3.0" - }, - { - "date": "2016-05-20T15:08:17Z", - "id": 1779012, - "issues": [ - { - "id": 155619323, - "labels": ["dependency"], - "number": 68, - "title": "Test on node v6, update dependencies", - "url": "https://github.com/hapijs/glue/pull/68" - } - ], - "number": 10, - "url": "https://github.com/hapijs/glue/milestone/10", - "version": "3.2.1" - }, - { - "date": "2016-05-20T15:07:13Z", - "id": 1508333, - "issues": [ - { - "id": 131194333, - "labels": ["dependency"], - "number": 62, - "title": "Support hapi 13", - "url": "https://github.com/hapijs/glue/pull/62" - } - ], - "number": 9, - "url": "https://github.com/hapijs/glue/milestone/9", - "version": "3.2.0" - }, - { - "date": "2016-01-15T06:05:54Z", - "id": 1476050, - "issues": [ - { - "id": 126328403, - "labels": ["dependency"], - "number": 57, - "title": "Remove boom dependency", - "url": "https://github.com/hapijs/glue/pull/57" - }, - { - "id": 125527429, - "labels": ["feature"], - "number": 54, - "title": "compose() returns a Promise if no callback is provided", - "url": "https://github.com/hapijs/glue/pull/54" - }, - { - "id": 125383711, - "labels": ["dependency"], - "number": 53, - "title": "Support hapi v12", - "url": "https://github.com/hapijs/glue/pull/53" - }, - { - "id": 124937357, - "labels": ["feature"], - "number": 52, - "title": "Support promises", - "url": "https://github.com/hapijs/glue/issues/52" - } - ], - "number": 8, - "url": "https://github.com/hapijs/glue/milestone/8", - "version": "3.1.0" - }, - { - "date": "2015-12-28T16:30:17Z", - "id": 1312106, - "issues": [ - { - "id": 123035280, - "labels": ["support"], - "number": 47, - "title": "when is glue 3.x going to be completed?", - "url": "https://github.com/hapijs/glue/issues/47" - }, - { - "id": 120985934, - "labels": ["bug"], - "number": 44, - "title": "Don't force object for plugin options", - "url": "https://github.com/hapijs/glue/pull/44" - }, - { - "id": 115938263, - "labels": ["breaking changes"], - "number": 42, - "title": "update to es6 based hapi style guide and lab 7 + Dependencies update", - "url": "https://github.com/hapijs/glue/pull/42" - }, - { - "id": 115781082, - "labels": ["breaking changes"], - "number": 41, - "title": "update to es6 based hapi style guide and lab 7", - "url": "https://github.com/hapijs/glue/issues/41" - }, - { - "id": 115548888, - "labels": ["documentation"], - "number": 40, - "title": "Breaking changes on 2.3.0 and 2.4.0", - "url": "https://github.com/hapijs/glue/issues/40" - }, - { - "id": 105589262, - "labels": ["feature", "breaking changes"], - "number": 31, - "title": "Prefix is passed only when plugin in manifest is an array", - "url": "https://github.com/hapijs/glue/issues/31" - } - ], - "number": 7, - "url": "https://github.com/hapijs/glue/milestone/7", - "version": "3.0.0" - }, - { - "date": "2015-09-14T15:29:23Z", - "id": 1261348, - "issues": [ - { - "id": 106178743, - "labels": ["dependency"], - "number": 32, - "title": "Support Hapi 10", - "url": "https://github.com/hapijs/glue/pull/32" - } - ], - "number": 5, - "url": "https://github.com/hapijs/glue/milestone/5", - "version": "2.3.0" - }, - { - "date": "2015-08-18T20:08:36Z", - "id": 1224918, - "issues": [ - { - "id": 99787239, - "labels": ["documentation"], + { + "date": "2023-02-11T20:18:12Z", + "id": 8594992, + "issues": [ + { + "id": 1551795006, + "labels": ["dependency"], + "number": 149, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/glue/pull/149" + } + ], + "number": 29, + "url": "https://github.com/hapijs/glue/milestone/29", + "version": "9.0.1" + }, + { + "date": "2022-10-29T20:20:06Z", + "id": 8572514, + "issues": [ + { + "id": 1420172569, + "labels": ["feature", "breaking changes", "test", "dependency"], + "number": 148, + "title": "Support for node v18 and hapi v21, ESM support", + "url": "https://github.com/hapijs/glue/pull/148" + } + ], "number": 28, - "title": "README: Use the svg Travis image", - "url": "https://github.com/hapijs/glue/pull/28" - }, - { - "id": 96382322, - "labels": ["documentation"], + "url": "https://github.com/hapijs/glue/milestone/28", + "version": "9.0.0" + }, + { + "date": "2020-08-13T22:48:26Z", + "id": 5771137, + "issues": [ + { + "id": 678545802, + "labels": ["breaking changes", "dependency"], + "number": 142, + "title": "fix: 🐛 bump hapi 20 dependency", + "url": "https://github.com/hapijs/glue/pull/142" + } + ], "number": 26, - "title": "Fix typos in docs", - "url": "https://github.com/hapijs/glue/pull/26" - } - ], - "number": 4, - "url": "https://github.com/hapijs/glue/milestone/4", - "version": "2.2.0" - }, - { - "date": "2015-07-24T21:55:42Z", - "id": 1169461, - "issues": [ - { - "id": 94192802, - "labels": ["test"], + "url": "https://github.com/hapijs/glue/milestone/26", + "version": "8.0.0" + }, + { + "date": "2020-01-12T04:47:15Z", + "id": 4996991, + "issues": [ + { + "id": 548520298, + "labels": ["breaking changes", "dependency"], + "number": 138, + "title": "Only node 12", + "url": "https://github.com/hapijs/glue/issues/138" + } + ], "number": 25, - "title": "Linting update", - "url": "https://github.com/hapijs/glue/pull/25" - } - ], - "number": 3, - "url": "https://github.com/hapijs/glue/milestone/3", - "version": "2.1.1" - }, - { - "date": "2015-06-17T23:14:07Z", - "id": 1002610, - "issues": [ - { - "id": 88855576, - "labels": ["documentation"], - "number": 22, - "title": "Add usage section to README file.", - "url": "https://github.com/hapijs/glue/pull/22" - }, - { - "id": 82811395, - "labels": ["feature"], + "url": "https://github.com/hapijs/glue/milestone/25", + "version": "7.0.0" + }, + { + "date": "2019-09-12T22:29:28Z", + "id": 4574281, + "issues": [ + { + "id": 493021659, + "labels": ["dependency"], + "number": 133, + "title": "Update joi", + "url": "https://github.com/hapijs/glue/issues/133" + }, + { + "id": 445878608, + "labels": ["bug"], + "number": 129, + "title": "#128 Add support for constructor property and additional options in server cache configuration", + "url": "https://github.com/hapijs/glue/pull/129" + }, + { + "id": 444370966, + "labels": ["bug"], + "number": 128, + "title": "Server cache options in hapi 18 cannot be passed", + "url": "https://github.com/hapijs/glue/issues/128" + } + ], + "number": 23, + "url": "https://github.com/hapijs/glue/milestone/23", + "version": "6.2.0" + }, + { + "date": "2019-08-14T22:32:56Z", + "id": 4227478, + "issues": [ + { + "id": 480888926, + "labels": ["dependency"], + "number": 132, + "title": "Update deps", + "url": "https://github.com/hapijs/glue/issues/132" + } + ], "number": 20, - "title": "Added ability to pass array of plugins", - "url": "https://github.com/hapijs/glue/pull/20" - } - ], - "number": 2, - "url": "https://github.com/hapijs/glue/milestone/2", - "version": "2.1.0" - }, - { - "date": "2015-03-02T19:47:30Z", - "id": 871879, - "issues": [ - { - "id": 51511826, - "labels": ["dependency"], + "url": "https://github.com/hapijs/glue/milestone/20", + "version": "6.1.1" + }, + { + "date": "2019-04-14T00:17:39Z", + "id": 3992812, + "issues": [ + { + "id": 432915838, + "labels": ["dependency"], + "number": 126, + "title": "Change module namespace", + "url": "https://github.com/hapijs/glue/issues/126" + } + ], + "number": 19, + "url": "https://github.com/hapijs/glue/milestone/19", + "version": "6.1.0" + }, + { + "date": "2019-01-22T14:06:45Z", + "id": 2889010, + "issues": [ + { + "id": 401038489, + "labels": ["breaking changes"], + "number": 124, + "title": "Updates to hapi 18; refactors cache.engine to cache.provider", + "url": "https://github.com/hapijs/glue/pull/124" + }, + { + "id": 389885653, + "labels": [], + "number": 121, + "title": "Updating package dependencies.", + "url": "https://github.com/hapijs/glue/pull/121" + } + ], + "number": 18, + "url": "https://github.com/hapijs/glue/milestone/18", + "version": "6.0.0" + }, + { + "date": "2019-04-16T05:03:21Z", + "id": 4233278, + "issues": [ + { + "id": 433573424, + "labels": ["dependency", "lts"], + "number": 127, + "title": "Change module namespace for v5 branch", + "url": "https://github.com/hapijs/glue/issues/127" + } + ], + "number": 21, + "url": "https://github.com/hapijs/glue/milestone/21", + "version": "5.1.0" + }, + { + "date": "2017-11-06T00:14:32Z", + "id": 2856196, + "issues": [ + { + "id": 267394265, + "labels": ["breaking changes"], + "number": 104, + "title": "Update to hapi v17.", + "url": "https://github.com/hapijs/glue/pull/104" + }, + { + "id": 267269084, + "labels": ["breaking changes", "dependency"], + "number": 102, + "title": "Hapi 17", + "url": "https://github.com/hapijs/glue/issues/102" + } + ], + "number": 17, + "url": "https://github.com/hapijs/glue/milestone/17", + "version": "5.0.0" + }, + { + "date": "2017-10-28T22:57:30Z", + "id": 2666802, + "issues": [ + { + "id": 246030073, + "labels": ["bug"], + "number": 98, + "title": "Promises aren't quite right", + "url": "https://github.com/hapijs/glue/issues/98" + } + ], + "number": 16, + "url": "https://github.com/hapijs/glue/milestone/16", + "version": "4.2.1" + }, + { + "date": "2017-07-28T05:56:49Z", + "id": 2213076, + "issues": [ + { + "id": 219925924, + "labels": [], + "number": 95, + "title": "This is for issue #89", + "url": "https://github.com/hapijs/glue/pull/95" + }, + { + "id": 202240519, + "labels": ["feature"], + "number": 89, + "title": "Plugin as function", + "url": "https://github.com/hapijs/glue/issues/89" + } + ], + "number": 15, + "url": "https://github.com/hapijs/glue/milestone/15", + "version": "4.2.0" + }, + { + "date": "2016-12-23T05:23:13Z", + "id": 1967440, + "issues": [ + { + "id": 193795323, + "labels": ["dependency"], + "number": 85, + "title": "Hapi v16", + "url": "https://github.com/hapijs/glue/pull/85" + }, + { + "id": 193604967, + "labels": ["bug"], + "number": 84, + "title": "Refactors Joi.array() to utilize .items()", + "url": "https://github.com/hapijs/glue/pull/84" + }, + { + "id": 193604271, + "labels": ["bug", "dependency"], + "number": 83, + "title": "Joi.array() does not accept arguments", + "url": "https://github.com/hapijs/glue/issues/83" + }, + { + "id": 193311479, + "labels": ["dependency"], + "number": 82, + "title": "Add Hapi 16 support", + "url": "https://github.com/hapijs/glue/issues/82" + } + ], + "number": 14, + "url": "https://github.com/hapijs/glue/milestone/14", + "version": "4.1.0" + }, + { + "date": "2016-08-27T20:24:40Z", + "id": 1947831, + "issues": [ + { + "id": 173613823, + "labels": ["dependency"], + "number": 74, + "title": "Support hapi 15", + "url": "https://github.com/hapijs/glue/issues/74" + }, + { + "id": 169558759, + "labels": ["bug", "breaking changes"], + "number": 72, + "title": "Make compose callback always execute async", + "url": "https://github.com/hapijs/glue/issues/72" + } + ], + "number": 13, + "url": "https://github.com/hapijs/glue/milestone/13", + "version": "4.0.0" + }, + { + "date": "2016-08-17T16:38:35Z", + "id": 1808492, + "issues": [ + { + "id": 170868931, + "labels": ["dependency"], + "number": 73, + "title": "Add Hapi 14.x.x to dependencies", + "url": "https://github.com/hapijs/glue/issues/73" + }, + { + "id": 166959246, + "labels": ["bug"], + "number": 71, + "title": "using Hoek.clone makes some plugins stop working", + "url": "https://github.com/hapijs/glue/issues/71" + } + ], + "number": 12, + "url": "https://github.com/hapijs/glue/milestone/12", + "version": "3.4.0" + }, + { + "date": "2016-06-04T15:48:15Z", + "id": 1779016, + "issues": [ + { + "id": 139138185, + "labels": ["feature"], + "number": 64, + "title": "add plugin-specific registration options to schema", + "url": "https://github.com/hapijs/glue/pull/64" + } + ], + "number": 11, + "url": "https://github.com/hapijs/glue/milestone/11", + "version": "3.3.0" + }, + { + "date": "2016-05-20T15:08:17Z", + "id": 1779012, + "issues": [ + { + "id": 155619323, + "labels": ["dependency"], + "number": 68, + "title": "Test on node v6, update dependencies", + "url": "https://github.com/hapijs/glue/pull/68" + } + ], + "number": 10, + "url": "https://github.com/hapijs/glue/milestone/10", + "version": "3.2.1" + }, + { + "date": "2016-05-20T15:07:13Z", + "id": 1508333, + "issues": [ + { + "id": 131194333, + "labels": ["dependency"], + "number": 62, + "title": "Support hapi 13", + "url": "https://github.com/hapijs/glue/pull/62" + } + ], + "number": 9, + "url": "https://github.com/hapijs/glue/milestone/9", + "version": "3.2.0" + }, + { + "date": "2016-01-15T06:05:54Z", + "id": 1476050, + "issues": [ + { + "id": 126328403, + "labels": ["dependency"], + "number": 57, + "title": "Remove boom dependency", + "url": "https://github.com/hapijs/glue/pull/57" + }, + { + "id": 125527429, + "labels": ["feature"], + "number": 54, + "title": "compose() returns a Promise if no callback is provided", + "url": "https://github.com/hapijs/glue/pull/54" + }, + { + "id": 125383711, + "labels": ["dependency"], + "number": 53, + "title": "Support hapi v12", + "url": "https://github.com/hapijs/glue/pull/53" + }, + { + "id": 124937357, + "labels": ["feature"], + "number": 52, + "title": "Support promises", + "url": "https://github.com/hapijs/glue/issues/52" + } + ], "number": 8, - "title": "Update Hapi dependency", - "url": "https://github.com/hapijs/glue/pull/8" - }, - { - "id": 51494532, - "labels": ["dependency"], + "url": "https://github.com/hapijs/glue/milestone/8", + "version": "3.1.0" + }, + { + "date": "2015-12-28T16:30:17Z", + "id": 1312106, + "issues": [ + { + "id": 123035280, + "labels": ["support"], + "number": 47, + "title": "when is glue 3.x going to be completed?", + "url": "https://github.com/hapijs/glue/issues/47" + }, + { + "id": 120985934, + "labels": ["bug"], + "number": 44, + "title": "Don't force object for plugin options", + "url": "https://github.com/hapijs/glue/pull/44" + }, + { + "id": 115938263, + "labels": ["breaking changes"], + "number": 42, + "title": "update to es6 based hapi style guide and lab 7 + Dependencies update", + "url": "https://github.com/hapijs/glue/pull/42" + }, + { + "id": 115781082, + "labels": ["breaking changes"], + "number": 41, + "title": "update to es6 based hapi style guide and lab 7", + "url": "https://github.com/hapijs/glue/issues/41" + }, + { + "id": 115548888, + "labels": ["documentation"], + "number": 40, + "title": "Breaking changes on 2.3.0 and 2.4.0", + "url": "https://github.com/hapijs/glue/issues/40" + }, + { + "id": 105589262, + "labels": ["feature", "breaking changes"], + "number": 31, + "title": "Prefix is passed only when plugin in manifest is an array", + "url": "https://github.com/hapijs/glue/issues/31" + } + ], "number": 7, - "title": "Publish 2.0.0", - "url": "https://github.com/hapijs/glue/issues/7" - }, - { - "id": 50865211, - "labels": ["test"], - "number": 6, - "title": "revamp test code to only test functionality relevant to glue", - "url": "https://github.com/hapijs/glue/issues/6" - }, - { - "id": 50864989, - "labels": ["feature", "documentation"], + "url": "https://github.com/hapijs/glue/milestone/7", + "version": "3.0.0" + }, + { + "date": "2015-09-14T15:29:23Z", + "id": 1261348, + "issues": [ + { + "id": 106178743, + "labels": ["dependency"], + "number": 32, + "title": "Support Hapi 10", + "url": "https://github.com/hapijs/glue/pull/32" + } + ], "number": 5, - "title": "Improve validation and documentation of manifest plugins entry", - "url": "https://github.com/hapijs/glue/issues/5" - }, - { - "id": 50772012, - "labels": ["dependency"], + "url": "https://github.com/hapijs/glue/milestone/5", + "version": "2.3.0" + }, + { + "date": "2015-08-18T20:08:36Z", + "id": 1224918, + "issues": [ + { + "id": 99787239, + "labels": ["documentation"], + "number": 28, + "title": "README: Use the svg Travis image", + "url": "https://github.com/hapijs/glue/pull/28" + }, + { + "id": 96382322, + "labels": ["documentation"], + "number": 26, + "title": "Fix typos in docs", + "url": "https://github.com/hapijs/glue/pull/26" + } + ], "number": 4, - "title": "Update to hapi@8.0.0-rc7", - "url": "https://github.com/hapijs/glue/pull/4" - }, - { - "id": 50218952, - "labels": ["feature"], + "url": "https://github.com/hapijs/glue/milestone/4", + "version": "2.2.0" + }, + { + "date": "2015-07-24T21:55:42Z", + "id": 1169461, + "issues": [ + { + "id": 94192802, + "labels": ["test"], + "number": 25, + "title": "Linting update", + "url": "https://github.com/hapijs/glue/pull/25" + } + ], "number": 3, - "title": "add support for preConnection and preRegister options handlers", - "url": "https://github.com/hapijs/glue/issues/3" - }, - { - "id": 50112720, - "labels": ["feature"], + "url": "https://github.com/hapijs/glue/milestone/3", + "version": "2.1.1" + }, + { + "date": "2015-06-17T23:14:07Z", + "id": 1002610, + "issues": [ + { + "id": 88855576, + "labels": ["documentation"], + "number": 22, + "title": "Add usage section to README file.", + "url": "https://github.com/hapijs/glue/pull/22" + }, + { + "id": 82811395, + "labels": ["feature"], + "number": 20, + "title": "Added ability to pass array of plugins", + "url": "https://github.com/hapijs/glue/pull/20" + } + ], "number": 2, - "title": "manifest limitation on server options", - "url": "https://github.com/hapijs/glue/issues/2" - }, - { - "id": 49292613, - "labels": ["feature"], + "url": "https://github.com/hapijs/glue/milestone/2", + "version": "2.1.0" + }, + { + "date": "2015-03-02T19:47:30Z", + "id": 871879, + "issues": [ + { + "id": 51511826, + "labels": ["dependency"], + "number": 8, + "title": "Update Hapi dependency", + "url": "https://github.com/hapijs/glue/pull/8" + }, + { + "id": 51494532, + "labels": ["dependency"], + "number": 7, + "title": "Publish 2.0.0", + "url": "https://github.com/hapijs/glue/issues/7" + }, + { + "id": 50865211, + "labels": ["test"], + "number": 6, + "title": "revamp test code to only test functionality relevant to glue", + "url": "https://github.com/hapijs/glue/issues/6" + }, + { + "id": 50864989, + "labels": ["feature", "documentation"], + "number": 5, + "title": "Improve validation and documentation of manifest plugins entry", + "url": "https://github.com/hapijs/glue/issues/5" + }, + { + "id": 50772012, + "labels": ["dependency"], + "number": 4, + "title": "Update to hapi@8.0.0-rc7", + "url": "https://github.com/hapijs/glue/pull/4" + }, + { + "id": 50218952, + "labels": ["feature"], + "number": 3, + "title": "add support for preConnection and preRegister options handlers", + "url": "https://github.com/hapijs/glue/issues/3" + }, + { + "id": 50112720, + "labels": ["feature"], + "number": 2, + "title": "manifest limitation on server options", + "url": "https://github.com/hapijs/glue/issues/2" + }, + { + "id": 49292613, + "labels": ["feature"], + "number": 1, + "title": "hapi 8.0 API", + "url": "https://github.com/hapijs/glue/issues/1" + } + ], "number": 1, - "title": "hapi 8.0 API", - "url": "https://github.com/hapijs/glue/issues/1" - } - ], - "number": 1, - "url": "https://github.com/hapijs/glue/milestone/1", - "version": "2.0.0" - } + "url": "https://github.com/hapijs/glue/milestone/1", + "version": "2.0.0" + } ] diff --git a/generated/modules/glue/info.json b/generated/modules/glue/info.json index ab9c587a..11514769 100644 --- a/generated/modules/glue/info.json +++ b/generated/modules/glue/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 60, - "isPlugin": false, - "link": "https://github.com/hapijs/glue", - "name": "glue", - "package": "@hapi/glue", - "slogan": "Server composer for hapi.js.", - "sloganHtml": "Server composer for hapi.js.", - "stars": 244, - "updated": "2024-10-23T15:39:45Z", - "versions": [ - { - "branch": "v9.0.1", - "license": "BSD", - "name": "9.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["9.0.1"], - "latestVersion": "9.x.x" + "api": true, + "forks": 60, + "isPlugin": false, + "latestVersion": "9.x.x", + "link": "https://github.com/hapijs/glue", + "name": "glue", + "package": "@hapi/glue", + "slogan": "Server composer for hapi.js.", + "sloganHtml": "Server composer for hapi.js.", + "stars": 244, + "updated": "2024-10-23T15:39:45Z", + "versions": [ + { + "branch": "v9.0.1", + "license": "BSD", + "name": "9.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["9.0.1"] } diff --git a/generated/modules/h2o2/changelog.json b/generated/modules/h2o2/changelog.json index da4dd436..f0d19c92 100644 --- a/generated/modules/h2o2/changelog.json +++ b/generated/modules/h2o2/changelog.json @@ -1,438 +1,454 @@ [ - { - "date": "2023-08-10T16:31:37Z", - "id": 9772615, - "issues": [ - { - "id": 1845343284, - "labels": ["types"], - "number": 137, - "title": "Fix mapUri type definition", - "url": "https://github.com/hapijs/h2o2/pull/137" - } - ], - "number": 23, - "url": "https://github.com/hapijs/h2o2/milestone/23", - "version": "10.0.3" - }, - { - "date": "2023-06-09T14:37:02Z", - "id": 9519632, - "issues": [ - { - "id": 1749976254, - "labels": ["types"], - "number": 136, - "title": "chore: add typings from DT", - "url": "https://github.com/hapijs/h2o2/pull/136" - } - ], - "number": 22, - "url": "https://github.com/hapijs/h2o2/milestone/22", - "version": "10.0.2" - }, - { - "date": "2023-02-11T20:03:42Z", - "id": 8415237, - "issues": [ - { - "id": 1551796616, - "labels": ["dependency"], - "number": 135, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/h2o2/pull/135" - }, - { - "id": 1402401533, - "labels": ["bug"], - "number": 133, - "title": "Support delete payload forwarding", - "url": "https://github.com/hapijs/h2o2/pull/133" - } - ], - "number": 21, - "url": "https://github.com/hapijs/h2o2/milestone/21", - "version": "10.0.1" - }, - { - "date": "2022-09-26T19:58:27Z", - "id": 8415236, - "issues": [ - { - "id": 1370478654, - "labels": ["dependency", "breaking changes", "test"], - "number": 132, - "title": "Support for hapi v21, node v18, ESM tests", - "url": "https://github.com/hapijs/h2o2/pull/132" - }, - { - "id": 1077915311, - "labels": ["test"], - "number": 131, - "title": "add dispatcher and use shared config", - "url": "https://github.com/hapijs/h2o2/pull/131" - }, - { - "id": 1044852838, - "labels": ["feature", "breaking changes"], - "number": 128, - "title": "Add querystring support for uri mapping", - "url": "https://github.com/hapijs/h2o2/pull/128" - } - ], - "number": 20, - "url": "https://github.com/hapijs/h2o2/milestone/20", - "version": "10.0.0" - }, - { - "date": "2022-09-12T20:29:37Z", - "id": 6825407, - "issues": [ - { - "id": 870243890, - "labels": ["feature"], - "number": 125, - "title": "propagate request abortion to upstream server", - "url": "https://github.com/hapijs/h2o2/pull/125" - } - ], - "number": 18, - "url": "https://github.com/hapijs/h2o2/milestone/18", - "version": "9.1.0" - }, - { - "date": "2020-09-26T16:42:17Z", - "id": 4997100, - "issues": [ - { - "id": 684030454, - "labels": [], - "number": 121, - "title": "migrate to new travis format", - "url": "https://github.com/hapijs/h2o2/pull/121" - }, - { - "id": 677274332, - "labels": [], - "number": 120, - "title": "upgrade to hapi 20", - "url": "https://github.com/hapijs/h2o2/pull/120" - }, - { - "id": 672184050, - "labels": [], - "number": 119, - "title": "update lab and switch joi to validate", - "url": "https://github.com/hapijs/h2o2/pull/119" - }, - { - "id": 590944705, - "labels": ["documentation"], - "number": 117, - "title": "Update onResponse for Wreck's async/await syntax", - "url": "https://github.com/hapijs/h2o2/pull/117" - } - ], - "number": 17, - "url": "https://github.com/hapijs/h2o2/milestone/17", - "version": "9.0.2" - }, - { - "date": "2020-01-12T08:18:44Z", - "id": 4997038, - "issues": [ - { - "id": 548537438, - "labels": ["dependency", "breaking changes"], - "number": 113, - "title": "Require hapi 19", - "url": "https://github.com/hapijs/h2o2/issues/113" - } - ], - "number": 16, - "url": "https://github.com/hapijs/h2o2/milestone/16", - "version": "9.0.1" - }, - { - "date": "2020-01-12T06:20:03Z", - "id": 4656010, - "issues": [ - { - "id": 548527898, - "labels": ["breaking changes"], - "number": 112, - "title": "Change plugin name to @hapi/h2o2", - "url": "https://github.com/hapijs/h2o2/issues/112" - }, - { - "id": 548527760, - "labels": ["breaking changes"], - "number": 111, - "title": "Drop hapi v17", - "url": "https://github.com/hapijs/h2o2/issues/111" - }, - { - "id": 548527726, - "labels": ["dependency", "breaking changes"], - "number": 110, - "title": "Only node 12", - "url": "https://github.com/hapijs/h2o2/issues/110" - } - ], - "number": 15, - "url": "https://github.com/hapijs/h2o2/milestone/15", - "version": "9.0.0" - }, - { - "date": "2019-09-13T06:06:35Z", - "id": 4574375, - "issues": [ - { - "id": 493078304, - "labels": ["dependency"], - "number": 102, - "title": "Update joi", - "url": "https://github.com/hapijs/h2o2/issues/102" - } - ], - "number": 14, - "url": "https://github.com/hapijs/h2o2/milestone/14", - "version": "8.3.2" - }, - { - "date": "2019-08-14T22:25:47Z", - "id": 4227411, - "issues": [ - { - "id": 480915290, - "labels": ["dependency"], - "number": 101, - "title": "Update deps", - "url": "https://github.com/hapijs/h2o2/issues/101" - } - ], - "number": 13, - "url": "https://github.com/hapijs/h2o2/milestone/13", - "version": "8.3.1" - }, - { - "date": "2019-04-13T22:24:28Z", - "id": 3818807, - "issues": [ - { - "id": 432907175, - "labels": ["bug"], - "number": 95, - "title": "Move agents from internals to server", - "url": "https://github.com/hapijs/h2o2/issues/95" - }, - { - "id": 432907140, - "labels": ["dependency"], - "number": 94, - "title": "Change module namespace", - "url": "https://github.com/hapijs/h2o2/issues/94" - } - ], - "number": 12, - "url": "https://github.com/hapijs/h2o2/milestone/12", - "version": "8.3.0" - }, - { - "date": "2018-11-13T18:43:54Z", - "id": 2055921, - "issues": [ - { - "id": 182012109, - "labels": ["feature", "bug", "test"], - "number": 45, - "title": "Fix the `uri` vs. `address` variable usage for multiple replacements", - "url": "https://github.com/hapijs/h2o2/pull/45" - }, - { - "id": 181481071, - "labels": ["feature", "non issue"], - "number": 44, - "title": "Allow request.params variable replacement in the uri template", - "url": "https://github.com/hapijs/h2o2/pull/44" - } - ], - "number": 11, - "url": "https://github.com/hapijs/h2o2/milestone/11", - "version": "5.3.0" - }, - { - "date": "2018-11-13T18:43:58Z", - "id": 1975361, - "issues": [ - { - "id": 179272618, - "labels": ["feature", "bug"], - "number": 42, - "title": "Added X-Forwarded-Host to forward headers", - "url": "https://github.com/hapijs/h2o2/pull/42" - }, - { - "id": 174265638, - "labels": ["bug"], - "number": 41, - "title": "X-Forwarded-Proto being set to upstream protocol", - "url": "https://github.com/hapijs/h2o2/pull/41" - } - ], - "number": 10, - "url": "https://github.com/hapijs/h2o2/milestone/10", - "version": "5.2.0" - }, - { - "date": "2018-11-13T18:43:59Z", - "id": 1605604, - "issues": [ - { - "id": 136078912, - "labels": ["feature", "dependency"], + { + "date": "2026-06-17T08:22:08Z", + "id": 9942780, + "issues": [ + { + "id": 1902656081, + "labels": ["bug"], + "number": 138, + "title": "fix: forward 405 Allow header", + "url": "https://github.com/hapijs/h2o2/pull/138" + } + ], "number": 24, - "title": "Update deps", - "url": "https://github.com/hapijs/h2o2/pull/24" - } - ], - "number": 9, - "url": "https://github.com/hapijs/h2o2/milestone/9", - "version": "5.1" - }, - { - "date": "2018-11-13T18:44:01Z", - "id": 1453093, - "issues": [ - { - "id": 121388303, - "labels": ["feature", "breaking changes"], + "url": "https://github.com/hapijs/h2o2/milestone/24", + "version": "10.0.4" + }, + { + "date": "2023-08-10T16:31:37Z", + "id": 9772615, + "issues": [ + { + "id": 1845343284, + "labels": ["types"], + "number": 137, + "title": "Fix mapUri type definition", + "url": "https://github.com/hapijs/h2o2/pull/137" + } + ], + "number": 23, + "url": "https://github.com/hapijs/h2o2/milestone/23", + "version": "10.0.3" + }, + { + "date": "2023-06-09T14:37:02Z", + "id": 9519632, + "issues": [ + { + "id": 1749976254, + "labels": ["types"], + "number": 136, + "title": "chore: add typings from DT", + "url": "https://github.com/hapijs/h2o2/pull/136" + } + ], + "number": 22, + "url": "https://github.com/hapijs/h2o2/milestone/22", + "version": "10.0.2" + }, + { + "date": "2023-02-11T20:03:42Z", + "id": 8415237, + "issues": [ + { + "id": 1551796616, + "labels": ["dependency"], + "number": 135, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/h2o2/pull/135" + }, + { + "id": 1402401533, + "labels": ["bug"], + "number": 133, + "title": "Support delete payload forwarding", + "url": "https://github.com/hapijs/h2o2/pull/133" + } + ], + "number": 21, + "url": "https://github.com/hapijs/h2o2/milestone/21", + "version": "10.0.1" + }, + { + "date": "2022-09-26T19:58:27Z", + "id": 8415236, + "issues": [ + { + "id": 1370478654, + "labels": ["dependency", "breaking changes", "test"], + "number": 132, + "title": "Support for hapi v21, node v18, ESM tests", + "url": "https://github.com/hapijs/h2o2/pull/132" + }, + { + "id": 1077915311, + "labels": ["test"], + "number": 131, + "title": "add dispatcher and use shared config", + "url": "https://github.com/hapijs/h2o2/pull/131" + }, + { + "id": 1044852838, + "labels": ["feature", "breaking changes"], + "number": 128, + "title": "Add querystring support for uri mapping", + "url": "https://github.com/hapijs/h2o2/pull/128" + } + ], "number": 20, - "title": "Migrate to new versions of modules and ES6.", - "url": "https://github.com/hapijs/h2o2/pull/20" - } - ], - "number": 8, - "url": "https://github.com/hapijs/h2o2/milestone/8", - "version": "5.0.0" - }, - { - "date": "2018-11-13T18:44:03Z", - "id": 1139239, - "issues": [ - { - "id": 112737652, - "labels": ["dependency"], + "url": "https://github.com/hapijs/h2o2/milestone/20", + "version": "10.0.0" + }, + { + "date": "2022-09-12T20:29:37Z", + "id": 6825407, + "issues": [ + { + "id": 870243890, + "labels": ["feature"], + "number": 125, + "title": "propagate request abortion to upstream server", + "url": "https://github.com/hapijs/h2o2/pull/125" + } + ], "number": 18, - "title": "Update Wreck dependency", - "url": "https://github.com/hapijs/h2o2/pull/18" - } - ], - "number": 7, - "url": "https://github.com/hapijs/h2o2/milestone/7", - "version": "4.0.2" - }, - { - "date": "2015-05-29T05:51:41Z", - "id": 898080, - "issues": [ - { - "id": 78463797, - "labels": ["dependency"], + "url": "https://github.com/hapijs/h2o2/milestone/18", + "version": "9.1.0" + }, + { + "date": "2020-09-26T16:42:17Z", + "id": 4997100, + "issues": [ + { + "id": 684030454, + "labels": [], + "number": 121, + "title": "migrate to new travis format", + "url": "https://github.com/hapijs/h2o2/pull/121" + }, + { + "id": 677274332, + "labels": [], + "number": 120, + "title": "upgrade to hapi 20", + "url": "https://github.com/hapijs/h2o2/pull/120" + }, + { + "id": 672184050, + "labels": [], + "number": 119, + "title": "update lab and switch joi to validate", + "url": "https://github.com/hapijs/h2o2/pull/119" + }, + { + "id": 590944705, + "labels": ["documentation"], + "number": 117, + "title": "Update onResponse for Wreck's async/await syntax", + "url": "https://github.com/hapijs/h2o2/pull/117" + } + ], + "number": 17, + "url": "https://github.com/hapijs/h2o2/milestone/17", + "version": "9.0.2" + }, + { + "date": "2020-01-12T08:18:44Z", + "id": 4997038, + "issues": [ + { + "id": 548537438, + "labels": ["dependency", "breaking changes"], + "number": 113, + "title": "Require hapi 19", + "url": "https://github.com/hapijs/h2o2/issues/113" + } + ], + "number": 16, + "url": "https://github.com/hapijs/h2o2/milestone/16", + "version": "9.0.1" + }, + { + "date": "2020-01-12T06:20:03Z", + "id": 4656010, + "issues": [ + { + "id": 548527898, + "labels": ["breaking changes"], + "number": 112, + "title": "Change plugin name to @hapi/h2o2", + "url": "https://github.com/hapijs/h2o2/issues/112" + }, + { + "id": 548527760, + "labels": ["breaking changes"], + "number": 111, + "title": "Drop hapi v17", + "url": "https://github.com/hapijs/h2o2/issues/111" + }, + { + "id": 548527726, + "labels": ["dependency", "breaking changes"], + "number": 110, + "title": "Only node 12", + "url": "https://github.com/hapijs/h2o2/issues/110" + } + ], + "number": 15, + "url": "https://github.com/hapijs/h2o2/milestone/15", + "version": "9.0.0" + }, + { + "date": "2019-09-13T06:06:35Z", + "id": 4574375, + "issues": [ + { + "id": 493078304, + "labels": ["dependency"], + "number": 102, + "title": "Update joi", + "url": "https://github.com/hapijs/h2o2/issues/102" + } + ], + "number": 14, + "url": "https://github.com/hapijs/h2o2/milestone/14", + "version": "8.3.2" + }, + { + "date": "2019-08-14T22:25:47Z", + "id": 4227411, + "issues": [ + { + "id": 480915290, + "labels": ["dependency"], + "number": 101, + "title": "Update deps", + "url": "https://github.com/hapijs/h2o2/issues/101" + } + ], + "number": 13, + "url": "https://github.com/hapijs/h2o2/milestone/13", + "version": "8.3.1" + }, + { + "date": "2019-04-13T22:24:28Z", + "id": 3818807, + "issues": [ + { + "id": 432907175, + "labels": ["bug"], + "number": 95, + "title": "Move agents from internals to server", + "url": "https://github.com/hapijs/h2o2/issues/95" + }, + { + "id": 432907140, + "labels": ["dependency"], + "number": 94, + "title": "Change module namespace", + "url": "https://github.com/hapijs/h2o2/issues/94" + } + ], + "number": 12, + "url": "https://github.com/hapijs/h2o2/milestone/12", + "version": "8.3.0" + }, + { + "date": "2018-11-13T18:43:54Z", + "id": 2055921, + "issues": [ + { + "id": 182012109, + "labels": ["feature", "bug", "test"], + "number": 45, + "title": "Fix the `uri` vs. `address` variable usage for multiple replacements", + "url": "https://github.com/hapijs/h2o2/pull/45" + }, + { + "id": 181481071, + "labels": ["feature", "non issue"], + "number": 44, + "title": "Allow request.params variable replacement in the uri template", + "url": "https://github.com/hapijs/h2o2/pull/44" + } + ], "number": 11, - "title": "Bump Joi to v6.x.x", - "url": "https://github.com/hapijs/h2o2/pull/11" - } - ], - "number": 6, - "url": "https://github.com/hapijs/h2o2/milestone/6", - "version": "4.0.1" - }, - { - "date": "2014-12-09T22:42:28Z", - "id": 847490, - "issues": [ - { - "id": 49866152, - "labels": ["dependency", "breaking changes"], + "url": "https://github.com/hapijs/h2o2/milestone/11", + "version": "5.3.0" + }, + { + "date": "2018-11-13T18:43:58Z", + "id": 1975361, + "issues": [ + { + "id": 179272618, + "labels": ["feature", "bug"], + "number": 42, + "title": "Added X-Forwarded-Host to forward headers", + "url": "https://github.com/hapijs/h2o2/pull/42" + }, + { + "id": 174265638, + "labels": ["bug"], + "number": 41, + "title": "X-Forwarded-Proto being set to upstream protocol", + "url": "https://github.com/hapijs/h2o2/pull/41" + } + ], + "number": 10, + "url": "https://github.com/hapijs/h2o2/milestone/10", + "version": "5.2.0" + }, + { + "date": "2018-11-13T18:43:59Z", + "id": 1605604, + "issues": [ + { + "id": 136078912, + "labels": ["feature", "dependency"], + "number": 24, + "title": "Update deps", + "url": "https://github.com/hapijs/h2o2/pull/24" + } + ], + "number": 9, + "url": "https://github.com/hapijs/h2o2/milestone/9", + "version": "5.1" + }, + { + "date": "2018-11-13T18:44:01Z", + "id": 1453093, + "issues": [ + { + "id": 121388303, + "labels": ["feature", "breaking changes"], + "number": 20, + "title": "Migrate to new versions of modules and ES6.", + "url": "https://github.com/hapijs/h2o2/pull/20" + } + ], "number": 8, - "title": "passThrough changes", - "url": "https://github.com/hapijs/h2o2/pull/8" - } - ], - "number": 5, - "url": "https://github.com/hapijs/h2o2/milestone/5", - "version": "4.0.0" - }, - { - "date": "2014-10-31T00:33:45Z", - "id": 820358, - "issues": [ - { - "id": 47348204, - "labels": ["feature", "breaking changes"], + "url": "https://github.com/hapijs/h2o2/milestone/8", + "version": "5.0.0" + }, + { + "date": "2018-11-13T18:44:03Z", + "id": 1139239, + "issues": [ + { + "id": 112737652, + "labels": ["dependency"], + "number": 18, + "title": "Update Wreck dependency", + "url": "https://github.com/hapijs/h2o2/pull/18" + } + ], "number": 7, - "title": "Move maxSockets to a handler config instead of server", - "url": "https://github.com/hapijs/h2o2/pull/7" - }, - { - "id": 47348186, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/h2o2/milestone/7", + "version": "4.0.2" + }, + { + "date": "2015-05-29T05:51:41Z", + "id": 898080, + "issues": [ + { + "id": 78463797, + "labels": ["dependency"], + "number": 11, + "title": "Bump Joi to v6.x.x", + "url": "https://github.com/hapijs/h2o2/pull/11" + } + ], "number": 6, - "title": "Replace server maxSockets settings with per handler configuration", - "url": "https://github.com/hapijs/h2o2/issues/6" - } - ], - "number": 4, - "url": "https://github.com/hapijs/h2o2/milestone/4", - "version": "3.0.0" - }, - { - "date": "2014-10-09T20:53:16Z", - "id": 820202, - "issues": [ - { - "id": 45416090, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/h2o2/milestone/6", + "version": "4.0.1" + }, + { + "date": "2014-12-09T22:42:28Z", + "id": 847490, + "issues": [ + { + "id": 49866152, + "labels": ["dependency", "breaking changes"], + "number": 8, + "title": "passThrough changes", + "url": "https://github.com/hapijs/h2o2/pull/8" + } + ], + "number": 5, + "url": "https://github.com/hapijs/h2o2/milestone/5", + "version": "4.0.0" + }, + { + "date": "2014-10-31T00:33:45Z", + "id": 820358, + "issues": [ + { + "id": 47348204, + "labels": ["feature", "breaking changes"], + "number": 7, + "title": "Move maxSockets to a handler config instead of server", + "url": "https://github.com/hapijs/h2o2/pull/7" + }, + { + "id": 47348186, + "labels": ["breaking changes"], + "number": 6, + "title": "Replace server maxSockets settings with per handler configuration", + "url": "https://github.com/hapijs/h2o2/issues/6" + } + ], "number": 4, - "title": "Change localStatePassThrough default to true", - "url": "https://github.com/hapijs/h2o2/issues/4" - } - ], - "number": 3, - "url": "https://github.com/hapijs/h2o2/milestone/3", - "version": "2.0.1" - }, - { - "date": "2014-10-09T18:17:15Z", - "id": 796572, - "issues": [ - { - "id": 45399232, - "labels": ["dependency"], + "url": "https://github.com/hapijs/h2o2/milestone/4", + "version": "3.0.0" + }, + { + "date": "2014-10-09T20:53:16Z", + "id": 820202, + "issues": [ + { + "id": 45416090, + "labels": ["breaking changes"], + "number": 4, + "title": "Change localStatePassThrough default to true", + "url": "https://github.com/hapijs/h2o2/issues/4" + } + ], "number": 3, - "title": "Change handler function to hapi 7.0 API", - "url": "https://github.com/hapijs/h2o2/issues/3" - } - ], - "number": 2, - "url": "https://github.com/hapijs/h2o2/milestone/2", - "version": "2.0.0" - }, - { - "date": "2014-09-20T07:57:45Z", - "id": 796571, - "issues": [ - { - "id": 43303873, - "labels": ["feature", "dependency"], + "url": "https://github.com/hapijs/h2o2/milestone/3", + "version": "2.0.1" + }, + { + "date": "2014-10-09T18:17:15Z", + "id": 796572, + "issues": [ + { + "id": 45399232, + "labels": ["dependency"], + "number": 3, + "title": "Change handler function to hapi 7.0 API", + "url": "https://github.com/hapijs/h2o2/issues/3" + } + ], + "number": 2, + "url": "https://github.com/hapijs/h2o2/milestone/2", + "version": "2.0.0" + }, + { + "date": "2014-09-20T07:57:45Z", + "id": 796571, + "issues": [ + { + "id": 43303873, + "labels": ["feature", "dependency"], + "number": 1, + "title": "Use joi.assert()", + "url": "https://github.com/hapijs/h2o2/issues/1" + } + ], "number": 1, - "title": "Use joi.assert()", - "url": "https://github.com/hapijs/h2o2/issues/1" - } - ], - "number": 1, - "url": "https://github.com/hapijs/h2o2/milestone/1", - "version": "1.0.1" - } + "url": "https://github.com/hapijs/h2o2/milestone/1", + "version": "1.0.1" + } ] diff --git a/generated/modules/h2o2/info.json b/generated/modules/h2o2/info.json index 46d84a69..de1ea93c 100644 --- a/generated/modules/h2o2/info.json +++ b/generated/modules/h2o2/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 61, - "isPlugin": true, - "link": "https://github.com/hapijs/h2o2", - "name": "h2o2", - "package": "@hapi/h2o2", - "slogan": "Proxy handler for hapi.js.", - "sloganHtml": "Proxy handler for hapi.js.", - "stars": 164, - "updated": "2024-10-23T15:12:00Z", - "versions": [ - { - "branch": "v10.0.4", - "license": "BSD", - "name": "10.0.4", - "node": ">= 16" - } - ], - "versionsArray": ["10.0.4"], - "latestVersion": "10.x.x" + "api": true, + "forks": 60, + "isPlugin": true, + "latestVersion": "10.x.x", + "link": "https://github.com/hapijs/h2o2", + "name": "h2o2", + "package": "@hapi/h2o2", + "slogan": "Proxy handler for hapi.js.", + "sloganHtml": "Proxy handler for hapi.js.", + "stars": 164, + "updated": "2024-10-23T15:12:00Z", + "versions": [ + { + "branch": "v10.0.4", + "license": "BSD", + "name": "10.0.4", + "node": ">= 16" + } + ], + "versionsArray": ["10.0.4"] } diff --git a/generated/modules/hapi/changelog.json b/generated/modules/hapi/changelog.json index 6c0f5888..1a084edd 100644 --- a/generated/modules/hapi/changelog.json +++ b/generated/modules/hapi/changelog.json @@ -1,17089 +1,17105 @@ [ - { - "date": "2026-04-02T08:29:10Z", - "id": 15394908, - "issues": [ - { - "id": 4192791984, - "labels": ["dependency"], - "number": 4568, - "title": "chore: bump deps", - "url": "https://github.com/hapijs/hapi/pull/4568" - } - ], - "number": 329, - "url": "https://github.com/hapijs/hapi/milestone/329", - "version": "21.4.8" - }, - { - "date": "2026-03-06T15:06:47Z", - "id": 15044404, - "issues": [ - { - "id": 3596269821, - "labels": ["bug"], - "number": 4559, - "title": "fix: 🐛 request.url getter fails when using IPv6 and HTTP2 [#4560]", - "url": "https://github.com/hapijs/hapi/pull/4559" - } - ], - "number": 328, - "url": "https://github.com/hapijs/hapi/milestone/328", - "version": "21.4.7" - }, - { - "date": "2026-02-19T15:27:38Z", - "id": 14867959, - "issues": [ - { - "id": 3963188372, - "labels": ["bug"], - "number": 4564, - "title": "Fix invalid hostname parsing for ipv6 formatted host header", - "url": "https://github.com/hapijs/hapi/pull/4564" - } - ], - "number": 327, - "url": "https://github.com/hapijs/hapi/milestone/327", - "version": "21.4.6" - }, - { - "date": "2026-02-18T09:16:35Z", - "id": 14851983, - "issues": [ - { - "id": 3935299430, - "labels": ["types"], - "number": 4562, - "title": "fix: auth typings and reduced type ambiguity", - "url": "https://github.com/hapijs/hapi/pull/4562" - }, - { - "id": 3699293418, - "labels": ["bug", "types"], - "number": 4561, - "title": "Possible typing regression between v21.3.12 and v21.4.4", - "url": "https://github.com/hapijs/hapi/issues/4561" - } - ], - "number": 326, - "url": "https://github.com/hapijs/hapi/milestone/326", - "version": "21.4.5" - }, - { - "date": "2025-11-06T09:44:01Z", - "id": 14063008, - "issues": [ - { - "id": 3594936305, - "labels": ["dependency"], - "number": 4557, - "title": "chore: update deps", - "url": "https://github.com/hapijs/hapi/pull/4557" - } - ], - "number": 325, - "url": "https://github.com/hapijs/hapi/milestone/325", - "version": "21.4.4" - }, - { - "date": "2025-08-13T22:38:47Z", - "id": 13483109, - "issues": [ - { - "id": 3320078866, - "labels": ["dependency"], - "number": 4553, - "title": "chore: bump dependencies", - "url": "https://github.com/hapijs/hapi/pull/4553" - }, - { - "id": 3307877922, - "labels": ["bug"], - "number": 4552, - "title": "Handle stream.destroy() called before stream end", - "url": "https://github.com/hapijs/hapi/pull/4552" - } - ], - "number": 324, - "url": "https://github.com/hapijs/hapi/milestone/324", - "version": "21.4.3" - }, - { - "date": "2025-08-04T21:03:50Z", - "id": 13425858, - "issues": [ - { - "id": 3278416153, - "labels": ["types"], - "number": 4550, - "title": "Correct type for state object", - "url": "https://github.com/hapijs/hapi/pull/4550" - } - ], - "number": 323, - "url": "https://github.com/hapijs/hapi/milestone/323", - "version": "21.4.2" - }, - { - "date": "2025-08-04T21:03:47Z", - "id": 13425358, - "issues": [], - "number": 322, - "url": "https://github.com/hapijs/hapi/milestone/322", - "version": "21.4.1" - }, - { - "date": "2025-03-01T09:19:22Z", - "id": 12416956, - "issues": [ - { - "id": 2888275535, - "labels": ["feature"], - "number": 4545, - "title": "feat: add support for cookie partition", - "url": "https://github.com/hapijs/hapi/pull/4545" - }, - { - "id": 2833249091, - "labels": ["documentation"], - "number": 4543, - "title": "Update event tags in documentation", - "url": "https://github.com/hapijs/hapi/pull/4543" - }, - { - "id": 2830659617, - "labels": ["documentation"], - "number": 4542, - "title": "`request` `closed` `error` tags", - "url": "https://github.com/hapijs/hapi/issues/4542" - }, - { - "id": 2798202691, - "labels": ["types"], - "number": 4540, - "title": "fix: 🐛 less ambigious plugin types", - "url": "https://github.com/hapijs/hapi/pull/4540" - }, - { - "id": 2797454967, - "labels": ["types"], - "number": 4538, - "title": "fix: 🐛 typings around server.decorate", - "url": "https://github.com/hapijs/hapi/pull/4538" - }, - { - "id": 2458516313, - "labels": ["types"], - "number": 4523, - "title": "fix: 🐛 accurate auth typings", - "url": "https://github.com/hapijs/hapi/pull/4523" - }, - { - "id": 2385170427, - "labels": ["types"], - "number": 4515, - "title": "fix: 🐛 allow typed server methods access cache methods", - "url": "https://github.com/hapijs/hapi/pull/4515" - } - ], - "number": 321, - "url": "https://github.com/hapijs/hapi/milestone/321", - "version": "21.4.0" - }, - { - "date": "2024-10-24T22:12:20Z", - "id": 11793186, - "issues": [ - { - "id": 2612646913, - "labels": ["dependency"], - "number": 4533, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/hapi/pull/4533" - } - ], - "number": 320, - "url": "https://github.com/hapijs/hapi/milestone/320", - "version": "21.3.12" - }, - { - "date": "2024-10-24T10:20:18Z", - "id": 11789672, - "issues": [ - { - "id": 2611116175, - "labels": ["bug", "dependency"], - "number": 4532, - "title": "chore: bump all modules to their latest compatible version", - "url": "https://github.com/hapijs/hapi/pull/4532" - }, - { - "id": 2598115584, - "labels": ["bug"], - "number": 4531, - "title": "Asserts (and probably other Bounce.isSystem) loose stack trace", - "url": "https://github.com/hapijs/hapi/issues/4531" - }, - { - "id": 2563857067, - "labels": ["bug"], - "number": 4530, - "title": "Don't destroy incoming requests during the stopping phase", - "url": "https://github.com/hapijs/hapi/pull/4530" - }, - { - "id": 2188202189, - "labels": ["bug"], - "number": 4488, - "title": "Improve expect 100-continue handling", - "url": "https://github.com/hapijs/hapi/pull/4488" - } - ], - "number": 319, - "url": "https://github.com/hapijs/hapi/milestone/319", - "version": "21.3.11" - }, - { - "date": "2024-10-24T10:00:52Z", - "id": 11174648, - "issues": [ - { - "id": 2342567423, - "labels": [], - "number": 4507, - "title": "fix: 🐛 route payload options missing types", - "url": "https://github.com/hapijs/hapi/pull/4507" - }, - { - "id": 2250307089, - "labels": ["bug"], - "number": 4501, - "title": "Missing maxParts type in route.d.ts", - "url": "https://github.com/hapijs/hapi/issues/4501" - } - ], - "number": 318, - "url": "https://github.com/hapijs/hapi/milestone/318", - "version": "21.3.10" - }, - { - "date": "2024-04-09T14:38:28Z", - "id": 10795745, - "issues": [ - { - "id": 2233039569, - "labels": ["types"], - "number": 4496, - "title": "types: allow server.match to receive lowercased methods", - "url": "https://github.com/hapijs/hapi/pull/4496" - } - ], - "number": 317, - "url": "https://github.com/hapijs/hapi/milestone/317", - "version": "21.3.9" - }, - { - "date": "2024-04-03T20:56:12Z", - "id": 10771382, - "issues": [ - { - "id": 2199898301, - "labels": ["types"], - "number": 4493, - "title": "Cleanup http methods typings", - "url": "https://github.com/hapijs/hapi/pull/4493" - }, - { - "id": 2198705655, - "labels": ["bug", "types"], - "number": 4492, - "title": "HTTP_METHODS_PARTIAL_LOWERCASE is missing `head`", - "url": "https://github.com/hapijs/hapi/issues/4492" - } - ], - "number": 316, - "url": "https://github.com/hapijs/hapi/milestone/316", - "version": "21.3.8" - }, - { - "date": "2024-03-19T21:21:08Z", - "id": 10706545, - "issues": [ - { - "id": 2191895162, - "labels": ["types"], - "number": 4490, - "title": "Make content encoder and options explicitly typed and extensible", - "url": "https://github.com/hapijs/hapi/pull/4490" - } - ], - "number": 315, - "url": "https://github.com/hapijs/hapi/milestone/315", - "version": "21.3.7" - }, - { - "date": "2024-03-13T19:06:46Z", - "id": 10679232, - "issues": [ - { - "id": 2184245566, - "labels": ["types"], - "number": 4486, - "title": "Revert \"fix(types): enhance reusability of pres\"", - "url": "https://github.com/hapijs/hapi/pull/4486" - } - ], - "number": 314, - "url": "https://github.com/hapijs/hapi/milestone/314", - "version": "21.3.6" - }, - { - "date": "2024-03-13T14:43:47Z", - "id": 10679003, - "issues": [ - { - "id": 1981224067, - "labels": ["bug"], - "number": 4471, - "title": "Don't return error response when clientError is a pipelined HPE_INVALID_METHOD", - "url": "https://github.com/hapijs/hapi/pull/4471" - }, - { - "id": 1287142739, - "labels": ["support"], - "number": 4363, - "title": "Server crash: Error: Unknown error", - "url": "https://github.com/hapijs/hapi/issues/4363" - } - ], - "number": 313, - "url": "https://github.com/hapijs/hapi/milestone/313", - "version": "21.3.5" - }, - { - "date": "2024-03-13T14:12:21Z", - "id": 10678791, - "issues": [ - { - "id": 1966382755, - "labels": ["types"], - "number": 4470, - "title": "fix(types): enhance reusability of pres", - "url": "https://github.com/hapijs/hapi/pull/4470" - } - ], - "number": 312, - "url": "https://github.com/hapijs/hapi/milestone/312", - "version": "21.3.4" - }, - { - "date": "2024-01-29T15:50:24Z", - "id": 10481936, - "issues": [ - { - "id": 1994584710, - "labels": ["test"], - "number": 4473, - "title": "Node 20 fixes", - "url": "https://github.com/hapijs/hapi/pull/4473" - }, - { - "id": 1910456280, - "labels": ["types"], - "number": 4460, - "title": "FIX add compressed to ResponseObject type", - "url": "https://github.com/hapijs/hapi/pull/4460" - }, - { - "id": 1666532340, - "labels": ["bug"], - "number": 4446, - "title": "failAction loses stacktrace context", - "url": "https://github.com/hapijs/hapi/pull/4446" - } - ], - "number": 311, - "url": "https://github.com/hapijs/hapi/milestone/311", - "version": "21.3.3" - }, - { - "date": "2023-04-24T22:12:03Z", - "id": 9322811, - "issues": [ - { - "id": 1682086035, - "labels": ["types"], - "number": 4449, - "title": "chore: use new statehood types", - "url": "https://github.com/hapijs/hapi/pull/4449" - } - ], - "number": 310, - "url": "https://github.com/hapijs/hapi/milestone/310", - "version": "21.3.2" - }, - { - "date": "2023-04-24T22:12:01Z", - "id": 9178630, - "issues": [ - { - "id": 1532907327, - "labels": ["types"], - "number": 4413, - "title": "Pass ServerApplicationState to server extensions", - "url": "https://github.com/hapijs/hapi/pull/4413" - } - ], - "number": 309, - "url": "https://github.com/hapijs/hapi/milestone/309", - "version": "21.3.1" - }, - { - "date": "2023-02-14T15:13:19Z", - "id": 9043375, - "issues": [ - { - "id": 1584340103, - "labels": ["feature", "breaking changes", "security"], - "number": 4425, - "title": "Add option to limit maxParts in multipart payloads", - "url": "https://github.com/hapijs/hapi/issues/4425" - } - ], - "number": 308, - "url": "https://github.com/hapijs/hapi/milestone/308", - "version": "21.3.0" - }, - { - "date": "2023-02-11T21:16:25Z", - "id": 9033331, - "issues": [ - { - "id": 1551780353, - "labels": ["dependency"], - "number": 4417, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/hapi/pull/4417" - } - ], - "number": 306, - "url": "https://github.com/hapijs/hapi/milestone/306", - "version": "21.2.2" - }, - { - "date": "2023-01-30T03:18:04Z", - "id": 8979568, - "issues": [ - { - "id": 1556845431, - "labels": ["documentation"], - "number": 4422, - "title": "Update README.md", - "url": "https://github.com/hapijs/hapi/pull/4422" - }, - { - "id": 1556836877, - "labels": ["documentation"], - "number": 4421, - "title": "adding colin to tsc members", - "url": "https://github.com/hapijs/hapi/pull/4421" - }, - { - "id": 1535371119, - "labels": ["bug", "types"], - "number": 4415, - "title": "Correct the ResponseObject type", - "url": "https://github.com/hapijs/hapi/pull/4415" - } - ], - "number": 304, - "url": "https://github.com/hapijs/hapi/milestone/304", - "version": "21.2.1" - }, - { - "date": "2023-01-30T03:17:24Z", - "id": 8852308, - "issues": [ - { - "id": 1501387887, - "labels": ["types"], - "number": 4407, - "title": "Add type for preflight status code in cors options", - "url": "https://github.com/hapijs/hapi/pull/4407" - }, - { - "id": 1471495026, - "labels": ["types"], - "number": 4402, - "title": "Updates to TypeScript definitions", - "url": "https://github.com/hapijs/hapi/pull/4402" - }, - { - "id": 1471419675, - "labels": ["types"], - "number": 4401, - "title": "update types for xss", - "url": "https://github.com/hapijs/hapi/pull/4401" - }, - { - "id": 1456697860, - "labels": ["feature", "types"], - "number": 4400, - "title": "Enhance plugin types", - "url": "https://github.com/hapijs/hapi/pull/4400" - } - ], - "number": 303, - "url": "https://github.com/hapijs/hapi/milestone/303", - "version": "21.2.0" - }, - { - "date": "2022-12-01T03:25:20Z", - "id": 8625485, - "issues": [ - { - "id": 1455871530, - "labels": ["types"], - "number": 4398, - "title": "Move TypeScript definition from DT (as-is)", - "url": "https://github.com/hapijs/hapi/pull/4398" - }, - { - "id": 1451850183, - "labels": ["bug"], - "number": 4396, - "title": "Fix handling of no remoteAddress available", - "url": "https://github.com/hapijs/hapi/pull/4396" - }, - { - "id": 1446874565, - "labels": ["bug"], - "number": 4391, - "title": "Fix node version requirement", - "url": "https://github.com/hapijs/hapi/pull/4391" - } - ], - "number": 302, - "url": "https://github.com/hapijs/hapi/milestone/302", - "version": "21.1.0" - }, - { - "date": "2022-11-07T15:13:45Z", - "id": 7886228, - "issues": [ - { - "id": 1438447866, - "labels": ["breaking changes", "release notes"], - "number": 4386, - "title": "21.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/4386" - }, - { - "id": 1301204143, - "labels": ["feature", "test", "breaking changes"], - "number": 4366, - "title": "Allow matching prereleases when validating plugin version requirements", - "url": "https://github.com/hapijs/hapi/pull/4366" - }, - { - "id": 1277363215, - "labels": ["breaking changes", "dependency"], - "number": 4361, - "title": "Upgrade production deps for hapi v21 and node v18", - "url": "https://github.com/hapijs/hapi/pull/4361" - }, - { - "id": 1268905186, - "labels": ["feature", "breaking changes"], - "number": 4357, - "title": "Change default host to be IPv6-friendly", - "url": "https://github.com/hapijs/hapi/pull/4357" - }, - { - "id": 1219680097, - "labels": ["feature", "breaking changes", "security"], - "number": 4352, - "title": "Change XSS header default to '0'", - "url": "https://github.com/hapijs/hapi/pull/4352" - }, - { - "id": 1215337588, - "labels": ["feature", "breaking changes"], - "number": 4351, - "title": "Change default CORS preflight status code w/ configuration", - "url": "https://github.com/hapijs/hapi/pull/4351" - }, - { - "id": 1215276830, - "labels": ["feature"], - "number": 4350, - "title": "Make default error available in validation failAction", - "url": "https://github.com/hapijs/hapi/pull/4350" - }, - { - "id": 1213946258, - "labels": ["breaking changes"], - "number": 4349, - "title": "Enforce that response streams are always Stream.Readable", - "url": "https://github.com/hapijs/hapi/pull/4349" - }, - { - "id": 1213909239, - "labels": ["breaking changes"], - "number": 4348, - "title": "Ignore return value from generateResponse() prepare method", - "url": "https://github.com/hapijs/hapi/pull/4348" - }, - { - "id": 1206660180, - "labels": ["breaking changes"], - "number": 4346, - "title": "Drop node v12 support", - "url": "https://github.com/hapijs/hapi/pull/4346" - }, - { - "id": 1004965611, - "labels": ["feature"], - "number": 4288, - "title": "Add support for event loop utilization based load limit", - "url": "https://github.com/hapijs/hapi/issues/4288" - }, - { - "id": 949684926, - "labels": ["feature", "breaking changes"], - "number": 4271, - "title": "Remove JSONP support", - "url": "https://github.com/hapijs/hapi/pull/4271" - }, - { - "id": 805826506, - "labels": ["feature"], - "number": 4229, - "title": "failAction: detailedError to log, defaultError to response", - "url": "https://github.com/hapijs/hapi/issues/4229" - } - ], - "number": 300, - "url": "https://github.com/hapijs/hapi/milestone/300", - "version": "21.0.0" - }, - { - "date": "2023-02-14T15:13:24Z", - "id": 9043374, - "issues": [], - "number": 307, - "url": "https://github.com/hapijs/hapi/milestone/307", - "version": "20.3.0" - }, - { - "date": "2022-04-20T02:52:44Z", - "id": 7235812, - "issues": [ - { - "id": 1209079957, - "labels": ["security", "dependency"], - "number": 4347, - "title": "Update hapijs/statehood to 7.0.4 from 7.0.3 ", - "url": "https://github.com/hapijs/hapi/issues/4347" - }, - { - "id": 1203207298, - "labels": ["bug", "dependency"], - "number": 4345, - "title": "Fix memory leaks from teamwork long standing notes", - "url": "https://github.com/hapijs/hapi/pull/4345" - }, - { - "id": 1048207023, - "labels": ["test"], - "number": 4314, - "title": "Fix tests for node v17", - "url": "https://github.com/hapijs/hapi/pull/4314" - }, - { - "id": 1022417306, - "labels": ["documentation"], - "number": 4302, - "title": "Soft deprecate returning a new object from generateResponse()", - "url": "https://github.com/hapijs/hapi/pull/4302" - } - ], - "number": 299, - "url": "https://github.com/hapijs/hapi/milestone/299", - "version": "20.2.2" - }, - { - "date": "2021-10-09T01:03:48Z", - "id": 7173879, - "issues": [ - { - "id": 1016426381, - "labels": ["bug"], - "number": 4295, - "title": "Revised request / inject abort handling", - "url": "https://github.com/hapijs/hapi/pull/4295" - }, - { - "id": 1015593391, - "labels": ["bug"], - "number": 4294, - "title": "Server crashes if a requested aborted during sending a response. ", - "url": "https://github.com/hapijs/hapi/issues/4294" - }, - { - "id": 1004968924, - "labels": ["documentation"], - "number": 4289, - "title": "Update server load default options on documentation", - "url": "https://github.com/hapijs/hapi/pull/4289" - }, - { - "id": 1003686490, - "labels": ["bug"], - "number": 4286, - "title": "Initialize server settings defaults", - "url": "https://github.com/hapijs/hapi/pull/4286" - } - ], - "number": 298, - "url": "https://github.com/hapijs/hapi/milestone/298", - "version": "20.2.1" - }, - { - "date": "2021-09-21T07:06:30Z", - "id": 6896845, - "issues": [ - { - "id": 994210993, - "labels": ["test"], - "number": 4283, - "title": "Fix tests for node@16 error format change", - "url": "https://github.com/hapijs/hapi/pull/4283" - }, - { - "id": 988569219, - "labels": ["bug", "documentation"], - "number": 4281, - "title": "Fix handling of auth scheme/strategy realms", - "url": "https://github.com/hapijs/hapi/pull/4281" - }, - { - "id": 974330764, - "labels": ["feature"], - "number": 4274, - "title": "Add optional payload authentication skip on credentials injection", - "url": "https://github.com/hapijs/hapi/pull/4274" - } - ], - "number": 297, - "url": "https://github.com/hapijs/hapi/milestone/297", - "version": "20.2.0" - }, - { - "date": "2021-06-28T22:01:30Z", - "id": 6842765, - "issues": [ - { - "id": 927880587, - "labels": ["bug"], - "number": 4264, - "title": "Fix req end during response transmission", - "url": "https://github.com/hapijs/hapi/pull/4264" - }, - { - "id": 924650596, - "labels": ["bug"], - "number": 4262, - "title": "Streaming uploads cause truncated responses in node 16", - "url": "https://github.com/hapijs/hapi/issues/4262" - } - ], - "number": 296, - "url": "https://github.com/hapijs/hapi/milestone/296", - "version": "20.1.5" - }, - { - "date": "2021-06-10T13:17:41Z", - "id": 6744255, - "issues": [ - { - "id": 911747544, - "labels": ["bug"], - "number": 4257, - "title": "Add response lifecycle tracking and checks", - "url": "https://github.com/hapijs/hapi/pull/4257" - }, - { - "id": 911692576, - "labels": ["bug"], - "number": 4256, - "title": "inert + hapi may be leaking file descriptors", - "url": "https://github.com/hapijs/hapi/issues/4256" - } - ], - "number": 295, - "url": "https://github.com/hapijs/hapi/milestone/295", - "version": "20.1.4" - }, - { - "date": "2021-05-10T14:52:40Z", - "id": 6573706, - "issues": [ - { - "id": 881287608, - "labels": ["dependency"], - "number": 4250, - "title": "Update to mimos v6", - "url": "https://github.com/hapijs/hapi/pull/4250" - } - ], - "number": 294, - "url": "https://github.com/hapijs/hapi/milestone/294", - "version": "20.1.3" - }, - { - "date": "2021-03-20T22:46:32Z", - "id": 6549943, - "issues": [ - { - "id": 836880460, - "labels": ["test"], - "number": 4239, - "title": "Fix abort test timing to be consistent from node v12 through v16", - "url": "https://github.com/hapijs/hapi/pull/4239" - }, - { - "id": 808623493, - "labels": ["dependency"], - "number": 4231, - "title": "Update dependencies version range", - "url": "https://github.com/hapijs/hapi/pull/4231" - }, - { - "id": 792463127, - "labels": ["feature"], - "number": 4225, - "title": "Future-proof hapi for node v16, rely on res close rather than req", - "url": "https://github.com/hapijs/hapi/pull/4225" - }, - { - "id": 607041996, - "labels": ["feature", "test"], - "number": 4095, - "title": "Rely on stream.destroy() whenever available", - "url": "https://github.com/hapijs/hapi/pull/4095" - } - ], - "number": 293, - "url": "https://github.com/hapijs/hapi/milestone/293", - "version": "20.1.2" - }, - { - "date": "2021-03-16T02:11:37Z", - "id": 6351878, - "issues": [ - { - "id": 820738659, - "labels": ["bug"], - "number": 4234, - "title": "Allow for res to have already closed during transmission", - "url": "https://github.com/hapijs/hapi/pull/4234" - } - ], - "number": 291, - "url": "https://github.com/hapijs/hapi/milestone/291", - "version": "20.1.1" - }, - { - "date": "2021-01-25T23:56:24Z", - "id": 6140724, - "issues": [ - { - "id": 788709584, - "labels": ["test"], - "number": 4221, - "title": "Fix tests for citgm", - "url": "https://github.com/hapijs/hapi/pull/4221" - }, - { - "id": 786420823, - "labels": ["feature"], - "number": 4219, - "title": "Add policy event", - "url": "https://github.com/hapijs/hapi/pull/4219" - }, - { - "id": 757033446, - "labels": ["feature"], - "number": 4203, - "title": "Add closing event", - "url": "https://github.com/hapijs/hapi/pull/4203" - }, - { - "id": 746996061, - "labels": ["feature"], - "number": 4194, - "title": "Add a 'closing' event", - "url": "https://github.com/hapijs/hapi/issues/4194" - }, - { - "id": 637484382, - "labels": ["feature"], - "number": 4104, - "title": "Track cache policies", - "url": "https://github.com/hapijs/hapi/issues/4104" - } - ], - "number": 290, - "url": "https://github.com/hapijs/hapi/milestone/290", - "version": "20.1.0" - }, - { - "date": "2020-11-23T20:58:34Z", - "id": 6092827, - "issues": [ - { - "id": 743487288, - "labels": ["bug"], - "number": 4191, - "title": "Preserve original response status on error after write, fix status message", - "url": "https://github.com/hapijs/hapi/pull/4191" - }, - { - "id": 738320654, - "labels": ["bug"], - "number": 4182, - "title": "server.inject does not reflect actual HTTP response in case of stream error", - "url": "https://github.com/hapijs/hapi/issues/4182" - } - ], - "number": 289, - "url": "https://github.com/hapijs/hapi/milestone/289", - "version": "20.0.3" - }, - { - "date": "2020-11-11T03:44:29Z", - "id": 5911847, - "issues": [ - { - "id": 710405673, - "labels": ["dependency"], - "number": 4167, - "title": "upgrade to labv24", - "url": "https://github.com/hapijs/hapi/pull/4167" - }, - { - "id": 596304098, - "labels": ["bug"], - "number": 4089, - "title": "[default-scope] Accept default scope as a valid route scope", - "url": "https://github.com/hapijs/hapi/pull/4089" - }, - { - "id": 592597963, - "labels": ["bug"], - "number": 4083, - "title": "Default auth scope not compatible with route auth scope", - "url": "https://github.com/hapijs/hapi/issues/4083" - } - ], - "number": 288, - "url": "https://github.com/hapijs/hapi/milestone/288", - "version": "20.0.2" - }, - { - "date": "2020-09-24T02:24:20Z", - "id": 5864349, - "issues": [ - { - "id": 707328668, - "labels": ["bug"], - "number": 4162, - "title": "Use response instead of request when marshalling", - "url": "https://github.com/hapijs/hapi/pull/4162" - }, - { - "id": 707193771, - "labels": ["bug"], - "number": 4161, - "title": "fix: check if _isPayloadSupported is set", - "url": "https://github.com/hapijs/hapi/pull/4161" - }, - { - "id": 698106080, - "labels": ["dependency"], - "number": 4156, - "title": "update handlebars dependency version", - "url": "https://github.com/hapijs/hapi/pull/4156" - } - ], - "number": 287, - "url": "https://github.com/hapijs/hapi/milestone/287", - "version": "20.0.1" - }, - { - "date": "2020-08-11T19:57:02Z", - "id": 5662393, - "issues": [ - { - "id": 676451335, - "labels": ["test"], - "number": 4140, - "title": "update to travis templates", - "url": "https://github.com/hapijs/hapi/pull/4140" - }, - { - "id": 676416952, - "labels": ["dependency"], - "number": 4139, - "title": "update most out of date dependencies", - "url": "https://github.com/hapijs/hapi/pull/4139" - }, - { - "id": 676238578, - "labels": ["breaking changes", "release notes"], - "number": 4138, - "title": "20.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/4138" - }, - { - "id": 673660011, - "labels": ["bug"], - "number": 4134, - "title": "headers: avoid sending null content-type", - "url": "https://github.com/hapijs/hapi/pull/4134" - }, - { - "id": 673580727, - "labels": ["support"], - "number": 4133, - "title": "Content-type header is null when empty response is returned", - "url": "https://github.com/hapijs/hapi/issues/4133" - }, - { - "id": 673067097, - "labels": [], - "number": 4132, - "title": "README needs this change to parse the slogan for site", - "url": "https://github.com/hapijs/hapi/pull/4132" - }, - { - "id": 669487919, - "labels": [], - "number": 4130, - "title": "fixed teamwork version", - "url": "https://github.com/hapijs/hapi/pull/4130" - }, - { - "id": 664810668, - "labels": [], - "number": 4123, - "title": "Removing the route timeout validation", - "url": "https://github.com/hapijs/hapi/pull/4123" - }, - { - "id": 664772019, - "labels": ["support"], - "number": 4122, - "title": "Payload timeout must be shorter than socket timeout", - "url": "https://github.com/hapijs/hapi/issues/4122" - }, - { - "id": 663084957, - "labels": ["feature"], - "number": 4117, - "title": "Implement `isInjected` read-only request property to indicate request…", - "url": "https://github.com/hapijs/hapi/pull/4117" - }, - { - "id": 662285944, - "labels": ["feature"], - "number": 4116, - "title": "Improved injected request detection", - "url": "https://github.com/hapijs/hapi/issues/4116" - }, - { - "id": 658456116, - "labels": ["bug", "dependency"], - "number": 4115, - "title": "Replace joi with validate", - "url": "https://github.com/hapijs/hapi/pull/4115" - }, - { - "id": 655972076, - "labels": ["breaking changes"], - "number": 4113, - "title": "The future of the hapi project", - "url": "https://github.com/hapijs/hapi/issues/4113" - } - ], - "number": 286, - "url": "https://github.com/hapijs/hapi/milestone/286", - "version": "20.0.0" - }, - { - "date": "2020-07-17T19:34:46Z", - "id": 5103598, - "issues": [ - { - "id": 585448329, - "labels": ["feature"], - "number": 4077, - "title": "Decorate response object", - "url": "https://github.com/hapijs/hapi/issues/4077" - }, - { - "id": 581838954, - "labels": ["feature"], - "number": 4073, - "title": "Add new ext onPostResponse", - "url": "https://github.com/hapijs/hapi/pull/4073" - }, - { - "id": 580787811, - "labels": ["bug"], - "number": 4072, - "title": "Response Event For Aborted Requests Has Status Code Of 200", - "url": "https://github.com/hapijs/hapi/issues/4072" - }, - { - "id": 565633437, - "labels": ["feature"], - "number": 4051, - "title": "Expose (likely?) Content-Type on response object", - "url": "https://github.com/hapijs/hapi/issues/4051" - }, - { - "id": 560704390, - "labels": ["feature", "dependency"], - "number": 4041, - "title": "How to access catbox client instances through the framework?", - "url": "https://github.com/hapijs/hapi/issues/4041" - } - ], - "number": 278, - "url": "https://github.com/hapijs/hapi/milestone/278", - "version": "19.2.0" - }, - { - "date": "2020-02-13T19:15:37Z", - "id": 5068413, - "issues": [ - { - "id": 562414219, - "labels": ["dependency"], - "number": 4043, - "title": "Update deps", - "url": "https://github.com/hapijs/hapi/issues/4043" - }, - { - "id": 551956671, - "labels": ["bug"], - "number": 4027, - "title": "Problem with settings global request.payload.multipart to true in Hapi v19", - "url": "https://github.com/hapijs/hapi/issues/4027" - } - ], - "number": 277, - "url": "https://github.com/hapijs/hapi/milestone/277", - "version": "19.1.1" - }, - { - "date": "2020-02-03T21:33:54Z", - "id": 5010095, - "issues": [ - { - "id": 555581366, - "labels": ["feature", "bug", "$"], - "number": 4034, - "title": "request.info.remoteAddress / request.info.remotePort undefined after connection closed (request aborted)", - "url": "https://github.com/hapijs/hapi/issues/4034" - } - ], - "number": 276, - "url": "https://github.com/hapijs/hapi/milestone/276", - "version": "19.1.0" - }, - { - "date": "2020-01-16T10:18:43Z", - "id": 4998942, - "issues": [ - { - "id": 550708113, - "labels": ["dependency"], - "number": 4026, - "title": "Update deps", - "url": "https://github.com/hapijs/hapi/issues/4026" - } - ], - "number": 275, - "url": "https://github.com/hapijs/hapi/milestone/275", - "version": "19.0.5" - }, - { - "date": "2020-01-13T11:42:05Z", - "id": 4997925, - "issues": [ - { - "id": 548875661, - "labels": ["bug"], - "number": 4022, - "title": "Revert #4021", - "url": "https://github.com/hapijs/hapi/issues/4022" - } - ], - "number": 274, - "url": "https://github.com/hapijs/hapi/milestone/274", - "version": "19.0.4" - }, - { - "date": "2020-01-13T02:32:28Z", - "id": 4995121, - "issues": [ - { - "id": 548671468, - "labels": ["bug"], - "number": 4021, - "title": "Retain '' result in inject in 204 response", - "url": "https://github.com/hapijs/hapi/issues/4021" - } - ], - "number": 273, - "url": "https://github.com/hapijs/hapi/milestone/273", - "version": "19.0.3" - }, - { - "date": "2020-01-10T17:57:52Z", - "id": 4993606, - "issues": [ - { - "id": 548208534, - "labels": ["bug"], - "number": 4020, - "title": "support JSON.stringify() of request.info", - "url": "https://github.com/hapijs/hapi/pull/4020" - }, - { - "id": 548191803, - "labels": ["bug"], - "number": 4019, - "title": "Feature request: custom toJSON() method for request.info", - "url": "https://github.com/hapijs/hapi/issues/4019" - } - ], - "number": 272, - "url": "https://github.com/hapijs/hapi/milestone/272", - "version": "19.0.2" - }, - { - "date": "2020-01-10T07:18:36Z", - "id": 4992717, - "issues": [ - { - "id": 547908379, - "labels": ["bug"], - "number": 4018, - "title": "Override request.url in setUrl()", - "url": "https://github.com/hapijs/hapi/issues/4018" - } - ], - "number": 271, - "url": "https://github.com/hapijs/hapi/milestone/271", - "version": "19.0.1" - }, - { - "date": "2020-01-10T04:22:19Z", - "id": 3986310, - "issues": [ - { - "id": 547835143, - "labels": ["breaking changes", "release notes"], - "number": 4017, - "title": "19.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/4017" - }, - { - "id": 545883662, - "labels": ["feature", "breaking changes"], - "number": 4015, - "title": "Do not override request.payload if set manually in onRequest", - "url": "https://github.com/hapijs/hapi/issues/4015" - }, - { - "id": 543282951, - "labels": ["non issue", "breaking changes"], - "number": 4013, - "title": "Use private class fields", - "url": "https://github.com/hapijs/hapi/issues/4013" - }, - { - "id": 543067316, - "labels": ["breaking changes", "dependency"], - "number": 4012, - "title": "Drop node 10", - "url": "https://github.com/hapijs/hapi/issues/4012" - }, - { - "id": 542899039, - "labels": ["breaking changes"], - "number": 4011, - "title": "Change scoped plugins name handling", - "url": "https://github.com/hapijs/hapi/issues/4011" - }, - { - "id": 530179476, - "labels": ["feature", "breaking changes"], - "number": 4006, - "title": "server.validator()", - "url": "https://github.com/hapijs/hapi/issues/4006" - }, - { - "id": 523646484, - "labels": ["feature"], - "number": 4002, - "title": "fix(auth): properly populate request.auth on failed auth", - "url": "https://github.com/hapijs/hapi/pull/4002" - }, - { - "id": 523087610, - "labels": ["feature"], - "number": 4000, - "title": "auth scheme artifacts are dropped when mode is not 'try'", - "url": "https://github.com/hapijs/hapi/issues/4000" - }, - { - "id": 521851456, - "labels": ["bug"], - "number": 3996, - "title": "Decorate requests with symbols with apply=true", - "url": "https://github.com/hapijs/hapi/pull/3996" - }, - { - "id": 519291194, - "labels": ["bug"], - "number": 3995, - "title": "Fix ? in fragment part", - "url": "https://github.com/hapijs/hapi/issues/3995" - }, - { - "id": 506349283, - "labels": ["feature"], - "number": 3987, - "title": "Support SameSite=None for cookies", - "url": "https://github.com/hapijs/hapi/issues/3987" - }, - { - "id": 493703905, - "labels": ["breaking changes"], - "number": 3977, - "title": "Remove request queue (options.load.concurrent)", - "url": "https://github.com/hapijs/hapi/issues/3977" - }, - { - "id": 493682963, - "labels": ["breaking changes", "dependency"], - "number": 3976, - "title": "Update hapijs/joi to 16.0.1 from 15.1.1", - "url": "https://github.com/hapijs/hapi/issues/3976" - }, - { - "id": 406010887, - "labels": ["breaking changes"], - "number": 3920, - "title": "Change routes.payload.multipart to false by default", - "url": "https://github.com/hapijs/hapi/issues/3920" - }, - { - "id": 406010848, - "labels": ["breaking changes"], - "number": 3919, - "title": "Change emptyStatusCode to 204 by default", - "url": "https://github.com/hapijs/hapi/issues/3919" - }, - { - "id": 401021205, - "labels": ["breaking changes"], - "number": 3910, - "title": "Drop support for node v8", - "url": "https://github.com/hapijs/hapi/issues/3910" - } - ], - "number": 254, - "url": "https://github.com/hapijs/hapi/milestone/254", - "version": "19.0.0" - }, - { - "date": "2020-07-05T01:17:51Z", - "id": 5103747, - "issues": [ - { - "id": 650981414, - "labels": ["dependency", "lts", "commercial"], - "number": 4110, - "title": "Update deps", - "url": "https://github.com/hapijs/hapi/issues/4110" - } - ], - "number": 279, - "url": "https://github.com/hapijs/hapi/milestone/279", - "version": "18.4.2" - }, - { - "date": "2020-02-13T20:05:31Z", - "id": 4659692, - "issues": [ - { - "id": 564920093, - "labels": ["dependency"], - "number": 4046, - "title": "Update deps", - "url": "https://github.com/hapijs/hapi/issues/4046" - } - ], - "number": 270, - "url": "https://github.com/hapijs/hapi/milestone/270", - "version": "18.4.1" - }, - { - "date": "2019-09-15T06:08:17Z", - "id": 4574367, - "issues": [ - { - "id": 493682823, - "labels": ["feature"], - "number": 3975, - "title": "Support joi v16", - "url": "https://github.com/hapijs/hapi/issues/3975" - }, - { - "id": 493519002, - "labels": ["bug"], - "number": 3974, - "title": "Handle errors thrown during error response transmit", - "url": "https://github.com/hapijs/hapi/issues/3974" - }, - { - "id": 483096912, - "labels": ["bug"], - "number": 3971, - "title": "Fix some corner case client errors", - "url": "https://github.com/hapijs/hapi/pull/3971" - }, - { - "id": 480393373, - "labels": ["bug"], - "number": 3965, - "title": "Multiple leading slashes in path causes hostname to be parsed incorrectly", - "url": "https://github.com/hapijs/hapi/issues/3965" - }, - { - "id": 478527618, - "labels": ["feature"], - "number": 3964, - "title": "Custom \"content-encoding\" without vary header", - "url": "https://github.com/hapijs/hapi/issues/3964" - }, - { - "id": 456957218, - "labels": ["feature"], - "number": 3956, - "title": "ETags behind gateway that compresses responses", - "url": "https://github.com/hapijs/hapi/issues/3956" - }, - { - "id": 437865210, - "labels": ["feature"], - "number": 3946, - "title": "Add support for Chrome Apps and WebExtensions", - "url": "https://github.com/hapijs/hapi/pull/3946" - } - ], - "number": 269, - "url": "https://github.com/hapijs/hapi/milestone/269", - "version": "18.4.0" - }, - { - "date": "2019-08-15T07:17:27Z", - "id": 4244788, - "issues": [ - { - "id": 481027155, - "labels": ["dependency", "commercial"], - "number": 3968, - "title": "v18.3.2", - "url": "https://github.com/hapijs/hapi/pull/3968" - }, - { - "id": 480907613, - "labels": ["dependency"], - "number": 3967, - "title": "Update deps", - "url": "https://github.com/hapijs/hapi/issues/3967" - } - ], - "number": 267, - "url": "https://github.com/hapijs/hapi/milestone/267", - "version": "18.3.2" - }, - { - "date": "2019-04-19T21:02:42Z", - "id": 4244770, - "issues": [ - { - "id": 432381565, - "labels": ["bug"], - "number": 3943, - "title": "Revise list of hop-by-hop headers", - "url": "https://github.com/hapijs/hapi/issues/3943" - } - ], - "number": 266, - "url": "https://github.com/hapijs/hapi/milestone/266", - "version": "18.3.1" - }, - { - "date": "2019-04-19T20:46:32Z", - "id": 4196302, - "issues": [ - { - "id": 435299676, - "labels": ["feature"], - "number": 3945, - "title": "Support ext method timeout", - "url": "https://github.com/hapijs/hapi/issues/3945" - }, - { - "id": 432446813, - "labels": ["bug"], - "number": 3944, - "title": "server.stop timeout does not apply to onPreStop extension point", - "url": "https://github.com/hapijs/hapi/issues/3944" - } - ], - "number": 264, - "url": "https://github.com/hapijs/hapi/milestone/264", - "version": "18.3.0" - }, - { - "date": "2019-04-03T05:07:42Z", - "id": 4029951, - "issues": [ - { - "id": 428483685, - "labels": ["breaking changes", "dependency"], - "number": 3941, - "title": "Change module namespace", - "url": "https://github.com/hapijs/hapi/issues/3941" - } - ], - "number": 259, - "url": "https://github.com/hapijs/hapi/milestone/259", - "version": "18.2.0" - }, - { - "date": "2019-02-04T21:52:56Z", - "id": 4019216, - "issues": [ - { - "id": 406529637, - "labels": ["security", "dependency"], - "number": 3922, - "title": "Update hapijs/bourne to 1.1.1 from 1.0.0", - "url": "https://github.com/hapijs/hapi/issues/3922" - }, - { - "id": 405436446, - "labels": ["feature"], - "number": 3917, - "title": "Expose bourne options", - "url": "https://github.com/hapijs/hapi/issues/3917" - } - ], - "number": 257, - "url": "https://github.com/hapijs/hapi/milestone/257", - "version": "18.1.0" - }, - { - "date": "2019-01-31T20:14:38Z", - "id": 3985320, - "issues": [ - { - "id": 405413941, - "labels": ["security", "dependency"], - "number": 3914, - "title": "Update hapijs/statehood to 6.0.9 from 6.0.8", - "url": "https://github.com/hapijs/hapi/issues/3914" - }, - { - "id": 405413100, - "labels": ["security", "dependency"], - "number": 3912, - "title": "Update hapijs/subtext to 6.0.12 from 6.0.11", - "url": "https://github.com/hapijs/hapi/issues/3912" - }, - { - "id": 400873054, - "labels": ["bug"], - "number": 3909, - "title": "Route validation should throw AssertionError", - "url": "https://github.com/hapijs/hapi/issues/3909" - } - ], - "number": 253, - "url": "https://github.com/hapijs/hapi/milestone/253", - "version": "18.0.1" - }, - { - "date": "2019-01-18T20:13:41Z", - "id": 3799452, - "issues": [ - { - "id": 400861491, - "labels": ["dependency"], - "number": 3908, - "title": "Update hapijs/vise to 3.0.2 from 3.0.1", - "url": "https://github.com/hapijs/hapi/issues/3908" - }, - { - "id": 400861176, - "labels": ["dependency"], - "number": 3907, - "title": "Update hapijs/teamwork to 3.0.3 from 3.0.2", - "url": "https://github.com/hapijs/hapi/issues/3907" - }, - { - "id": 400860098, - "labels": ["dependency"], - "number": 3906, - "title": "Update hapijs/joi to 14.3.1 from 14.0.4", - "url": "https://github.com/hapijs/hapi/issues/3906" - }, - { - "id": 400859400, - "labels": ["dependency"], - "number": 3905, - "title": "Update hapijs/boom to 7.3.0 from 7.2.2", - "url": "https://github.com/hapijs/hapi/issues/3905" - }, - { - "id": 400854809, - "labels": ["dependency"], - "number": 3904, - "title": "Update hapijs/catbox to 10.0.6 from 10.0.5", - "url": "https://github.com/hapijs/hapi/issues/3904" - }, - { - "id": 397933436, - "labels": ["feature", "breaking changes"], - "number": 3901, - "title": "Change request.info.responded to indicate success and add request.info.completed", - "url": "https://github.com/hapijs/hapi/issues/3901" - }, - { - "id": 397741918, - "labels": ["test"], - "number": 3900, - "title": "fix(transmit test): add missing await on team.work", - "url": "https://github.com/hapijs/hapi/pull/3900" - }, - { - "id": 397041052, - "labels": ["bug"], - "number": 3898, - "title": "Error tag incorrectly set (node 11)", - "url": "https://github.com/hapijs/hapi/issues/3898" - }, - { - "id": 396489738, - "labels": ["feature", "breaking changes"], - "number": 3897, - "title": "Return credentials and artifacts from server.auth.test()", - "url": "https://github.com/hapijs/hapi/pull/3897" - }, - { - "id": 385852996, - "labels": ["bug"], - "number": 3891, - "title": "No Content-Type header when returning a stream", - "url": "https://github.com/hapijs/hapi/issues/3891" - }, - { - "id": 383960863, - "labels": ["breaking changes"], - "number": 3887, - "title": "Change inject auth to object and require strategy name", - "url": "https://github.com/hapijs/hapi/issues/3887" - }, - { - "id": 383382588, - "labels": ["bug"], - "number": 3884, - "title": "\"Cannot set headers after they are sent to the client\" after returning h.abandon", - "url": "https://github.com/hapijs/hapi/issues/3884" - }, - { - "id": 382422877, - "labels": ["feature"], - "number": 3882, - "title": "Add validation for cookies (alt impl)", - "url": "https://github.com/hapijs/hapi/pull/3882" - }, - { - "id": 381865396, - "labels": ["bug"], - "number": 3879, - "title": "Set cookie autoValue only when no value received", - "url": "https://github.com/hapijs/hapi/pull/3879" - }, - { - "id": 380990479, - "labels": ["bug", "breaking changes"], - "number": 3878, - "title": "Aborted requests show status code 200 in response event", - "url": "https://github.com/hapijs/hapi/issues/3878" - }, - { - "id": 379977612, - "labels": ["breaking changes"], - "number": 3876, - "title": "Rework cache provisioning apis", - "url": "https://github.com/hapijs/hapi/issues/3876" - }, - { - "id": 379490579, - "labels": ["dependency"], - "number": 3875, - "title": "Update hapijs/bounce to 1.2.3 from 1.2.2", - "url": "https://github.com/hapijs/hapi/issues/3875" - }, - { - "id": 379490535, - "labels": ["dependency"], - "number": 3874, - "title": "Update hapijs/hoek to 6.1.2 from 6.0.2", - "url": "https://github.com/hapijs/hapi/issues/3874" - }, - { - "id": 379490416, - "labels": ["feature", "dependency"], - "number": 3873, - "title": "Update hapijs/podium to 3.2.0 from 3.1.4", - "url": "https://github.com/hapijs/hapi/issues/3873" - }, - { - "id": 377743660, - "labels": ["breaking changes", "release notes"], - "number": 3871, - "title": "18.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/3871" - }, - { - "id": 377742280, - "labels": ["breaking changes", "dependency"], - "number": 3870, - "title": "Update hapijs/catbox-memory to 4.0.1 from 3.1.3", - "url": "https://github.com/hapijs/hapi/issues/3870" - }, - { - "id": 372419276, - "labels": ["feature"], - "number": 3832, - "title": "Feature: built in cookie validation", - "url": "https://github.com/hapijs/hapi/issues/3832" - }, - { - "id": 370841329, - "labels": ["bug"], - "number": 3831, - "title": "State autoValue function overwrites existing cookie value", - "url": "https://github.com/hapijs/hapi/issues/3831" - }, - { - "id": 358974954, - "labels": ["feature", "breaking changes"], - "number": 3822, - "title": "Use WHATWG URL for request.url", - "url": "https://github.com/hapijs/hapi/pull/3822" - } - ], - "number": 251, - "url": "https://github.com/hapijs/hapi/milestone/251", - "version": "18.0.0" - }, - { - "date": "2021-02-01T23:45:11Z", - "id": 6380194, - "issues": [ - { - "id": 798799262, - "labels": ["bug", "commercial"], - "number": 4226, - "title": "v17 fails to include response payload in POST requests", - "url": "https://github.com/hapijs/hapi/issues/4226" - } - ], - "number": 292, - "url": "https://github.com/hapijs/hapi/milestone/292", - "version": "17.9.4" - }, - { - "date": "2020-07-05T00:39:14Z", - "id": 5103767, - "issues": [ - { - "id": 650977275, - "labels": ["dependency", "lts", "commercial"], - "number": 4109, - "title": "Update deps", - "url": "https://github.com/hapijs/hapi/issues/4109" - } - ], - "number": 280, - "url": "https://github.com/hapijs/hapi/milestone/280", - "version": "17.9.3" - }, - { - "date": "2020-02-13T20:12:34Z", - "id": 4218799, - "issues": [ - { - "id": 564922743, - "labels": ["dependency"], - "number": 4047, - "title": "Update deps", - "url": "https://github.com/hapijs/hapi/issues/4047" - }, - { - "id": 550103341, - "labels": ["dependency", "commercial"], - "number": 4025, - "title": "Update deps", - "url": "https://github.com/hapijs/hapi/issues/4025" - } - ], - "number": 265, - "url": "https://github.com/hapijs/hapi/milestone/265", - "version": "17.9.2" - }, - { - "date": "2019-04-10T20:34:14Z", - "id": 4152715, - "issues": [ - { - "id": 431700943, - "labels": ["dependency"], - "number": 3942, - "title": "Change module namespace v17", - "url": "https://github.com/hapijs/hapi/issues/3942" - } - ], - "number": 261, - "url": "https://github.com/hapijs/hapi/milestone/261", - "version": "17.9.0" - }, - { - "date": "2019-03-19T01:22:04Z", - "id": 4152709, - "issues": [ - { - "id": 399998487, - "labels": ["bug", "lts"], - "number": 3903, - "title": "Handle signals in onRequest. Closes #3884", - "url": "https://github.com/hapijs/hapi/pull/3903" - } - ], - "number": 260, - "url": "https://github.com/hapijs/hapi/milestone/260", - "version": "17.8.5" - }, - { - "date": "2019-02-04T21:36:13Z", - "id": 4029950, - "issues": [ - { - "id": 406528694, - "labels": ["security", "dependency", "lts"], - "number": 3921, - "title": "Update hapijs/bourne to 1.1.1 from 1.0.0", - "url": "https://github.com/hapijs/hapi/issues/3921" - } - ], - "number": 258, - "url": "https://github.com/hapijs/hapi/milestone/258", - "version": "17.8.4" - }, - { - "date": "2019-01-31T20:11:34Z", - "id": 4019213, - "issues": [ - { - "id": 405417304, - "labels": ["bug"], - "number": 3915, - "title": "Shrinkwrap typo", - "url": "https://github.com/hapijs/hapi/issues/3915" - } - ], - "number": 256, - "url": "https://github.com/hapijs/hapi/milestone/256", - "version": "17.8.3" - }, - { - "date": "2019-01-31T20:02:39Z", - "id": 4019205, - "issues": [ - { - "id": 405413798, - "labels": ["security", "dependency", "lts"], - "number": 3913, - "title": "Update hapijs/statehood to 6.0.9 from 6.0.8", - "url": "https://github.com/hapijs/hapi/issues/3913" - }, - { - "id": 405412982, - "labels": ["security", "dependency", "lts"], - "number": 3911, - "title": "Update hapijs/subtext to 6.0.12 from 6.0.11", - "url": "https://github.com/hapijs/hapi/issues/3911" - } - ], - "number": 255, - "url": "https://github.com/hapijs/hapi/milestone/255", - "version": "17.8.2" - }, - { - "date": "2018-11-23T04:19:19Z", - "id": 3842042, - "issues": [ - { - "id": 383700007, - "labels": ["bug"], - "number": 3886, - "title": "Protect against invalid strategy name in server.auth.verify()", - "url": "https://github.com/hapijs/hapi/issues/3886" - } - ], - "number": 252, - "url": "https://github.com/hapijs/hapi/milestone/252", - "version": "17.8.1" - }, - { - "date": "2018-11-23T04:18:03Z", - "id": 3798512, - "issues": [ - { - "id": 383651244, - "labels": ["feature"], - "number": 3885, - "title": "Support credentials verficiation", - "url": "https://github.com/hapijs/hapi/issues/3885" - } - ], - "number": 250, - "url": "https://github.com/hapijs/hapi/milestone/250", - "version": "17.8.0" - }, - { - "date": "2018-11-06T00:50:16Z", - "id": 3792422, - "issues": [ - { - "id": 377646691, - "labels": ["feature"], - "number": 3867, - "title": "Specify node, hapi, and plugin version requirements", - "url": "https://github.com/hapijs/hapi/issues/3867" - } - ], - "number": 247, - "url": "https://github.com/hapijs/hapi/milestone/247", - "version": "17.7.0" - }, - { - "date": "2018-11-03T04:32:26Z", - "id": 3791381, - "issues": [ - { - "id": 377022260, - "labels": ["non issue", "dependency"], - "number": 3863, - "title": "Remove engines", - "url": "https://github.com/hapijs/hapi/issues/3863" - } - ], - "number": 245, - "url": "https://github.com/hapijs/hapi/milestone/245", - "version": "17.6.4" - }, - { - "date": "2018-11-02T17:56:40Z", - "id": 3789281, - "issues": [ - { - "id": 376909914, - "labels": ["bug", "dependency"], - "number": 3860, - "title": "Update hapijs/subtext to 6.0.10 from 6.0.9", - "url": "https://github.com/hapijs/hapi/issues/3860" - } - ], - "number": 244, - "url": "https://github.com/hapijs/hapi/milestone/244", - "version": "17.6.3" - }, - { - "date": "2018-11-01T22:31:07Z", - "id": 3789276, - "issues": [ - { - "id": 376596055, - "labels": ["bug"], - "number": 3857, - "title": "Include shrinkwrap file in dist", - "url": "https://github.com/hapijs/hapi/issues/3857" - } - ], - "number": 243, - "url": "https://github.com/hapijs/hapi/milestone/243", - "version": "17.6.2" - }, - { - "date": "2018-11-01T22:26:51Z", - "id": 3685590, - "issues": [ - { - "id": 376584071, - "labels": ["dependency"], - "number": 3856, - "title": "Update hapijs/vise to 3.0.1 from 3.0.0", - "url": "https://github.com/hapijs/hapi/issues/3856" - }, - { - "id": 376583905, - "labels": ["dependency"], - "number": 3855, - "title": "Update hapijs/topo to 3.0.2 from 3.0.1", - "url": "https://github.com/hapijs/hapi/issues/3855" - }, - { - "id": 376583780, - "labels": ["dependency"], - "number": 3854, - "title": "Update hapijs/subtext to 6.0.9 from 6.0.7", - "url": "https://github.com/hapijs/hapi/issues/3854" - }, - { - "id": 376583667, - "labels": ["dependency"], - "number": 3853, - "title": "Update hapijs/statehood to 6.0.7 from 6.0.6", - "url": "https://github.com/hapijs/hapi/issues/3853" - }, - { - "id": 376583509, - "labels": ["dependency"], - "number": 3852, - "title": "Update hapijs/shot to 4.0.6 from 4.0.5", - "url": "https://github.com/hapijs/hapi/issues/3852" - }, - { - "id": 376583359, - "labels": ["dependency"], - "number": 3851, - "title": "Update hapijs/podium to 3.1.4 from 3.1.2", - "url": "https://github.com/hapijs/hapi/issues/3851" - }, - { - "id": 376583194, - "labels": ["dependency"], - "number": 3850, - "title": "Update jshttp/mime-db to 1.37.0 from 1.35.0", - "url": "https://github.com/hapijs/hapi/issues/3850" - }, - { - "id": 376583035, - "labels": ["dependency"], - "number": 3849, - "title": "Update hapijs/nigel to 3.0.3 from 3.0.1", - "url": "https://github.com/hapijs/hapi/issues/3849" - }, - { - "id": 376582886, - "labels": ["dependency"], - "number": 3848, - "title": "Update hapijs/mimos to 4.0.1 from 4.0.0", - "url": "https://github.com/hapijs/hapi/issues/3848" - }, - { - "id": 376582734, - "labels": ["dependency"], - "number": 3847, - "title": "Update hapijs/joi to 14.0.3 from 13.5.2", - "url": "https://github.com/hapijs/hapi/issues/3847" - }, - { - "id": 376582583, - "labels": ["dependency"], - "number": 3846, - "title": "Update hueniverse/iron to 5.0.5 from 5.0.3", - "url": "https://github.com/hapijs/hapi/issues/3846" - }, - { - "id": 376582457, - "labels": ["dependency"], - "number": 3845, - "title": "Update hapijs/heavy to 6.1.1 from 6.1.0", - "url": "https://github.com/hapijs/hapi/issues/3845" - }, - { - "id": 376582272, - "labels": ["dependency"], - "number": 3844, - "title": "Update hapijs/catbox-memory to 3.1.3 from 3.1.2", - "url": "https://github.com/hapijs/hapi/issues/3844" - }, - { - "id": 376582106, - "labels": ["dependency"], - "number": 3843, - "title": "Update hapijs/catbox to 10.0.4 from 10.0.3", - "url": "https://github.com/hapijs/hapi/issues/3843" - }, - { - "id": 376549405, - "labels": ["dependency"], - "number": 3842, - "title": "Update hapijs/call to 5.0.2 from 5.0.1", - "url": "https://github.com/hapijs/hapi/issues/3842" - }, - { - "id": 376549237, - "labels": ["dependency"], - "number": 3841, - "title": "Update hapijs/bounce to 1.2.1 from 1.2.0", - "url": "https://github.com/hapijs/hapi/issues/3841" - }, - { - "id": 376549028, - "labels": ["dependency"], - "number": 3840, - "title": "Update hapijs/boom to 7.2.1 from 7.2.0", - "url": "https://github.com/hapijs/hapi/issues/3840" - }, - { - "id": 376548775, - "labels": ["dependency"], - "number": 3839, - "title": "Update hapijs/b64 to 4.1.1 from 4.0.0", - "url": "https://github.com/hapijs/hapi/issues/3839" - }, - { - "id": 376548573, - "labels": ["dependency"], - "number": 3838, - "title": "Update hapijs/ammo to 3.0.2 from 3.0.1", - "url": "https://github.com/hapijs/hapi/issues/3838" - }, - { - "id": 376548360, - "labels": ["dependency"], - "number": 3837, - "title": "Update hapijs/accept to 3.1.2 from 3.0.2", - "url": "https://github.com/hapijs/hapi/issues/3837" - }, - { - "id": 375808720, - "labels": ["dependency"], - "number": 3836, - "title": "Update hapijs/wreck to 14.1.2 from 14.0.2", - "url": "https://github.com/hapijs/hapi/issues/3836" - }, - { - "id": 375803857, - "labels": ["dependency"], - "number": 3835, - "title": "Update hapijs/pez to 4.0.4 from 4.0.2", - "url": "https://github.com/hapijs/hapi/issues/3835" - }, - { - "id": 375803040, - "labels": ["dependency"], - "number": 3834, - "title": "Update hapijs/nigel to 3.0.3 from 3.0.1", - "url": "https://github.com/hapijs/hapi/issues/3834" - } - ], - "number": 242, - "url": "https://github.com/hapijs/hapi/milestone/242", - "version": "17.6.1" - }, - { - "date": "2018-09-25T07:56:15Z", - "id": 3680113, - "issues": [ - { - "id": 363451748, - "labels": ["feature"], - "number": 3827, - "title": "Expose request active status", - "url": "https://github.com/hapijs/hapi/issues/3827" - }, - { - "id": 363096298, - "labels": ["dependency"], - "number": 3826, - "title": "Update hapijs/catbox to 10.0.3 from 10.0.2", - "url": "https://github.com/hapijs/hapi/issues/3826" - } - ], - "number": 241, - "url": "https://github.com/hapijs/hapi/milestone/241", - "version": "17.6.0" - }, - { - "date": "2018-09-23T06:01:40Z", - "id": 3603223, - "issues": [ - { - "id": 358068763, - "labels": ["bug"], - "number": 3821, - "title": "onPreResponse not called when error returned/rethrown from failAction of error resp validation", - "url": "https://github.com/hapijs/hapi/issues/3821" - } - ], - "number": 240, - "url": "https://github.com/hapijs/hapi/milestone/240", - "version": "17.5.5" - }, - { - "date": "2018-08-28T07:39:24Z", - "id": 3603222, - "issues": [ - { - "id": 350962289, - "labels": ["bug"], - "number": 3813, - "title": "redirecting in onRequest throws Cannot read property 'isOriginMatch' of null", - "url": "https://github.com/hapijs/hapi/issues/3813" - } - ], - "number": 239, - "url": "https://github.com/hapijs/hapi/milestone/239", - "version": "17.5.4" - }, - { - "date": "2018-08-28T07:39:26Z", - "id": 3446720, - "issues": [ - { - "id": 346810689, - "labels": ["dependency"], - "number": 3808, - "title": "Update jshttp/mime-db to 1.35.0 from 1.33.0", - "url": "https://github.com/hapijs/hapi/issues/3808" - }, - { - "id": 346810427, - "labels": ["dependency"], - "number": 3807, - "title": "Update hapijs/joi to 13.5.2 from 13.2.0", - "url": "https://github.com/hapijs/hapi/issues/3807" - }, - { - "id": 324054757, - "labels": ["bug"], - "number": 3792, - "title": "Global cors and security options not respected in 404", - "url": "https://github.com/hapijs/hapi/issues/3792" - }, - { - "id": 316972095, - "labels": ["bug", "breaking changes"], - "number": 3782, - "title": "Content type on empty string payloads", - "url": "https://github.com/hapijs/hapi/issues/3782" - }, - { - "id": 289454520, - "labels": ["bug"], - "number": 3728, - "title": "request.response should be null when response failed to transmit", - "url": "https://github.com/hapijs/hapi/issues/3728" - } - ], - "number": 238, - "url": "https://github.com/hapijs/hapi/milestone/238", - "version": "17.5.3" - }, - { - "date": "2018-06-24T04:17:45Z", - "id": 3389333, - "issues": [ - { - "id": 335149527, - "labels": ["security", "dependency"], - "number": 3801, - "title": "Update hapijs/cryptiles to 4.1.2 from 4.1.1", - "url": "https://github.com/hapijs/hapi/issues/3801" - } - ], - "number": 237, - "url": "https://github.com/hapijs/hapi/milestone/237", - "version": "17.5.2" - }, - { - "date": "2018-05-31T05:27:06Z", - "id": 3362139, - "issues": [ - { - "id": 327573293, - "labels": ["bug"], - "number": 3796, - "title": "do not attach request decorations to a shared prototype, alternative approach.", - "url": "https://github.com/hapijs/hapi/pull/3796" - }, - { - "id": 283802053, - "labels": ["bug"], - "number": 3718, - "title": "Request decorations leak across server instances in same process", - "url": "https://github.com/hapijs/hapi/issues/3718" - } - ], - "number": 236, - "url": "https://github.com/hapijs/hapi/milestone/236", - "version": "17.5.1" - }, - { - "date": "2018-05-21T17:55:07Z", - "id": 3306375, - "issues": [ - { - "id": 322480992, - "labels": ["feature"], - "number": 3791, - "title": "support symbol properties in server.decorate()", - "url": "https://github.com/hapijs/hapi/pull/3791" - } - ], - "number": 235, - "url": "https://github.com/hapijs/hapi/milestone/235", - "version": "17.5.0" - }, - { - "date": "2018-04-29T00:45:55Z", - "id": 3236186, - "issues": [ - { - "id": 318677104, - "labels": ["dependency"], - "number": 3786, - "title": "Update hapijs/joi to 13.2.0 from 13.1.2", - "url": "https://github.com/hapijs/hapi/issues/3786" - }, - { - "id": 318676930, - "labels": ["dependency"], - "number": 3785, - "title": "Update hapijs/ammo to 3.0.1 from 3.0.0", - "url": "https://github.com/hapijs/hapi/issues/3785" - }, - { - "id": 318676906, - "labels": ["dependency"], - "number": 3784, - "title": "Update arb/big-time to 2.0.1 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/3784" - }, - { - "id": 311817806, - "labels": ["feature", "security"], - "number": 3775, - "title": "Add support for Referrer-Policy header", - "url": "https://github.com/hapijs/hapi/pull/3775" - } - ], - "number": 234, - "url": "https://github.com/hapijs/hapi/milestone/234", - "version": "17.4.0" - }, - { - "date": "2018-04-02T19:18:27Z", - "id": 3231906, - "issues": [ - { - "id": 308287329, - "labels": ["bug"], - "number": 3766, - "title": "Add PATCH to `created` status, better error msg", - "url": "https://github.com/hapijs/hapi/pull/3766" - }, - { - "id": 306425810, - "labels": ["bug"], - "number": 3765, - "title": "Respect a response status schema of true", - "url": "https://github.com/hapijs/hapi/pull/3765" - } - ], - "number": 233, - "url": "https://github.com/hapijs/hapi/milestone/233", - "version": "17.3.1" - }, - { - "date": "2018-03-31T00:32:19Z", - "id": 3192321, - "issues": [ - { - "id": 310197007, - "labels": ["dependency"], - "number": 3772, - "title": "Update hapijs/catbox-memory to 3.1.2 from 3.1.1", - "url": "https://github.com/hapijs/hapi/issues/3772" - }, - { - "id": 310196644, - "labels": ["dependency"], - "number": 3771, - "title": "Update hapijs/nigel to 3.0.1 from 3.0.2", - "url": "https://github.com/hapijs/hapi/issues/3771" - }, - { - "id": 310196376, - "labels": ["dependency"], - "number": 3770, - "title": "Update hapijs/pez to 4.0.2 from 4.0.1", - "url": "https://github.com/hapijs/hapi/issues/3770" - }, - { - "id": 310196206, - "labels": ["dependency"], - "number": 3769, - "title": "Update hapijs/statehood to 6.0.6 from 6.0.5", - "url": "https://github.com/hapijs/hapi/issues/3769" - }, - { - "id": 310195218, - "labels": ["dependency"], - "number": 3768, - "title": "Update hapijs/content to 4.0.5 from 4.0.4", - "url": "https://github.com/hapijs/hapi/issues/3768" - }, - { - "id": 310164402, - "labels": ["feature"], - "number": 3767, - "title": "server.control()", - "url": "https://github.com/hapijs/hapi/issues/3767" - } - ], - "number": 232, - "url": "https://github.com/hapijs/hapi/milestone/232", - "version": "17.3.0" - }, - { - "date": "2018-03-16T05:38:30Z", - "id": 3168274, - "issues": [ - { - "id": 305808087, - "labels": ["bug"], - "number": 3760, - "title": "Fix checksums", - "url": "https://github.com/hapijs/hapi/issues/3760" - } - ], - "number": 231, - "url": "https://github.com/hapijs/hapi/milestone/231", - "version": "17.2.3" - }, - { - "date": "2018-03-07T09:17:22Z", - "id": 3153088, - "issues": [ - { - "id": 303018989, - "labels": ["bug"], - "number": 3758, - "title": "Request log with function data sends incorrect data", - "url": "https://github.com/hapijs/hapi/issues/3758" - }, - { - "id": 298112216, - "labels": ["bug"], - "number": 3741, - "title": "Replace new Buffer()", - "url": "https://github.com/hapijs/hapi/pull/3741" - } - ], - "number": 230, - "url": "https://github.com/hapijs/hapi/milestone/230", - "version": "17.2.2" - }, - { - "date": "2018-03-01T09:46:04Z", - "id": 2992397, - "issues": [ - { - "id": 301333655, - "labels": ["dependency"], - "number": 3756, - "title": "Update hapijs/shot to 4.0.5 from 4.0.3", - "url": "https://github.com/hapijs/hapi/issues/3756" - }, - { - "id": 301333114, - "labels": ["dependency"], - "number": 3755, - "title": "Update hapijs/joi to 13.1.2 from 13.0.1", - "url": "https://github.com/hapijs/hapi/issues/3755" - }, - { - "id": 301332841, - "labels": ["dependency"], - "number": 3754, - "title": "Update jshttp/mime-db to 1.33.0 from 1.31.0", - "url": "https://github.com/hapijs/hapi/issues/3754" - }, - { - "id": 301332535, - "labels": ["dependency"], - "number": 3753, - "title": "Update hapijs/hoek to 5.0.3 from 5.0.2", - "url": "https://github.com/hapijs/hapi/issues/3753" - }, - { - "id": 301331991, - "labels": ["dependency"], - "number": 3752, - "title": "Update hapijs/content to 4.0.4 from 4.0.3", - "url": "https://github.com/hapijs/hapi/issues/3752" - }, - { - "id": 301331607, - "labels": ["dependency"], - "number": 3751, - "title": "Update hueniverse/bounce to 1.2.0 from 1.0.3", - "url": "https://github.com/hapijs/hapi/issues/3751" - }, - { - "id": 301331282, - "labels": ["dependency"], - "number": 3750, - "title": "Update hapijs/boom to 7.2.0 from 7.1.1", - "url": "https://github.com/hapijs/hapi/issues/3750" - }, - { - "id": 283694730, - "labels": ["bug", "breaking changes"], - "number": 3717, - "title": "Prefer user added encoding over built-in", - "url": "https://github.com/hapijs/hapi/pull/3717" - }, - { - "id": 277813873, - "labels": ["bug", "breaking changes"], - "number": 3701, - "title": "Enable registered encoders to have higher priority than built-in", - "url": "https://github.com/hapijs/hapi/issues/3701" - } - ], - "number": 229, - "url": "https://github.com/hapijs/hapi/milestone/229", - "version": "17.2.1" - }, - { - "date": "2017-12-21T06:51:13Z", - "id": 2934209, - "issues": [ - { - "id": 283408638, - "labels": ["feature"], - "number": 3715, - "title": "Basic concurrent load queue", - "url": "https://github.com/hapijs/hapi/issues/3715" - }, - { - "id": 283408075, - "labels": ["dependency"], - "number": 3714, - "title": "Update hapijs/heavy to 6.1.0 from 6.0.0", - "url": "https://github.com/hapijs/hapi/issues/3714" - }, - { - "id": 282251179, - "labels": ["bug"], - "number": 3712, - "title": "Missing return in dispatch()", - "url": "https://github.com/hapijs/hapi/issues/3712" - }, - { - "id": 282088889, - "labels": ["bug"], - "number": 3711, - "title": "Cache stop() errors are not handled", - "url": "https://github.com/hapijs/hapi/issues/3711" - }, - { - "id": 280105794, - "labels": ["bug"], - "number": 3708, - "title": "Errors in \"onPostStart\" ext leave listener active forever", - "url": "https://github.com/hapijs/hapi/issues/3708" - }, - { - "id": 278000695, - "labels": ["bug"], - "number": 3702, - "title": "Fix server method registered as object without options", - "url": "https://github.com/hapijs/hapi/pull/3702" - } - ], - "number": 228, - "url": "https://github.com/hapijs/hapi/milestone/228", - "version": "17.2.0" - }, - { - "date": "2017-11-23T19:08:56Z", - "id": 2933006, - "issues": [ - { - "id": 276056371, - "labels": ["bug"], - "number": 3688, - "title": "Hapi v17.0.2 cors origin", - "url": "https://github.com/hapijs/hapi/issues/3688" - } - ], - "number": 227, - "url": "https://github.com/hapijs/hapi/milestone/227", - "version": "17.1.1" - }, - { - "date": "2017-11-23T09:46:49Z", - "id": 2927653, - "issues": [ - { - "id": 276312954, - "labels": ["feature"], - "number": 3691, - "title": "Route rules", - "url": "https://github.com/hapijs/hapi/issues/3691" - }, - { - "id": 276117818, - "labels": ["feature"], - "number": 3689, - "title": "Include method name in error", - "url": "https://github.com/hapijs/hapi/pull/3689" - }, - { - "id": 149235284, - "labels": ["feature"], - "number": 3125, - "title": "Allow decoration overrides with parent access support", - "url": "https://github.com/hapijs/hapi/issues/3125" - } - ], - "number": 226, - "url": "https://github.com/hapijs/hapi/milestone/226", - "version": "17.1.0" - }, - { - "date": "2017-11-21T07:23:09Z", - "id": 2888373, - "issues": [ - { - "id": 275599759, - "labels": ["bug"], - "number": 3686, - "title": "Log errors thrown in custom response close method", - "url": "https://github.com/hapijs/hapi/issues/3686" - }, - { - "id": 273533649, - "labels": ["feature"], - "number": 3679, - "title": "[enhancement] https accept-encoding header brotli for chrome", - "url": "https://github.com/hapijs/hapi/pull/3679" - }, - { - "id": 273118255, - "labels": ["feature"], - "number": 3675, - "title": "Optimize accept-encoding for the most common headers", - "url": "https://github.com/hapijs/hapi/issues/3675" - }, - { - "id": 273046823, - "labels": ["dependency"], - "number": 3674, - "title": "Update hapijs/cryptiles to 4.1.1 from 4.1.0", - "url": "https://github.com/hapijs/hapi/issues/3674" - } - ], - "number": 225, - "url": "https://github.com/hapijs/hapi/milestone/225", - "version": "17.0.2" - }, - { - "date": "2017-11-05T09:55:38Z", - "id": 2888372, - "issues": [ - { - "id": 271258691, - "labels": ["bug"], - "number": 3668, - "title": "Bypass authorization when authentication bypassed", - "url": "https://github.com/hapijs/hapi/issues/3668" - } - ], - "number": 224, - "url": "https://github.com/hapijs/hapi/milestone/224", - "version": "17.0.1" - }, - { - "date": "2017-11-03T22:32:36Z", - "id": 2761499, - "issues": [ - { - "id": 269285057, - "labels": ["feature"], - "number": 3665, - "title": "Rename route 'config' with 'options'", - "url": "https://github.com/hapijs/hapi/issues/3665" - }, - { - "id": 268995614, - "labels": ["bug"], - "number": 3663, - "title": "Loosen sample and modify peer validator in the routeBase schema", - "url": "https://github.com/hapijs/hapi/pull/3663" - }, - { - "id": 268778051, - "labels": ["bug", "breaking changes"], - "number": 3662, - "title": "prerequisite returning empty string yields null on the pre object of request", - "url": "https://github.com/hapijs/hapi/issues/3662" - }, - { - "id": 267510086, - "labels": ["breaking changes", "release notes"], - "number": 3658, - "title": "17.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/3658" - }, - { - "id": 267508138, - "labels": ["dependency"], - "number": 3657, - "title": "Update hapijs/vise to 3.0.0 from 2.0.2", - "url": "https://github.com/hapijs/hapi/issues/3657" - }, - { - "id": 267508099, - "labels": ["dependency"], - "number": 3656, - "title": "Update hapijs/topo to 3.0.0 from 2.0.2", - "url": "https://github.com/hapijs/hapi/issues/3656" - }, - { - "id": 267508051, - "labels": ["breaking changes", "dependency"], - "number": 3655, - "title": "Update hapijs/podium to 3.1.2 from 1.3.0", - "url": "https://github.com/hapijs/hapi/issues/3655" - }, - { - "id": 267507962, - "labels": ["dependency"], - "number": 3653, - "title": "Update hapijs/nigel to 3.0.0 from 2.0.2", - "url": "https://github.com/hapijs/hapi/issues/3653" - }, - { - "id": 267507931, - "labels": ["dependency"], - "number": 3652, - "title": "Update hapijs/mimos to 4.0.0 from 3.0.3", - "url": "https://github.com/hapijs/hapi/issues/3652" - }, - { - "id": 267507894, - "labels": ["dependency"], - "number": 3651, - "title": "Update jshttp/mime-db to 1.31.0 from 1.29.0", - "url": "https://github.com/hapijs/hapi/issues/3651" - }, - { - "id": 267507842, - "labels": ["dependency"], - "number": 3650, - "title": "Update hueniverse/iron to 5.0.4 from 4.0.5", - "url": "https://github.com/hapijs/hapi/issues/3650" - }, - { - "id": 267507790, - "labels": ["dependency"], - "number": 3649, - "title": "Update hapijs/hoek to 5.0.2 from 4.2.0", - "url": "https://github.com/hapijs/hapi/issues/3649" - }, - { - "id": 267507744, - "labels": ["dependency"], - "number": 3648, - "title": "Update hapijs/cryptiles to 4.1.0 from 3.1.2", - "url": "https://github.com/hapijs/hapi/issues/3648" - }, - { - "id": 267507707, - "labels": ["dependency"], - "number": 3647, - "title": "Update hapijs/content to 4.0.3 from 3.0.6", - "url": "https://github.com/hapijs/hapi/issues/3647" - }, - { - "id": 267507678, - "labels": ["dependency"], - "number": 3646, - "title": "Update hapijs/catbox-memory to 3.1.1 from 2.0.4", - "url": "https://github.com/hapijs/hapi/issues/3646" - }, - { - "id": 267507634, - "labels": ["breaking changes", "dependency"], - "number": 3645, - "title": "Update hapijs/catbox to 10.0.2 from 7.1.5", - "url": "https://github.com/hapijs/hapi/issues/3645" - }, - { - "id": 267507471, - "labels": ["dependency"], - "number": 3644, - "title": "Update hapijs/call to 5.0.1 from 4.0.2", - "url": "https://github.com/hapijs/hapi/issues/3644" - }, - { - "id": 267507428, - "labels": ["dependency"], - "number": 3643, - "title": "Update hapijs/boom to 7.1.1 from 5.2.0", - "url": "https://github.com/hapijs/hapi/issues/3643" - }, - { - "id": 267507395, - "labels": ["dependency"], - "number": 3642, - "title": "Update hapijs/b64 to 4.0.0 from 3.0.2", - "url": "https://github.com/hapijs/hapi/issues/3642" - }, - { - "id": 267507359, - "labels": ["dependency"], - "number": 3641, - "title": "Update hapijs/ammo to 3.0.0 from 2.0.4", - "url": "https://github.com/hapijs/hapi/issues/3641" - }, - { - "id": 267507317, - "labels": ["dependency"], - "number": 3640, - "title": "Update hapijs/accept to 3.0.2 from 2.1.4", - "url": "https://github.com/hapijs/hapi/issues/3640" - }, - { - "id": 267447170, - "labels": ["dependency"], - "number": 3639, - "title": "Update hapijs/statehood to 6.0.5 from 5.0.3", - "url": "https://github.com/hapijs/hapi/issues/3639" - }, - { - "id": 267446800, - "labels": ["dependency"], - "number": 3638, - "title": "Update hapijs/shot to 4.0.3 from 3.4.2", - "url": "https://github.com/hapijs/hapi/issues/3638" - }, - { - "id": 267446461, - "labels": ["dependency"], - "number": 3637, - "title": "Update hapijs/heavy to 6.0.0 from 4.0.4", - "url": "https://github.com/hapijs/hapi/issues/3637" - }, - { - "id": 267445579, - "labels": ["dependency"], - "number": 3636, - "title": "Update hapijs/wreck to 14.0.2 from 13.0.3", - "url": "https://github.com/hapijs/hapi/issues/3636" - }, - { - "id": 267445344, - "labels": ["feature"], - "number": 3635, - "title": "Expose payload and credentials to dynamic scopes", - "url": "https://github.com/hapijs/hapi/issues/3635" - }, - { - "id": 267443447, - "labels": ["feature", "breaking changes"], - "number": 3634, - "title": "onCredentials ext point", - "url": "https://github.com/hapijs/hapi/issues/3634" - }, - { - "id": 267424350, - "labels": ["feature"], - "number": 3633, - "title": "Separate authorization (403) from authentication (401)", - "url": "https://github.com/hapijs/hapi/issues/3633" - }, - { - "id": 267412027, - "labels": ["test", "documentation"], - "number": 3632, - "title": "Add negative test on registering plugin twice without `once`", - "url": "https://github.com/hapijs/hapi/pull/3632" - }, - { - "id": 267328331, - "labels": ["breaking changes"], - "number": 3631, - "title": "When event data is an error, field name is error", - "url": "https://github.com/hapijs/hapi/issues/3631" - }, - { - "id": 267323637, - "labels": ["breaking changes"], - "number": 3630, - "title": "Replace events 'internal` bool with 'channel' property", - "url": "https://github.com/hapijs/hapi/issues/3630" - }, - { - "id": 267304482, - "labels": ["breaking changes"], - "number": 3629, - "title": "Remove request.getLog() method", - "url": "https://github.com/hapijs/hapi/issues/3629" - }, - { - "id": 267304301, - "labels": ["breaking changes"], - "number": 3628, - "title": "Combine all request events into single event", - "url": "https://github.com/hapijs/hapi/issues/3628" - }, - { - "id": 267099815, - "labels": ["breaking changes"], - "number": 3627, - "title": "Remove server argument from 'route' event", - "url": "https://github.com/hapijs/hapi/issues/3627" - }, - { - "id": 266932853, - "labels": ["dependency"], - "number": 3626, - "title": "Update hapijs/subtext to 6.0.7 from 6.0.3", - "url": "https://github.com/hapijs/hapi/issues/3626" - }, - { - "id": 266932684, - "labels": ["dependency"], - "number": 3625, - "title": "Update hapijs/pez to 4.0.1 from 2.1.5", - "url": "https://github.com/hapijs/hapi/issues/3625" - }, - { - "id": 266918207, - "labels": ["bug"], - "number": 3624, - "title": "Send 400 bad request on parse error", - "url": "https://github.com/hapijs/hapi/issues/3624" - }, - { - "id": 266575621, - "labels": ["bug"], - "number": 3621, - "title": "Remove certain passThrough headers", - "url": "https://github.com/hapijs/hapi/issues/3621" - }, - { - "id": 266362793, - "labels": ["breaking changes"], - "number": 3618, - "title": "Replace plugin interface to object", - "url": "https://github.com/hapijs/hapi/issues/3618" - }, - { - "id": 266277962, - "labels": ["breaking changes"], - "number": 3616, - "title": "Change validation errors", - "url": "https://github.com/hapijs/hapi/issues/3616" - }, - { - "id": 266266639, - "labels": ["breaking changes"], - "number": 3615, - "title": "Normalize server methods to always return plain value", - "url": "https://github.com/hapijs/hapi/issues/3615" - }, - { - "id": 266234541, - "labels": ["breaking changes"], - "number": 3614, - "title": "Remove envelope from server.table()", - "url": "https://github.com/hapijs/hapi/issues/3614" - }, - { - "id": 266232553, - "labels": ["breaking changes"], - "number": 3613, - "title": "Combine server.handler() with server.decorate()", - "url": "https://github.com/hapijs/hapi/issues/3613" - }, - { - "id": 266226590, - "labels": ["breaking changes"], - "number": 3612, - "title": "Remove mode support from server.auth.strategy()", - "url": "https://github.com/hapijs/hapi/issues/3612" - }, - { - "id": 265605429, - "labels": ["breaking changes", "dependency"], - "number": 3609, - "title": "Update hapijs/joi to 13.0.1 from 11.1.0", - "url": "https://github.com/hapijs/hapi/issues/3609" - }, - { - "id": 265473004, - "labels": ["feature"], - "number": 3607, - "title": "Normalize failAction across the entire framework", - "url": "https://github.com/hapijs/hapi/issues/3607" - }, - { - "id": 265424798, - "labels": ["breaking changes"], - "number": 3605, - "title": "Remove source argument from validation failAction method", - "url": "https://github.com/hapijs/hapi/issues/3605" - }, - { - "id": 265275528, - "labels": ["documentation"], - "number": 3604, - "title": "request.auth.strategy is not documented", - "url": "https://github.com/hapijs/hapi/issues/3604" - }, - { - "id": 264670459, - "labels": ["bug"], - "number": 3602, - "title": "exclude connection header in response passThrough", - "url": "https://github.com/hapijs/hapi/pull/3602" - }, - { - "id": 264186269, - "labels": ["feature"], - "number": 3599, - "title": "Provide a way to flush compression stream on demand", - "url": "https://github.com/hapijs/hapi/issues/3599" - }, - { - "id": 263720489, - "labels": ["feature"], - "number": 3598, - "title": "Implement wildcardIgnoresOrigin CORS option", - "url": "https://github.com/hapijs/hapi/pull/3598" - }, - { - "id": 263571381, - "labels": ["breaking changes"], - "number": 3597, - "title": "Rename reply interface to toolkit", - "url": "https://github.com/hapijs/hapi/issues/3597" - }, - { - "id": 262237086, - "labels": ["breaking changes"], - "number": 3596, - "title": "Move request.id to request.info.id", - "url": "https://github.com/hapijs/hapi/issues/3596" - }, - { - "id": 262074746, - "labels": ["feature"], - "number": 3595, - "title": "Explicit Context", - "url": "https://github.com/hapijs/hapi/issues/3595" - }, - { - "id": 261957058, - "labels": ["feature", "breaking changes"], - "number": 3594, - "title": "Support compression minimum length", - "url": "https://github.com/hapijs/hapi/issues/3594" - }, - { - "id": 261827203, - "labels": ["breaking changes"], - "number": 3592, - "title": "Change reply interface from function to object", - "url": "https://github.com/hapijs/hapi/issues/3592" - }, - { - "id": 261826961, - "labels": ["bug", "breaking changes"], - "number": 3591, - "title": "Normalize lifecycle", - "url": "https://github.com/hapijs/hapi/issues/3591" - }, - { - "id": 261431820, - "labels": ["breaking changes", "dependency"], - "number": 3590, - "title": "Remove HTML escaping of joi errors", - "url": "https://github.com/hapijs/hapi/issues/3590" - }, - { - "id": 261220382, - "labels": ["breaking changes"], - "number": 3589, - "title": "Move request and server events to `events` getter", - "url": "https://github.com/hapijs/hapi/issues/3589" - }, - { - "id": 259705940, - "labels": ["breaking changes"], - "number": 3583, - "title": "Reduce request internal logging", - "url": "https://github.com/hapijs/hapi/issues/3583" - }, - { - "id": 258977802, - "labels": ["breaking changes"], - "number": 3580, - "title": "Remove server methods string handlers shortcut", - "url": "https://github.com/hapijs/hapi/issues/3580" - }, - { - "id": 258742812, - "labels": ["breaking changes"], - "number": 3579, - "title": "v17 rc 4", - "url": "https://github.com/hapijs/hapi/pull/3579" - }, - { - "id": 258151109, - "labels": ["breaking changes"], - "number": 3574, - "title": "Move all server events to server.events", - "url": "https://github.com/hapijs/hapi/issues/3574" - }, - { - "id": 258121813, - "labels": ["breaking changes"], - "number": 3573, - "title": "Remove domains", - "url": "https://github.com/hapijs/hapi/issues/3573" - }, - { - "id": 257557952, - "labels": ["breaking changes"], - "number": 3572, - "title": "Remove support for multiple connection in a single server", - "url": "https://github.com/hapijs/hapi/issues/3572" - }, - { - "id": 257212822, - "labels": ["breaking changes"], - "number": 3571, - "title": "Drop support for request tails", - "url": "https://github.com/hapijs/hapi/issues/3571" - }, - { - "id": 253282383, - "labels": ["bug"], - "number": 3567, - "title": "response validate options for 'modify' and 'sample' is too strict", - "url": "https://github.com/hapijs/hapi/issues/3567" - }, - { - "id": 233328463, - "labels": ["bug", "breaking changes"], - "number": 3509, - "title": "Return 413 when payload is too big", - "url": "https://github.com/hapijs/hapi/issues/3509" - }, - { - "id": 206404208, - "labels": ["feature"], - "number": 3434, - "title": "Validate params rules against path params", - "url": "https://github.com/hapijs/hapi/issues/3434" - }, - { - "id": 199784110, - "labels": ["feature"], - "number": 3423, - "title": "CDN friendly CORS: remove \"Vary: Origin\" for wildcard CORS origins", - "url": "https://github.com/hapijs/hapi/issues/3423" - }, - { - "id": 174970311, - "labels": ["bug"], - "number": 3334, - "title": "Handle multiple parallel registrations", - "url": "https://github.com/hapijs/hapi/issues/3334" - }, - { - "id": 172346828, - "labels": ["feature"], - "number": 3297, - "title": "Pass plugin's server rather than root server to route config function", - "url": "https://github.com/hapijs/hapi/issues/3297" - }, - { - "id": 155235823, - "labels": ["bug"], - "number": 3152, - "title": "reply.code(value) ignored when payload is empty and emptyStatusCode is set", - "url": "https://github.com/hapijs/hapi/issues/3152" - }, - { - "id": 154682422, - "labels": ["bug"], - "number": 3150, - "title": "server.method doesn't resolve promise with cache options", - "url": "https://github.com/hapijs/hapi/issues/3150" - }, - { - "id": 137116066, - "labels": ["feature"], - "number": 3066, - "title": "Allow access to parent realm", - "url": "https://github.com/hapijs/hapi/issues/3066" - } - ], - "number": 221, - "url": "https://github.com/hapijs/hapi/milestone/221", - "version": "17.0.0" - }, - { - "date": "2020-06-30T05:28:33Z", - "id": 5103768, - "issues": [ - { - "id": 647872619, - "labels": ["dependency", "lts", "commercial"], - "number": 4108, - "title": "Support node 12", - "url": "https://github.com/hapijs/hapi/issues/4108" - } - ], - "number": 281, - "url": "https://github.com/hapijs/hapi/milestone/281", - "version": "16.8.3" - }, - { - "date": "2020-03-14T22:56:32Z", - "id": 4481591, - "issues": [ - { - "id": 564924339, - "labels": ["dependency"], - "number": 4048, - "title": "Update deps", - "url": "https://github.com/hapijs/hapi/issues/4048" - } - ], - "number": 268, - "url": "https://github.com/hapijs/hapi/milestone/268", - "version": "16.8.2" - }, - { - "date": "2019-07-10T18:23:18Z", - "id": 4171125, - "issues": [ - { - "id": 466443456, - "labels": ["bug", "lts", "commercial"], - "number": 3960, - "title": "Send 400 bad request on parse error", - "url": "https://github.com/hapijs/hapi/issues/3960" - } - ], - "number": 263, - "url": "https://github.com/hapijs/hapi/milestone/263", - "version": "16.8.1" - }, - { - "date": "2019-03-25T21:28:52Z", - "id": 4162233, - "issues": [ - { - "id": 425137888, - "labels": ["breaking changes", "release notes"], - "number": 3937, - "title": "16.8.0-Commercial Release Notes", - "url": "https://github.com/hapijs/hapi/issues/3937" - }, - { - "id": 423957058, - "labels": ["breaking changes", "lts"], - "number": 3933, - "title": "v16 commercial license version", - "url": "https://github.com/hapijs/hapi/issues/3933" - }, - { - "id": 416961001, - "labels": ["breaking changes"], - "number": 3932, - "title": "Discontinued support for hapi v16", - "url": "https://github.com/hapijs/hapi/issues/3932" - }, - { - "id": 397280961, - "labels": ["lts"], - "number": 3899, - "title": "v16: look into compatibility with node 10", - "url": "https://github.com/hapijs/hapi/issues/3899" - } - ], - "number": 262, - "url": "https://github.com/hapijs/hapi/milestone/262", - "version": "16.8.0" - }, - { - "date": "2018-11-06T08:34:12Z", - "id": 3798338, - "issues": [ - { - "id": 377677381, - "labels": ["feature", "lts"], - "number": 3869, - "title": "Specify node, hapi, and plugin version requirements (#3867)", - "url": "https://github.com/hapijs/hapi/issues/3869" - } - ], - "number": 249, - "url": "https://github.com/hapijs/hapi/milestone/249", - "version": "16.7.0" - }, - { - "date": "2018-11-05T23:13:33Z", - "id": 3798337, - "issues": [ - { - "id": 377615843, - "labels": ["non issue", "lts"], - "number": 3866, - "title": "Remove engines", - "url": "https://github.com/hapijs/hapi/issues/3866" - } - ], - "number": 248, - "url": "https://github.com/hapijs/hapi/milestone/248", - "version": "16.6.5" - }, - { - "date": "2018-11-02T22:08:38Z", - "id": 3792037, - "issues": [ - { - "id": 376978840, - "labels": ["breaking changes", "lts"], - "number": 3862, - "title": "Remove support for node 4", - "url": "https://github.com/hapijs/hapi/issues/3862" - }, - { - "id": 376978737, - "labels": ["security", "lts"], - "number": 3861, - "title": "Remove shrinkwrap", - "url": "https://github.com/hapijs/hapi/issues/3861" - } - ], - "number": 246, - "url": "https://github.com/hapijs/hapi/milestone/246", - "version": "16.6.4" - }, - { - "date": "2017-09-25T20:37:24Z", - "id": 2793098, - "issues": [ - { - "id": 260406797, - "labels": ["bug"], - "number": 3586, - "title": "Remove per-response events emitter validation", - "url": "https://github.com/hapijs/hapi/issues/3586" - } - ], - "number": 223, - "url": "https://github.com/hapijs/hapi/milestone/223", - "version": "16.6.2" - }, - { - "date": "2017-09-24T17:35:32Z", - "id": 2787739, - "issues": [ - { - "id": 260101030, - "labels": ["dependency"], - "number": 3585, - "title": "Update hapijs/joi to 11.1.0 from 10.6.0", - "url": "https://github.com/hapijs/hapi/issues/3585" - }, - { - "id": 259443759, - "labels": ["bug", "dependency"], - "number": 3582, - "title": "Support joi 11 paths arrays. Fixes #3581.", - "url": "https://github.com/hapijs/hapi/pull/3582" - } - ], - "number": 222, - "url": "https://github.com/hapijs/hapi/milestone/222", - "version": "16.6.1" - }, - { - "date": "2017-09-12T23:25:07Z", - "id": 2680269, - "issues": [ - { - "id": 257155936, - "labels": ["bug", "security"], - "number": 3570, - "title": "Update hapijs/content to 3.0.6 from 3.0.5", - "url": "https://github.com/hapijs/hapi/issues/3570" - }, - { - "id": 247739886, - "labels": ["bug"], - "number": 3560, - "title": "fix response.message(httpMessage)", - "url": "https://github.com/hapijs/hapi/pull/3560" - }, - { - "id": 232651257, - "labels": ["feature"], - "number": 3506, - "title": "Add json escape option", - "url": "https://github.com/hapijs/hapi/pull/3506" - } - ], - "number": 220, - "url": "https://github.com/hapijs/hapi/milestone/220", - "version": "16.6.0" - }, - { - "date": "2017-08-04T05:02:27Z", - "id": 2680229, - "issues": [ - { - "id": 247896947, - "labels": ["bug"], - "number": 3561, - "title": "Aborted responses return 200 code in inject", - "url": "https://github.com/hapijs/hapi/issues/3561" - } - ], - "number": 219, - "url": "https://github.com/hapijs/hapi/milestone/219", - "version": "16.5.2" - }, - { - "date": "2017-08-04T04:00:46Z", - "id": 2651961, - "issues": [ - { - "id": 244601416, - "labels": ["dependency"], - "number": 3552, - "title": "Updating from 16.4.3 to 16.5.0: Podium.decorate is not a function error", - "url": "https://github.com/hapijs/hapi/issues/3552" - }, - { - "id": 236962042, - "labels": ["bug"], - "number": 3528, - "title": "\"disconnect\" event on the \"request\" object is never emitted", - "url": "https://github.com/hapijs/hapi/issues/3528" - } - ], - "number": 218, - "url": "https://github.com/hapijs/hapi/milestone/218", - "version": "16.5.1" - }, - { - "date": "2017-07-20T08:39:23Z", - "id": 2574380, - "issues": [ - { - "id": 244284306, - "labels": ["dependency"], - "number": 3551, - "title": "Update hapijs/statehood to 5.0.3 from 5.0.2", - "url": "https://github.com/hapijs/hapi/issues/3551" - }, - { - "id": 244276034, - "labels": ["dependency"], - "number": 3550, - "title": "Update hapijs/content to 3.0.5 from 3.0.4", - "url": "https://github.com/hapijs/hapi/issues/3550" - }, - { - "id": 243883649, - "labels": ["dependency"], - "number": 3548, - "title": "Update hapijs/boom to 5.2.0 from 5.1.0", - "url": "https://github.com/hapijs/hapi/issues/3548" - }, - { - "id": 243627680, - "labels": ["dependency"], - "number": 3545, - "title": "Update hapijs/joi to 10.6.0 from 10.5.2", - "url": "https://github.com/hapijs/hapi/issues/3545" - }, - { - "id": 243626363, - "labels": ["dependency"], - "number": 3544, - "title": "Update jshttp/mime-db to 1.29.0 from 1.28.0", - "url": "https://github.com/hapijs/hapi/issues/3544" - }, - { - "id": 243626220, - "labels": ["dependency"], - "number": 3543, - "title": "Update hapijs/catbox to 7.1.5 from 7.1.4", - "url": "https://github.com/hapijs/hapi/issues/3543" - }, - { - "id": 243619702, - "labels": ["dependency"], - "number": 3542, - "title": "Update hapijs/podium to 1.3.0 from 1.2.5", - "url": "https://github.com/hapijs/hapi/issues/3542" - }, - { - "id": 243565489, - "labels": ["dependency"], - "number": 3541, - "title": "Update hapijs/hoek to 4.2.0 from 4.1.1", - "url": "https://github.com/hapijs/hapi/issues/3541" - }, - { - "id": 242952489, - "labels": ["feature"], - "number": 3539, - "title": "Add payload fail action custom handler", - "url": "https://github.com/hapijs/hapi/pull/3539" - }, - { - "id": 240026843, - "labels": ["dependency"], - "number": 3533, - "title": "Update hapijs/subtext to 5.0.0 from 4.4.1", - "url": "https://github.com/hapijs/hapi/issues/3533" - }, - { - "id": 239340292, - "labels": ["bug"], - "number": 3532, - "title": "Remove joi validation when creating request podium events", - "url": "https://github.com/hapijs/hapi/issues/3532" - }, - { - "id": 239231138, - "labels": ["bug", "test"], - "number": 3531, - "title": "Return 413 when payload too large.", - "url": "https://github.com/hapijs/hapi/pull/3531" - }, - { - "id": 236718518, - "labels": ["feature"], - "number": 3526, - "title": "Consider wildcard filtering for debug options", - "url": "https://github.com/hapijs/hapi/pull/3526" - }, - { - "id": 235742937, - "labels": ["documentation"], - "number": 3523, - "title": "Update lab and fix indentation", - "url": "https://github.com/hapijs/hapi/pull/3523" - }, - { - "id": 234873021, - "labels": ["bug"], - "number": 3520, - "title": "Fixed validation of server's Joi options", - "url": "https://github.com/hapijs/hapi/pull/3520" - }, - { - "id": 234596406, - "labels": ["bug"], - "number": 3519, - "title": "allow decoration of reply with non functions", - "url": "https://github.com/hapijs/hapi/pull/3519" - }, - { - "id": 234337895, - "labels": ["bug", "dependency"], - "number": 3516, - "title": "Invalid cookie header despite strictHeader: false, ignoreErrors: true", - "url": "https://github.com/hapijs/hapi/issues/3516" - }, - { - "id": 225272329, - "labels": ["bug"], - "number": 3483, - "title": "Filename detecting problem on uploading file with apostrophes", - "url": "https://github.com/hapijs/hapi/issues/3483" - }, - { - "id": 222594741, - "labels": ["bug"], - "number": 3480, - "title": "RST packet instead of a FIN packet to close the response on Heroku", - "url": "https://github.com/hapijs/hapi/issues/3480" - }, - { - "id": 216575324, - "labels": ["bug"], - "number": 3464, - "title": "Throwing inside response event breaks new events", - "url": "https://github.com/hapijs/hapi/issues/3464" - } - ], - "number": 217, - "url": "https://github.com/hapijs/hapi/milestone/217", - "version": "16.5.0" - }, - { - "date": "2017-06-09T18:34:12Z", - "id": 2570983, - "issues": [ - { - "id": 233859111, - "labels": ["bug"], - "number": 3514, - "title": "TypeError: Cannot set property 'hostname' of undefined", - "url": "https://github.com/hapijs/hapi/issues/3514" - } - ], - "number": 216, - "url": "https://github.com/hapijs/hapi/milestone/216", - "version": "16.4.3" - }, - { - "date": "2017-06-08T07:23:52Z", - "id": 2562748, - "issues": [ - { - "id": 234429929, - "labels": ["dependency"], - "number": 3517, - "title": "Restore npm-shrinkwrap.json file", - "url": "https://github.com/hapijs/hapi/issues/3517" - } - ], - "number": 215, - "url": "https://github.com/hapijs/hapi/milestone/215", - "version": "16.4.2" - }, - { - "date": "2017-06-05T17:27:10Z", - "id": 2561368, - "issues": [ - { - "id": 233655951, - "labels": ["security", "dependency"], - "number": 3512, - "title": "Remove npm-shrinkwrap", - "url": "https://github.com/hapijs/hapi/issues/3512" - } - ], - "number": 214, - "url": "https://github.com/hapijs/hapi/milestone/214", - "version": "16.4.1" - }, - { - "date": "2017-06-05T17:27:11Z", - "id": 2561052, - "issues": [ - { - "id": 233520196, - "labels": ["dependency"], - "number": 3511, - "title": "Update hapijs/joi to 10.5.2 from 10.5.1", - "url": "https://github.com/hapijs/hapi/issues/3511" - }, - { - "id": 232174289, - "labels": ["dependency"], - "number": 3505, - "title": "Remove isemail deps from shrinkwrap", - "url": "https://github.com/hapijs/hapi/issues/3505" - }, - { - "id": 229717363, - "labels": ["feature", "bug"], - "number": 3486, - "title": "Provide cover for unhandled rejections", - "url": "https://github.com/hapijs/hapi/pull/3486" - }, - { - "id": 202618603, - "labels": ["feature"], - "number": 3429, - "title": "Better support for async handlers", - "url": "https://github.com/hapijs/hapi/issues/3429" - } - ], - "number": 213, - "url": "https://github.com/hapijs/hapi/milestone/213", - "version": "16.4.0" - }, - { - "date": "2017-06-05T03:22:45Z", - "id": 2551546, - "issues": [ - { - "id": 233467003, - "labels": ["dependency"], - "number": 3510, - "title": "Update hapijs/shot to 3.4.2 from 3.4.0", - "url": "https://github.com/hapijs/hapi/issues/3510" - }, - { - "id": 233155057, - "labels": ["dependency"], - "number": 3507, - "title": "Node 8 fixes", - "url": "https://github.com/hapijs/hapi/pull/3507" - } - ], - "number": 212, - "url": "https://github.com/hapijs/hapi/milestone/212", - "version": "16.3.1" - }, - { - "date": "2017-05-30T20:47:33Z", - "id": 2548066, - "issues": [ - { - "id": 215848510, - "labels": ["feature"], - "number": 3461, - "title": "explicitly destroy sockets on clientError", - "url": "https://github.com/hapijs/hapi/pull/3461" - }, - { - "id": 209181052, - "labels": ["bug"], - "number": 3441, - "title": "Fix several request.url property issues on setUrl()", - "url": "https://github.com/hapijs/hapi/pull/3441" - }, - { - "id": 196183135, - "labels": ["feature"], - "number": 3409, - "title": "Adding server.inspect to list decorated framework interfaces", - "url": "https://github.com/hapijs/hapi/pull/3409" - } - ], - "number": 211, - "url": "https://github.com/hapijs/hapi/milestone/211", - "version": "16.3.0" - }, - { - "date": "2017-05-29T09:42:01Z", - "id": 2547255, - "issues": [ - { - "id": 231900819, - "labels": ["test", "dependency"], - "number": 3502, - "title": "Update hapijs/wreck to 12.2.2 from 10.0.0", - "url": "https://github.com/hapijs/hapi/issues/3502" - }, - { - "id": 231900793, - "labels": ["dependency"], - "number": 3501, - "title": "Update hapijs/subtext to 4.4.1 from 4.3.0", - "url": "https://github.com/hapijs/hapi/issues/3501" - }, - { - "id": 231900767, - "labels": ["dependency"], - "number": 3500, - "title": "Update hapijs/statehood to 5.0.2 from 5.0.1", - "url": "https://github.com/hapijs/hapi/issues/3500" - }, - { - "id": 231900744, - "labels": ["dependency"], - "number": 3499, - "title": "Update hapijs/pez to 2.1.5 from 2.1.4", - "url": "https://github.com/hapijs/hapi/issues/3499" - }, - { - "id": 231900706, - "labels": ["dependency"], - "number": 3498, - "title": "Update jshttp/mime-db to 1.28.0 from 1.25.0", - "url": "https://github.com/hapijs/hapi/issues/3498" - }, - { - "id": 231900675, - "labels": ["dependency"], - "number": 3497, - "title": "Update hapijs/joi to 10.5.1 from 10.1.0", - "url": "https://github.com/hapijs/hapi/issues/3497" - }, - { - "id": 231900649, - "labels": ["dependency"], - "number": 3496, - "title": "Update hueniverse/iron to 4.0.5 from 4.0.4", - "url": "https://github.com/hapijs/hapi/issues/3496" - }, - { - "id": 231900620, - "labels": ["dependency"], - "number": 3495, - "title": "Update hapijs/hoek to 4.1.1 from 4.1.0", - "url": "https://github.com/hapijs/hapi/issues/3495" - }, - { - "id": 231900598, - "labels": ["dependency"], - "number": 3494, - "title": "Update hapijs/heavy to 4.0.4 from 4.0.3", - "url": "https://github.com/hapijs/hapi/issues/3494" - }, - { - "id": 231900575, - "labels": ["dependency"], - "number": 3493, - "title": "Update hapijs/cryptiles to 3.1.2 from 3.1.1", - "url": "https://github.com/hapijs/hapi/issues/3493" - }, - { - "id": 231900431, - "labels": ["dependency"], - "number": 3492, - "title": "Update hapijs/content to 3.0.4 from 3.0.3", - "url": "https://github.com/hapijs/hapi/issues/3492" - }, - { - "id": 231900403, - "labels": ["dependency"], - "number": 3491, - "title": "Update hapijs/catbox to 7.1.3 from 7.1.4", - "url": "https://github.com/hapijs/hapi/issues/3491" - }, - { - "id": 231900375, - "labels": ["dependency"], - "number": 3490, - "title": "Update hapijs/call to 4.0.2 from 4.0.0", - "url": "https://github.com/hapijs/hapi/issues/3490" - }, - { - "id": 231900351, - "labels": ["dependency"], - "number": 3489, - "title": "Update hapijs/boom to 5.1.0 from 4.2.0", - "url": "https://github.com/hapijs/hapi/issues/3489" - }, - { - "id": 231900327, - "labels": ["dependency"], - "number": 3488, - "title": "Update hapijs/ammo to 2.0.4 from 2.0.3", - "url": "https://github.com/hapijs/hapi/issues/3488" - }, - { - "id": 231900279, - "labels": ["dependency"], - "number": 3487, - "title": "Update hapijs/accept to 2.1.4 from 2.1.3", - "url": "https://github.com/hapijs/hapi/issues/3487" - }, - { - "id": 220945260, - "labels": ["feature"], - "number": 3472, - "title": "Send connection close when there is unconsumed payload", - "url": "https://github.com/hapijs/hapi/pull/3472" - }, - { - "id": 220620906, - "labels": ["feature"], - "number": 3470, - "title": "Defer 100-continue signalling until payload parsing", - "url": "https://github.com/hapijs/hapi/pull/3470" - }, - { - "id": 212725635, - "labels": ["feature"], - "number": 3451, - "title": "Have access to request.app in Joi validation context", - "url": "https://github.com/hapijs/hapi/issues/3451" - }, - { - "id": 211053516, - "labels": ["bug"], - "number": 3448, - "title": "Bind request continuation methods to current domain", - "url": "https://github.com/hapijs/hapi/pull/3448" - }, - { - "id": 210916696, - "labels": ["bug"], - "number": 3447, - "title": "one server is always leaked", - "url": "https://github.com/hapijs/hapi/issues/3447" - }, - { - "id": 204153191, - "labels": ["bug"], - "number": 3431, - "title": "when failAction is log or ignored, the error is assigned to request.preResponse but not request.pre", - "url": "https://github.com/hapijs/hapi/issues/3431" - }, - { - "id": 201062129, - "labels": ["bug"], - "number": 3427, - "title": "reply.entity() will always return null for correct etags", - "url": "https://github.com/hapijs/hapi/issues/3427" - } - ], - "number": 210, - "url": "https://github.com/hapijs/hapi/milestone/210", - "version": "16.2.0" - }, - { - "date": "2017-05-28T22:49:02Z", - "id": 2354738, - "issues": [ - { - "id": 218555399, - "labels": ["bug", "security"], - "number": 3466, - "title": "Non-handling of accept-encoding header when the value does not conform to the specification", - "url": "https://github.com/hapijs/hapi/issues/3466" - }, - { - "id": 210914228, - "labels": ["bug"], - "number": 3446, - "title": "remove extra closure", - "url": "https://github.com/hapijs/hapi/pull/3446" - } - ], - "number": 209, - "url": "https://github.com/hapijs/hapi/milestone/209", - "version": "16.1.1" - }, - { - "date": "2017-02-28T23:59:10Z", - "id": 2219710, - "issues": [ - { - "id": 198064987, - "labels": ["breaking changes", "dependency"], - "number": 3416, - "title": "Update hapijs/joi to 10.1.0 from 10.0.1", - "url": "https://github.com/hapijs/hapi/issues/3416" - }, - { - "id": 198064820, - "labels": ["feature"], - "number": 3415, - "title": "Allow creating multiple connections in a single server.connection() call", - "url": "https://github.com/hapijs/hapi/issues/3415" - } - ], - "number": 208, - "url": "https://github.com/hapijs/hapi/milestone/208", - "version": "16.1.0" - }, - { - "date": "2016-12-29T08:21:54Z", - "id": 2203993, - "issues": [ - { - "id": 197970653, - "labels": ["bug"], - "number": 3414, - "title": "Connectionless plugin fails inside connection-full plugin", - "url": "https://github.com/hapijs/hapi/issues/3414" - } - ], - "number": 207, - "url": "https://github.com/hapijs/hapi/milestone/207", - "version": "16.0.3" - }, - { - "date": "2016-12-19T08:38:14Z", - "id": 2169612, - "issues": [ - { - "id": 196357688, - "labels": ["bug"], - "number": 3411, - "title": "Falsey payload returns null", - "url": "https://github.com/hapijs/hapi/issues/3411" - } - ], - "number": 206, - "url": "https://github.com/hapijs/hapi/milestone/206", - "version": "16.0.2" - }, - { - "date": "2016-12-01T19:02:38Z", - "id": 2165177, - "issues": [ - { - "id": 192739277, - "labels": ["bug"], - "number": 3401, - "title": "Attempt to fix #3399 where it crashes on route prerequisites when no domain is present", - "url": "https://github.com/hapijs/hapi/pull/3401" - }, - { - "id": 192683640, - "labels": ["bug"], - "number": 3399, - "title": "Regression on 16, lib/handlers.js", - "url": "https://github.com/hapijs/hapi/issues/3399" - } - ], - "number": 205, - "url": "https://github.com/hapijs/hapi/milestone/205", - "version": "16.0.1" - }, - { - "date": "2016-11-30T00:40:35Z", - "id": 2083067, - "issues": [ - { - "id": 192443592, - "labels": ["breaking changes", "release notes"], - "number": 3398, - "title": "16.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/3398" - }, - { - "id": 192178214, - "labels": ["dependency"], - "number": 3397, - "title": "Update hapijs/ammo to 2.0.3 from 2.0.2", - "url": "https://github.com/hapijs/hapi/issues/3397" - }, - { - "id": 192178151, - "labels": ["breaking changes", "dependency"], - "number": 3396, - "title": "Update hapijs/call to 4.0.0 from 3.0.3", - "url": "https://github.com/hapijs/hapi/issues/3396" - }, - { - "id": 192178083, - "labels": ["dependency"], - "number": 3395, - "title": "Update hapijs/catbox to 7.1.3 from 7.1.2", - "url": "https://github.com/hapijs/hapi/issues/3395" - }, - { - "id": 192178016, - "labels": ["dependency"], - "number": 3394, - "title": "Update hapijs/heavy to 4.0.3 from 4.0.2", - "url": "https://github.com/hapijs/hapi/issues/3394" - }, - { - "id": 192177936, - "labels": ["dependency"], - "number": 3393, - "title": "Update hapijs/podium to 1.2.5 from 1.2.3", - "url": "https://github.com/hapijs/hapi/issues/3393" - }, - { - "id": 192177867, - "labels": ["dependency"], - "number": 3392, - "title": "Update hapijs/shot to 3.4.0 from 3.3.2", - "url": "https://github.com/hapijs/hapi/issues/3392" - }, - { - "id": 192161735, - "labels": ["bug", "dependency"], - "number": 3391, - "title": "Update hapijs/statehood to 5.0.1 from 5.0.0", - "url": "https://github.com/hapijs/hapi/issues/3391" - }, - { - "id": 192161664, - "labels": ["dependency"], - "number": 3390, - "title": "Update jshttp/mime-db to 1.25.0 from 1.23.0", - "url": "https://github.com/hapijs/hapi/issues/3390" - }, - { - "id": 192161554, - "labels": ["dependency"], - "number": 3389, - "title": "Update hapijs/content to 3.0.3 from 3.0.2", - "url": "https://github.com/hapijs/hapi/issues/3389" - }, - { - "id": 192161491, - "labels": ["dependency"], - "number": 3388, - "title": "Update hapijs/pez to 2.1.4 from 2.1.2", - "url": "https://github.com/hapijs/hapi/issues/3388" - }, - { - "id": 192161447, - "labels": ["dependency"], - "number": 3387, - "title": "Update hapijs/accept to 2.1.3 from 2.1.2", - "url": "https://github.com/hapijs/hapi/issues/3387" - }, - { - "id": 192161368, - "labels": ["dependency"], - "number": 3386, - "title": "Update hapijs/catbox-memory to 2.0.4 from 2.0.3", - "url": "https://github.com/hapijs/hapi/issues/3386" - }, - { - "id": 192161257, - "labels": ["breaking changes", "dependency"], - "number": 3385, - "title": "Update hapijs/joi to 10.0.1 from 9.0.4", - "url": "https://github.com/hapijs/hapi/issues/3385" - }, - { - "id": 192161176, - "labels": ["dependency"], - "number": 3384, - "title": "Update hapijs/cryptiles to 3.1.1 from 3.0.2", - "url": "https://github.com/hapijs/hapi/issues/3384" - }, - { - "id": 192161115, - "labels": ["dependency"], - "number": 3383, - "title": "Update hapijs/boom to 4.2.0 from 4.0.0", - "url": "https://github.com/hapijs/hapi/issues/3383" - }, - { - "id": 190704809, - "labels": ["bug"], - "number": 3381, - "title": "problems with Promise error handling in plugin registration", - "url": "https://github.com/hapijs/hapi/issues/3381" - }, - { - "id": 189788728, - "labels": ["bug"], - "number": 3380, - "title": "Ensure Boom objects can be reused - Fix for issue #3378", - "url": "https://github.com/hapijs/hapi/pull/3380" - }, - { - "id": 188885083, - "labels": ["bug"], - "number": 3378, - "title": "Server fails to reuse Boom object", - "url": "https://github.com/hapijs/hapi/issues/3378" - }, - { - "id": 186931685, - "labels": ["bug"], - "number": 3372, - "title": "Allow HTTPS long poll requests", - "url": "https://github.com/hapijs/hapi/pull/3372" - }, - { - "id": 185280185, - "labels": ["non issue"], - "number": 3369, - "title": "Deprecation Warning in Node v7.0.0 for call to os.tmpDir", - "url": "https://github.com/hapijs/hapi/issues/3369" - }, - { - "id": 185279426, - "labels": ["non issue"], - "number": 3368, - "title": "change deprecated os.tmpDir call to os.tmpdir", - "url": "https://github.com/hapijs/hapi/pull/3368" - }, - { - "id": 181108366, - "labels": ["dependency"], - "number": 3359, - "title": "Shrinkwrap fails with hapi version 15.1.1", - "url": "https://github.com/hapijs/hapi/issues/3359" - }, - { - "id": 180571594, - "labels": ["bug"], - "number": 3358, - "title": "fix server not propagating errors on prehandler(promise) + handler error (#3242)", - "url": "https://github.com/hapijs/hapi/pull/3358" - }, - { - "id": 176730902, - "labels": ["bug", "security", "dependency"], - "number": 3347, - "title": "Major performance issue with hapi.js 15.x", - "url": "https://github.com/hapijs/hapi/issues/3347" - }, - { - "id": 167467890, - "labels": ["bug"], - "number": 3242, - "title": "Using promises in prehandlers causes exceptions to be swallowed in handlers. ", - "url": "https://github.com/hapijs/hapi/issues/3242" - } - ], - "number": 204, - "url": "https://github.com/hapijs/hapi/milestone/204", - "version": "16.0.0" - }, - { - "date": "2016-10-21T08:43:23Z", - "id": 2030337, - "issues": [ - { - "id": 184288037, - "labels": ["feature", "dependency"], - "number": 3366, - "title": "Update hapijs/subtext to 4.3.0 from 4.2.2", - "url": "https://github.com/hapijs/hapi/issues/3366" - }, - { - "id": 179610151, - "labels": ["dependency"], - "number": 3355, - "title": "Update hapijs/wreck to 10.0.0 from 9.0.0", - "url": "https://github.com/hapijs/hapi/issues/3355" - }, - { - "id": 179610003, - "labels": ["dependency"], - "number": 3354, - "title": "Update hapijs/subtext to 4.2.2 from 4.2.1", - "url": "https://github.com/hapijs/hapi/issues/3354" - }, - { - "id": 179583147, - "labels": ["bug"], - "number": 3352, - "title": "npm shrinkwrap produces error with hapi", - "url": "https://github.com/hapijs/hapi/issues/3352" - }, - { - "id": 179430307, - "labels": ["bug", "dependency"], - "number": 3351, - "title": "Fix subtext shrinkwrap", - "url": "https://github.com/hapijs/hapi/pull/3351" - }, - { - "id": 134536435, - "labels": ["feature"], - "number": 3051, - "title": "payload output inconsistent for single payload vs multipart", - "url": "https://github.com/hapijs/hapi/issues/3051" - } - ], - "number": 203, - "url": "https://github.com/hapijs/hapi/milestone/203", - "version": "15.2.0" - }, - { - "date": "2016-09-27T00:01:37Z", - "id": 1976349, - "issues": [ - { - "id": 179366660, - "labels": ["feature"], - "number": 3350, - "title": "Conditional plugin connection-less mode", - "url": "https://github.com/hapijs/hapi/issues/3350" - }, - { - "id": 176177179, - "labels": ["dependency"], - "number": 3342, - "title": "Update hapijs/shot to 3.3.2 from 3.3.1", - "url": "https://github.com/hapijs/hapi/pull/3342" - }, - { - "id": 176177125, - "labels": ["dependency"], - "number": 3341, - "title": "Update hapijs/shot to 3.3.2 from 3.3.1", - "url": "https://github.com/hapijs/hapi/issues/3341" - }, - { - "id": 175393880, - "labels": ["bug"], - "number": 3339, - "title": "Restore npm-shrinkwrap.json to package. Closes #3338", - "url": "https://github.com/hapijs/hapi/pull/3339" - }, - { - "id": 175385133, - "labels": ["bug"], - "number": 3338, - "title": "`npm-shrinkwrap.json` not included in published `hapi` package", - "url": "https://github.com/hapijs/hapi/issues/3338" - } - ], - "number": 202, - "url": "https://github.com/hapijs/hapi/milestone/202", - "version": "15.1.0" - }, - { - "date": "2016-09-01T00:07:40Z", - "id": 1968378, - "issues": [ - { - "id": 174407550, - "labels": ["dependency"], - "number": 3332, - "title": "Update hapijs/podium to 1.2.3 from 1.2.1", - "url": "https://github.com/hapijs/hapi/issues/3332" - }, - { - "id": 174220605, - "labels": ["bug"], - "number": 3330, - "title": "Events not emitted when route handler throws", - "url": "https://github.com/hapijs/hapi/issues/3330" - } - ], - "number": 201, - "url": "https://github.com/hapijs/hapi/milestone/201", - "version": "15.0.3" - }, - { - "date": "2016-08-28T21:48:15Z", - "id": 1966799, - "issues": [ - { - "id": 173669638, - "labels": ["bug"], - "number": 3325, - "title": "Allow initializing server without connections", - "url": "https://github.com/hapijs/hapi/issues/3325" - }, - { - "id": 173668709, - "labels": ["bug", "breaking changes"], - "number": 3324, - "title": "Verify plugin dependencies for connections added after initialize() or start()", - "url": "https://github.com/hapijs/hapi/issues/3324" - } - ], - "number": 200, - "url": "https://github.com/hapijs/hapi/milestone/200", - "version": "15.0.2" - }, - { - "date": "2016-08-26T23:44:46Z", - "id": 1966726, - "issues": [], - "number": 199, - "url": "https://github.com/hapijs/hapi/milestone/199", - "version": "15.0.1" - }, - { - "date": "2016-08-26T22:23:59Z", - "id": 1940453, - "issues": [ - { - "id": 173554751, - "labels": ["breaking changes", "release notes"], - "number": 3323, - "title": "15.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/3323" - }, - { - "id": 173492458, - "labels": ["dependency"], - "number": 3322, - "title": "Bump hapijs/boom version to 4.0.0 from 3.2.2", - "url": "https://github.com/hapijs/hapi/pull/3322" - }, - { - "id": 173468096, - "labels": ["dependency"], - "number": 3320, - "title": "Update hapijs/boom to 4.0.0 from 3.2.2", - "url": "https://github.com/hapijs/hapi/issues/3320" - }, - { - "id": 173397208, - "labels": ["breaking changes", "security", "dependency"], - "number": 3318, - "title": "Update hapijs/statehood to 5.0.0 from 4.0.3", - "url": "https://github.com/hapijs/hapi/issues/3318" - }, - { - "id": 173388037, - "labels": ["dependency"], - "number": 3317, - "title": "Update hueniverse/iron to 4.0.3 from 4.0.2", - "url": "https://github.com/hapijs/hapi/issues/3317" - }, - { - "id": 173376904, - "labels": ["dependency"], - "number": 3316, - "title": "Update hapijs/wreck to 9.0.0 from 8.0.1", - "url": "https://github.com/hapijs/hapi/issues/3316" - }, - { - "id": 173371765, - "labels": ["dependency"], - "number": 3315, - "title": "Update hapijs/call to 3.0.3 from 3.0.2", - "url": "https://github.com/hapijs/hapi/issues/3315" - }, - { - "id": 173371445, - "labels": ["dependency"], - "number": 3314, - "title": "Update hapijs/ammo to 2.0.2 from 2.0.1", - "url": "https://github.com/hapijs/hapi/issues/3314" - }, - { - "id": 172740551, - "labels": ["feature"], - "number": 3313, - "title": "Expose request to server.encode() and decode() generators", - "url": "https://github.com/hapijs/hapi/issues/3313" - }, - { - "id": 172621831, - "labels": ["feature"], - "number": 3308, - "title": "Response validation custom handler", - "url": "https://github.com/hapijs/hapi/pull/3308" - }, - { - "id": 172614457, - "labels": ["dependency"], - "number": 3307, - "title": "Update hapijs/shot to 3.3.1 from 3.1.1", - "url": "https://github.com/hapijs/hapi/issues/3307" - }, - { - "id": 172613415, - "labels": ["feature", "breaking changes"], - "number": 3306, - "title": "Disable request getLog() by default", - "url": "https://github.com/hapijs/hapi/issues/3306" - }, - { - "id": 172559576, - "labels": ["breaking changes"], - "number": 3304, - "title": "Errors when reply.continue() is called with an non-auth argument", - "url": "https://github.com/hapijs/hapi/issues/3304" - }, - { - "id": 172547915, - "labels": ["breaking changes"], - "number": 3303, - "title": "Error when reply() is called with a third argument (non-auth)", - "url": "https://github.com/hapijs/hapi/issues/3303" - }, - { - "id": 172475814, - "labels": ["feature"], - "number": 3302, - "title": "Access to scope errors list from a Forbidden error", - "url": "https://github.com/hapijs/hapi/issues/3302" - }, - { - "id": 172384207, - "labels": ["feature"], - "number": 3300, - "title": "Support custom content-type payload decoders", - "url": "https://github.com/hapijs/hapi/issues/3300" - }, - { - "id": 172382371, - "labels": ["dependency"], - "number": 3299, - "title": "Update hapijs/subtext to 4.2.0 from 4.0.5", - "url": "https://github.com/hapijs/hapi/issues/3299" - }, - { - "id": 172349587, - "labels": ["feature"], - "number": 3298, - "title": "Allow extending server encoding support", - "url": "https://github.com/hapijs/hapi/issues/3298" - }, - { - "id": 172309803, - "labels": ["feature"], - "number": 3296, - "title": "Custom events", - "url": "https://github.com/hapijs/hapi/issues/3296" - }, - { - "id": 172221134, - "labels": ["bug", "breaking changes"], - "number": 3295, - "title": "server.register callback handling does not enforce process.nextTick", - "url": "https://github.com/hapijs/hapi/issues/3295" - }, - { - "id": 171964079, - "labels": ["feature", "breaking changes"], - "number": 3294, - "title": "Replace node's EventEmitter interface", - "url": "https://github.com/hapijs/hapi/issues/3294" - }, - { - "id": 171678501, - "labels": ["bug"], - "number": 3292, - "title": "The \"Vary: accept-encoding\" header is not always set", - "url": "https://github.com/hapijs/hapi/issues/3292" - }, - { - "id": 171675393, - "labels": ["bug"], - "number": 3291, - "title": "Ensure that 206 responses are never compressed", - "url": "https://github.com/hapijs/hapi/pull/3291" - }, - { - "id": 168520172, - "labels": ["feature"], - "number": 3275, - "title": "Support for route authorization", - "url": "https://github.com/hapijs/hapi/issues/3275" - }, - { - "id": 167636912, - "labels": ["bug"], - "number": 3243, - "title": "Content type charset handling", - "url": "https://github.com/hapijs/hapi/issues/3243" - }, - { - "id": 166241448, - "labels": ["feature"], - "number": 3237, - "title": "Set response status message.", - "url": "https://github.com/hapijs/hapi/issues/3237" - }, - { - "id": 163197084, - "labels": ["bug"], - "number": 3227, - "title": "Set route validation bind context", - "url": "https://github.com/hapijs/hapi/pull/3227" - }, - { - "id": 161512858, - "labels": ["feature"], - "number": 3214, - "title": "Support failAction function on validation response failures", - "url": "https://github.com/hapijs/hapi/issues/3214" - }, - { - "id": 159670210, - "labels": ["bug"], - "number": 3201, - "title": "handle more types of promise rejection, for #3102", - "url": "https://github.com/hapijs/hapi/pull/3201" - }, - { - "id": 158860822, - "labels": ["feature"], - "number": 3194, - "title": "output validation error pass source along", - "url": "https://github.com/hapijs/hapi/issues/3194" - }, - { - "id": 156733711, - "labels": ["bug"], - "number": 3179, - "title": "Send correct response for HEAD requests", - "url": "https://github.com/hapijs/hapi/pull/3179" - }, - { - "id": 148312686, - "labels": ["feature"], - "number": 3122, - "title": "Logging improvement", - "url": "https://github.com/hapijs/hapi/issues/3122" - }, - { - "id": 144040540, - "labels": ["bug"], - "number": 3102, - "title": "Rejected promises are returned as successful status codes", - "url": "https://github.com/hapijs/hapi/issues/3102" - }, - { - "id": 137074365, - "labels": ["bug"], - "number": 3065, - "title": "Move HTTP response header validation to node", - "url": "https://github.com/hapijs/hapi/issues/3065" - }, - { - "id": 136432268, - "labels": ["bug", "breaking changes"], - "number": 3061, - "title": "Bug with using Joi.object() for route validation", - "url": "https://github.com/hapijs/hapi/issues/3061" - }, - { - "id": 135504807, - "labels": ["feature"], - "number": 3055, - "title": "Allow onPreResponse to override response and execute other extensions", - "url": "https://github.com/hapijs/hapi/issues/3055" - }, - { - "id": 129103622, - "labels": ["bug"], - "number": 3030, - "title": "Server stop timeout and multiple connections", - "url": "https://github.com/hapijs/hapi/issues/3030" - } - ], - "number": 198, - "url": "https://github.com/hapijs/hapi/milestone/198", - "version": "15.0.0" - }, - { - "date": "2016-08-13T20:39:06Z", - "id": 1916644, - "issues": [ - { - "id": 171026349, - "labels": ["feature"], - "number": 3286, - "title": "Support unmodified early return", - "url": "https://github.com/hapijs/hapi/issues/3286" - } - ], - "number": 197, - "url": "https://github.com/hapijs/hapi/milestone/197", - "version": "14.2.0" - }, - { - "date": "2016-08-01T19:28:29Z", - "id": 1916643, - "issues": [ - { - "id": 168722351, - "labels": ["feature"], - "number": 3277, - "title": "Route config function", - "url": "https://github.com/hapijs/hapi/issues/3277" - } - ], - "number": 196, - "url": "https://github.com/hapijs/hapi/milestone/196", - "version": "14.1.0" - }, - { - "date": "2016-08-01T19:27:27Z", - "id": 1910700, - "issues": [ - { - "id": 168385267, - "labels": ["breaking changes", "release notes"], - "number": 3272, - "title": "14.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/3272" - }, - { - "id": 168308207, - "labels": ["breaking changes"], - "number": 3271, - "title": "hapi 13.5.1 (and 13.5.2) break if routes still use joi 8.x", - "url": "https://github.com/hapijs/hapi/issues/3271" - } - ], - "number": 195, - "url": "https://github.com/hapijs/hapi/milestone/195", - "version": "14.0.0" - }, - { - "date": "2016-07-29T18:17:51Z", - "id": 1910699, - "issues": [ - { - "id": 168182788, - "labels": ["dependency"], - "number": 3249, - "title": "Update hapijs/catbox to 7.1.2 from 7.1.1", - "url": "https://github.com/hapijs/hapi/issues/3249" - } - ], - "number": 194, - "url": "https://github.com/hapijs/hapi/milestone/194", - "version": "13.5.2" - }, - { - "date": "2016-07-28T23:17:15Z", - "id": 1910404, - "issues": [ - { - "id": 168184876, - "labels": ["dependency"], - "number": 3270, - "title": "Update hapijs/topo to 2.0.2 from 2.0.1", - "url": "https://github.com/hapijs/hapi/issues/3270" - }, - { - "id": 168184787, - "labels": ["dependency"], - "number": 3269, - "title": "Update hapijs/wreck to 8.0.1 from 7.2.1", - "url": "https://github.com/hapijs/hapi/issues/3269" - }, - { - "id": 168184674, - "labels": ["dependency"], - "number": 3268, - "title": "Update hapijs/vise to 2.0.2 from 2.0.1", - "url": "https://github.com/hapijs/hapi/issues/3268" - }, - { - "id": 168184584, - "labels": ["dependency"], - "number": 3267, - "title": "Update hapijs/nigel to 2.0.2 from 2.0.1", - "url": "https://github.com/hapijs/hapi/issues/3267" - }, - { - "id": 168184512, - "labels": ["dependency"], - "number": 3266, - "title": "Update hapijs/b64 to 3.0.2 from 3.0.1", - "url": "https://github.com/hapijs/hapi/issues/3266" - }, - { - "id": 168184465, - "labels": ["dependency"], - "number": 3265, - "title": "Update hapijs/pez to 2.1.2 from 2.1.1", - "url": "https://github.com/hapijs/hapi/issues/3265" - }, - { - "id": 168184349, - "labels": ["dependency"], - "number": 3264, - "title": "Update hapijs/context to 3.0.2 from 3.0.1", - "url": "https://github.com/hapijs/hapi/issues/3264" - }, - { - "id": 168184269, - "labels": ["dependency"], - "number": 3263, - "title": "Update hapijs/subtext to 4.0.5 from 4.0.3", - "url": "https://github.com/hapijs/hapi/issues/3263" - }, - { - "id": 168184163, - "labels": ["dependency"], - "number": 3262, - "title": "Update hapijs/statehood to 4.0.3 from 4.0.1", - "url": "https://github.com/hapijs/hapi/issues/3262" - }, - { - "id": 168184094, - "labels": ["dependency"], - "number": 3261, - "title": "Update hapijs/shot to 3.1.1 from 3.1.0", - "url": "https://github.com/hapijs/hapi/issues/3261" - }, - { - "id": 168183996, - "labels": ["dependency"], - "number": 3260, - "title": "Update hapijs/peekaboo to 2.0.2 from 2.0.1", - "url": "https://github.com/hapijs/hapi/issues/3260" - }, - { - "id": 168183851, - "labels": ["dependency"], - "number": 3259, - "title": "Update hapijs/mimos to 3.0.3 from 3.0.2", - "url": "https://github.com/hapijs/hapi/issues/3259" - }, - { - "id": 168183763, - "labels": ["dependency"], - "number": 3258, - "title": "Update hapijs/kilt to 2.0.2 from 2.0.1", - "url": "https://github.com/hapijs/hapi/issues/3258" - }, - { - "id": 168183678, - "labels": ["dependency"], - "number": 3257, - "title": "Update moment/moment to 2.14.1 from 2.13.0", - "url": "https://github.com/hapijs/hapi/issues/3257" - }, - { - "id": 168183553, - "labels": ["dependency"], - "number": 3256, - "title": "Update hapijs/isemail to 2.2.1 from 2.1.0", - "url": "https://github.com/hapijs/hapi/issues/3256" - }, - { - "id": 168183445, - "labels": ["dependency"], - "number": 3255, - "title": "Update hapijs/joi to 9.0.4 from 8.1.0", - "url": "https://github.com/hapijs/hapi/issues/3255" - }, - { - "id": 168183340, - "labels": ["dependency"], - "number": 3254, - "title": "Update hapijs/items to 2.1.1 from 2.1.0", - "url": "https://github.com/hapijs/hapi/issues/3254" - }, - { - "id": 168183225, - "labels": ["dependency"], - "number": 3253, - "title": "Update hueniverse/iron to 4.0.2 from 4.0.1", - "url": "https://github.com/hapijs/hapi/issues/3253" - }, - { - "id": 168183082, - "labels": ["dependency"], - "number": 3252, - "title": "Update hapijs/heavy to 4.0.2 from 4.0.1", - "url": "https://github.com/hapijs/hapi/issues/3252" - }, - { - "id": 168183002, - "labels": ["dependency"], - "number": 3251, - "title": "Update hapijs/cryptiles to 3.0.2 from 3.0.1", - "url": "https://github.com/hapijs/hapi/issues/3251" - }, - { - "id": 168182917, - "labels": ["dependency"], - "number": 3250, - "title": "Update hapijs/catbox-memory to 2.0.3 from 2.0.2", - "url": "https://github.com/hapijs/hapi/issues/3250" - }, - { - "id": 168182692, - "labels": ["dependency"], - "number": 3248, - "title": "Update hapijs/call to 3.0.3 from 3.0.2", - "url": "https://github.com/hapijs/hapi/issues/3248" - }, - { - "id": 168182625, - "labels": ["dependency"], - "number": 3247, - "title": "Update hapijs/ammo to 2.0.2 from 2.0.1", - "url": "https://github.com/hapijs/hapi/issues/3247" - }, - { - "id": 168182523, - "labels": ["dependency"], - "number": 3246, - "title": "Update hapijs/hoek to 4.0.2 from 4.0.0", - "url": "https://github.com/hapijs/hapi/issues/3246" - }, - { - "id": 168182429, - "labels": ["dependency"], - "number": 3245, - "title": "Update hapijs/boom to 3.2.2 from 3.2.0", - "url": "https://github.com/hapijs/hapi/issues/3245" - }, - { - "id": 168182244, - "labels": ["dependency"], - "number": 3244, - "title": "Update hapijs/accept to 2.1.2 from 2.1.1", - "url": "https://github.com/hapijs/hapi/issues/3244" - } - ], - "number": 193, - "url": "https://github.com/hapijs/hapi/milestone/193", - "version": "13.5.1" - }, - { - "date": "2016-07-28T19:56:22Z", - "id": 1862406, - "issues": [ - { - "id": 160271984, - "labels": ["feature"], - "number": 3206, - "title": "override default cache headers for error pages", - "url": "https://github.com/hapijs/hapi/issues/3206" - }, - { - "id": 156502887, - "labels": ["bug"], - "number": 3178, - "title": "Handle thrown error from res.setHeader() and res.writeHead()", - "url": "https://github.com/hapijs/hapi/pull/3178" - }, - { - "id": 156093564, - "labels": ["bug"], - "number": 3174, - "title": "Fixes #3155 - Calling reply without a payload on a JSONP route throws", - "url": "https://github.com/hapijs/hapi/pull/3174" - } - ], - "number": 192, - "url": "https://github.com/hapijs/hapi/milestone/192", - "version": "13.5.0" - }, - { - "date": "2016-07-04T04:35:18Z", - "id": 1780146, - "issues": [ - { - "id": 163600854, - "labels": ["bug", "security", "dependency"], - "number": 3228, - "title": "Update hapijs/call to 3.0.2 from 3.0.1", - "url": "https://github.com/hapijs/hapi/issues/3228" - }, - { - "id": 161700227, - "labels": ["dependency"], - "number": 3216, - "title": "Update hapijs/shot to 3.1.0 from 3.0.1", - "url": "https://github.com/hapijs/hapi/pull/3216" - } - ], - "number": 191, - "url": "https://github.com/hapijs/hapi/milestone/191", - "version": "13.4.2" - }, - { - "date": "2016-05-21T08:11:27Z", - "id": 1753303, - "issues": [ - { - "id": 156089290, - "labels": ["dependency"], - "number": 3173, - "title": "Update hapijs/nigel to 2.0.1 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/3173" - }, - { - "id": 156089279, - "labels": ["dependency"], - "number": 3172, - "title": "Update hapijs/b64 to 3.0.1 from 3.0.0", - "url": "https://github.com/hapijs/hapi/issues/3172" - }, - { - "id": 156089257, - "labels": ["dependency"], - "number": 3171, - "title": "Update hapijs/pez to 2.1.1 from 2.1.0", - "url": "https://github.com/hapijs/hapi/issues/3171" - }, - { - "id": 156089239, - "labels": ["dependency"], - "number": 3170, - "title": "Update hapijs/subtext to 4.0.3 from 4.0.1", - "url": "https://github.com/hapijs/hapi/issues/3170" - }, - { - "id": 156089225, - "labels": ["dependency"], - "number": 3169, - "title": "Update hapijs/statehood to 4.0.1 from 4.0.0", - "url": "https://github.com/hapijs/hapi/issues/3169" - }, - { - "id": 156089211, - "labels": ["dependency"], - "number": 3168, - "title": "Update hapijs/peekaboo to 2.0.1 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/3168" - }, - { - "id": 156089199, - "labels": ["dependency"], - "number": 3167, - "title": "Update hapijs/mimos to 3.0.1 from 3.0.0", - "url": "https://github.com/hapijs/hapi/issues/3167" - }, - { - "id": 156089193, - "labels": ["dependency"], - "number": 3166, - "title": "Update hapijs/kilt to 2.0.1 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/3166" - }, - { - "id": 156089176, - "labels": ["dependency"], - "number": 3165, - "title": "Update hapijs/isemail to 2.1.0 from 2.1.2", - "url": "https://github.com/hapijs/hapi/issues/3165" - }, - { - "id": 156089157, - "labels": ["dependency"], - "number": 3164, - "title": "Update hueniverse/iron to 4.0.1 from 4.0.0", - "url": "https://github.com/hapijs/hapi/issues/3164" - }, - { - "id": 156089142, - "labels": ["dependency"], - "number": 3163, - "title": "Update hapijs/cryptiles to 3.0.1 from 3.0.0", - "url": "https://github.com/hapijs/hapi/issues/3163" - }, - { - "id": 156089121, - "labels": ["dependency"], - "number": 3162, - "title": "Update hapijs/catbox-memory to 2.0.2 from 2.0.1", - "url": "https://github.com/hapijs/hapi/issues/3162" - }, - { - "id": 156089090, - "labels": ["dependency"], - "number": 3161, - "title": "Update hapijs/catbox to 7.1.1 from 7.1.0", - "url": "https://github.com/hapijs/hapi/issues/3161" - }, - { - "id": 156089061, - "labels": ["dependency"], - "number": 3160, - "title": "Update hapijs/call to 3.0.1 from 3.0.0", - "url": "https://github.com/hapijs/hapi/issues/3160" - }, - { - "id": 156088876, - "labels": ["dependency"], - "number": 3159, - "title": "Update hapijs/boom to 3.2.0 from 3.1.3", - "url": "https://github.com/hapijs/hapi/issues/3159" - }, - { - "id": 156088858, - "labels": ["dependency"], - "number": 3158, - "title": "Update hapijs/ammo to 2.0.1 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/3158" - }, - { - "id": 156088845, - "labels": ["dependency"], - "number": 3157, - "title": "Update hapijs/topo to 2.0.1 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/3157" - }, - { - "id": 156088827, - "labels": ["dependency"], - "number": 3156, - "title": "Update hapijs/wreck to 7.2.1 from 7.2.0", - "url": "https://github.com/hapijs/hapi/issues/3156" - }, - { - "id": 148100717, - "labels": ["feature"], - "number": 3121, - "title": "allow array as valid validate config on headers, params, query and payload", - "url": "https://github.com/hapijs/hapi/pull/3121" - }, - { - "id": 148001200, - "labels": ["feature"], - "number": 3119, - "title": "Support [] as payload validation", - "url": "https://github.com/hapijs/hapi/issues/3119" - } - ], - "number": 190, - "url": "https://github.com/hapijs/hapi/milestone/190", - "version": "13.4.1" - }, - { - "date": "2016-05-07T21:32:48Z", - "id": 1679575, - "issues": [ - { - "id": 153618859, - "labels": ["feature", "bug", "breaking changes"], - "number": 3147, - "title": "Pass original validation error if boom", - "url": "https://github.com/hapijs/hapi/issues/3147" - }, - { - "id": 153618464, - "labels": ["dependency"], - "number": 3146, - "title": "Update hapijs/wreck to 7.2.0 from 7.0.2", - "url": "https://github.com/hapijs/hapi/issues/3146" - }, - { - "id": 153618437, - "labels": ["dependency"], - "number": 3145, - "title": "Update hapijs/vise to 2.0.1 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/3145" - }, - { - "id": 153618419, - "labels": ["dependency"], - "number": 3144, - "title": "Update hapijs/content to 3.0.1 from 3.0.0", - "url": "https://github.com/hapijs/hapi/issues/3144" - }, - { - "id": 153618384, - "labels": ["dependency"], - "number": 3143, - "title": "Update jshttp/mime-db to 1.23.0 from 1.22.0", - "url": "https://github.com/hapijs/hapi/issues/3143" - }, - { - "id": 153618178, - "labels": ["dependency"], - "number": 3142, - "title": "Update moment/moment to 2.13.0 from 2.12.0", - "url": "https://github.com/hapijs/hapi/issues/3142" - }, - { - "id": 153618159, - "labels": ["dependency"], - "number": 3141, - "title": "Update hapijs/joi to 8.1.0 from 8.0.4", - "url": "https://github.com/hapijs/hapi/issues/3141" - }, - { - "id": 153618141, - "labels": ["dependency"], - "number": 3140, - "title": "Update hapijs/items to 2.1.0 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/3140" - }, - { - "id": 153618126, - "labels": ["dependency"], - "number": 3139, - "title": "Update hapijs/hoek to 4.0.0 from 3.0.4", - "url": "https://github.com/hapijs/hapi/issues/3139" - }, - { - "id": 153618105, - "labels": ["dependency"], - "number": 3138, - "title": "Update hapijs/heavy to 4.0.1 from 4.0.0", - "url": "https://github.com/hapijs/hapi/issues/3138" - }, - { - "id": 153618081, - "labels": ["dependency"], - "number": 3137, - "title": "Update hapijs/boom to 3.1.3 from 3.1.2", - "url": "https://github.com/hapijs/hapi/issues/3137" - }, - { - "id": 153618067, - "labels": ["dependency"], - "number": 3136, - "title": "Update hapijs/accept to 2.1.1 from 2.1.0", - "url": "https://github.com/hapijs/hapi/issues/3136" - }, - { - "id": 147199065, - "labels": ["dependency"], - "number": 3115, - "title": "Update hapijs/pez to 2.1.0 from 2.0.1", - "url": "https://github.com/hapijs/hapi/issues/3115" - }, - { - "id": 146348008, - "labels": ["bug", "dependency"], - "number": 3111, - "title": "Update hapijs/subtext to 4.0.1 from 4.0.0", - "url": "https://github.com/hapijs/hapi/pull/3111" - } - ], - "number": 189, - "url": "https://github.com/hapijs/hapi/milestone/189", - "version": "13.4.0" - }, - { - "date": "2016-04-02T17:18:49Z", - "id": 1666080, - "issues": [ - { - "id": 145395363, - "labels": ["feature"], - "number": 3107, - "title": "Permit validation on any payload type", - "url": "https://github.com/hapijs/hapi/issues/3107" - }, - { - "id": 137267350, - "labels": ["feature"], - "number": 3068, - "title": "Fast server shutdown", - "url": "https://github.com/hapijs/hapi/pull/3068" - } - ], - "number": 188, - "url": "https://github.com/hapijs/hapi/milestone/188", - "version": "13.3.0" - }, - { - "date": "2016-03-25T16:51:18Z", - "id": 1666078, - "issues": [ - { - "id": 143538580, - "labels": ["bug"], - "number": 3101, - "title": "Auth entity error reports the wrong credential type used", - "url": "https://github.com/hapijs/hapi/issues/3101" - } - ], - "number": 187, - "url": "https://github.com/hapijs/hapi/milestone/187", - "version": "13.2.2" - }, - { - "date": "2016-03-25T16:43:10Z", - "id": 1635402, - "issues": [ - { - "id": 131063558, - "labels": ["feature"], - "number": 3044, - "title": "Enable disabling cache-control headers", - "url": "https://github.com/hapijs/hapi/pull/3044" - }, - { - "id": 122633649, - "labels": ["bug"], - "number": 2979, - "title": "`.charset(charset)` doesn't work on its own in ext", - "url": "https://github.com/hapijs/hapi/issues/2979" - } - ], - "number": 186, - "url": "https://github.com/hapijs/hapi/milestone/186", - "version": "13.2.1" - }, - { - "date": "2016-03-10T01:53:28Z", - "id": 1564333, - "issues": [ - { - "id": 139723649, - "labels": ["feature"], - "number": 3083, - "title": "Allow provisioning server cache after construction", - "url": "https://github.com/hapijs/hapi/issues/3083" - }, - { - "id": 139723496, - "labels": ["dependency"], - "number": 3082, - "title": "Update hapijs/wreck to 7.0.2 from 7.0.0", - "url": "https://github.com/hapijs/hapi/issues/3082" - }, - { - "id": 139723341, - "labels": ["dependency"], - "number": 3081, - "title": "Update hapijs/shot to 3.0.1 from 3.0.0", - "url": "https://github.com/hapijs/hapi/issues/3081" - }, - { - "id": 139723147, - "labels": ["dependency"], - "number": 3080, - "title": "Update jshttp/mime-db to 1.22.0 from 1.20.0", - "url": "https://github.com/hapijs/hapi/issues/3080" - }, - { - "id": 139722884, - "labels": ["dependency"], - "number": 3079, - "title": "Update moment/momemt to 2.12.0 from 2.11.0", - "url": "https://github.com/hapijs/hapi/issues/3079" - }, - { - "id": 139722723, - "labels": ["dependency"], - "number": 3078, - "title": "Update hapijs/joi to 8.0.4 from 7.1.0", - "url": "https://github.com/hapijs/hapi/issues/3078" - }, - { - "id": 139722569, - "labels": ["dependency"], - "number": 3077, - "title": "Update hapijs/boom to 3.1.2 from 3.1.1", - "url": "https://github.com/hapijs/hapi/issues/3077" - }, - { - "id": 137329220, - "labels": ["bug"], - "number": 3069, - "title": "Pass through cookie options when calling reply.unstate()", - "url": "https://github.com/hapijs/hapi/pull/3069" - }, - { - "id": 136197188, - "labels": ["bug"], - "number": 3057, - "title": "Don't re-initialize the server", - "url": "https://github.com/hapijs/hapi/pull/3057" - }, - { - "id": 130755559, - "labels": ["non issue", "security"], - "number": 3042, - "title": "Moment - Regular Expression Denial of Service", - "url": "https://github.com/hapijs/hapi/issues/3042" - }, - { - "id": 125309195, - "labels": ["feature"], - "number": 3015, - "title": "Can not change/remove the \"accept-ranges\" response header", - "url": "https://github.com/hapijs/hapi/issues/3015" - }, - { - "id": 125245673, - "labels": ["feature"], - "number": 3014, - "title": "Update JSON response stringify for better performance", - "url": "https://github.com/hapijs/hapi/pull/3014" - } - ], - "number": 185, - "url": "https://github.com/hapijs/hapi/milestone/185", - "version": "13.1.0" - }, - { - "date": "2016-02-01T08:16:27Z", - "id": 1495069, - "issues": [ - { - "id": 130294603, - "labels": ["breaking changes", "release notes"], - "number": 3040, - "title": "13.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/3040" - }, - { - "id": 130289386, - "labels": ["breaking changes", "security", "dependency"], - "number": 3039, - "title": "Update hueniverse/iron to 4.0.0 from 3.0.1", - "url": "https://github.com/hapijs/hapi/issues/3039" - }, - { - "id": 130289321, - "labels": ["breaking changes", "security", "dependency"], - "number": 3038, - "title": "Update hapijs/statehood to 4.0.0 from 3.1.0", - "url": "https://github.com/hapijs/hapi/issues/3038" - } - ], - "number": 184, - "url": "https://github.com/hapijs/hapi/milestone/184", - "version": "13.0.0" - }, - { - "date": "2016-01-09T22:38:10Z", - "id": 1488188, - "issues": [ - { - "id": 125784871, - "labels": ["feature"], - "number": 3018, - "title": "Allow auth strategies to expose an api", - "url": "https://github.com/hapijs/hapi/issues/3018" - } - ], - "number": 183, - "url": "https://github.com/hapijs/hapi/milestone/183", - "version": "12.1.0" - }, - { - "date": "2016-01-06T19:33:18Z", - "id": 1483703, - "issues": [ - { - "id": 125155762, - "labels": ["bug"], - "number": 3013, - "title": "Fix hapijs/shot dependency", - "url": "https://github.com/hapijs/hapi/pull/3013" - } - ], - "number": 182, - "url": "https://github.com/hapijs/hapi/milestone/182", - "version": "12.0.1" - }, - { - "date": "2016-01-04T23:11:35Z", - "id": 1423406, - "issues": [ - { - "id": 124852839, - "labels": ["feature", "dependency"], - "number": 3012, - "title": "Update hapijs/catbox to 7.1.0 from 7.0.0", - "url": "https://github.com/hapijs/hapi/issues/3012" - }, - { - "id": 124845116, - "labels": ["breaking changes", "dependency"], - "number": 3011, - "title": "Update hapijs/shot to 3.0.0 from 2.0.1", - "url": "https://github.com/hapijs/hapi/issues/3011" - }, - { - "id": 124844975, - "labels": ["dependency"], - "number": 3010, - "title": "Update jshttp/mime-db to 1.20.0 from 1.19.0", - "url": "https://github.com/hapijs/hapi/issues/3010" - }, - { - "id": 124843527, - "labels": ["dependency"], - "number": 3009, - "title": "Update moment/moment to 2.11.0 from 2.10.6", - "url": "https://github.com/hapijs/hapi/issues/3009" - }, - { - "id": 124843392, - "labels": ["dependency"], - "number": 3008, - "title": "Update hapijs/isemail to 2.1.0 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/3008" - }, - { - "id": 124843177, - "labels": ["dependency"], - "number": 3007, - "title": "Update hapijs/joi to 7.1.0 from 7.0.0", - "url": "https://github.com/hapijs/hapi/issues/3007" - }, - { - "id": 124842936, - "labels": ["dependency"], - "number": 3006, - "title": "Update hapijs/hoek to 3.0.4 from 3.0.0", - "url": "https://github.com/hapijs/hapi/issues/3006" - }, - { - "id": 124841916, - "labels": ["dependency"], - "number": 3005, - "title": "Update hapijs/boom to 3.1.1 from 3.0.0", - "url": "https://github.com/hapijs/hapi/issues/3005" - }, - { - "id": 124841723, - "labels": ["dependency"], - "number": 3004, - "title": "Update hapijs/accept to 2.1.0 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/3004" - }, - { - "id": 124604629, - "labels": ["non issue"], - "number": 3002, - "title": "Remove request.session and request.auth.session placeholders", - "url": "https://github.com/hapijs/hapi/issues/3002" - }, - { - "id": 124603001, - "labels": ["feature", "dependency"], - "number": 3001, - "title": "Update hapijs/statehood to 3.1.0 from 3.0.0", - "url": "https://github.com/hapijs/hapi/issues/3001" - }, - { - "id": 124577102, - "labels": ["feature"], - "number": 3000, - "title": "Return a promise when callback missing", - "url": "https://github.com/hapijs/hapi/issues/3000" - }, - { - "id": 124556958, - "labels": ["feature", "breaking changes"], - "number": 2999, - "title": "Support required scope with + prefix", - "url": "https://github.com/hapijs/hapi/issues/2999" - }, - { - "id": 124518280, - "labels": ["feature"], - "number": 2998, - "title": "Support multiple access combinations per route", - "url": "https://github.com/hapijs/hapi/issues/2998" - }, - { - "id": 124313835, - "labels": ["bug"], - "number": 2994, - "title": "Dynamic scope does not work with auth.default()", - "url": "https://github.com/hapijs/hapi/issues/2994" - }, - { - "id": 124313647, - "labels": ["feature", "breaking changes"], - "number": 2993, - "title": "Support forbidden scope with ! prefix", - "url": "https://github.com/hapijs/hapi/issues/2993" - }, - { - "id": 124313599, - "labels": ["breaking changes"], - "number": 2992, - "title": "Normalize auth scope and entity settings under new access option", - "url": "https://github.com/hapijs/hapi/issues/2992" - }, - { - "id": 123728171, - "labels": ["bug", "security"], - "number": 2988, - "title": "Handle invalid date exceptions", - "url": "https://github.com/hapijs/hapi/pull/2988" - }, - { - "id": 123629325, - "labels": ["breaking changes", "release notes"], - "number": 2985, - "title": "12.0.0. Release Notes", - "url": "https://github.com/hapijs/hapi/issues/2985" - }, - { - "id": 123564355, - "labels": ["breaking changes", "dependency"], - "number": 2983, - "title": "Update hapijs/subtext to 4.0.0 from 3.0.1", - "url": "https://github.com/hapijs/hapi/issues/2983" - }, - { - "id": 121891986, - "labels": ["feature"], - "number": 2972, - "title": "Add validation check for stripUnknown route response option", - "url": "https://github.com/hapijs/hapi/pull/2972" - }, - { - "id": 120815588, - "labels": ["bug"], - "number": 2966, - "title": "request.raw.res.end() method is called twice", - "url": "https://github.com/hapijs/hapi/issues/2966" - }, - { - "id": 118796372, - "labels": ["non issue"], - "number": 2957, - "title": "nameless cookie causing hapi fail parsing", - "url": "https://github.com/hapijs/hapi/issues/2957" - }, - { - "id": 115923407, - "labels": ["feature"], - "number": 2936, - "title": "Expose origin matching status", - "url": "https://github.com/hapijs/hapi/issues/2936" - }, - { - "id": 114167275, - "labels": ["feature"], - "number": 2886, - "title": "Add entire auth object to validation context options", - "url": "https://github.com/hapijs/hapi/issues/2886" - } - ], - "number": 178, - "url": "https://github.com/hapijs/hapi/milestone/178", - "version": "12.0.0" - }, - { - "date": "2015-12-27T16:17:35Z", - "id": 1475150, - "issues": [ - { - "id": 123984863, - "labels": ["bug", "security"], - "number": 2990, - "title": "Fix cors config cascade. Closes #2980", - "url": "https://github.com/hapijs/hapi/pull/2990" - }, - { - "id": 122668898, - "labels": ["bug", "security"], - "number": 2980, - "title": "Route level CORS config overrides connection level defaults", - "url": "https://github.com/hapijs/hapi/issues/2980" - } - ], - "number": 181, - "url": "https://github.com/hapijs/hapi/milestone/181", - "version": "11.1.4" - }, - { - "date": "2015-12-24T00:43:18Z", - "id": 1473085, - "issues": [ - { - "id": 123727987, - "labels": ["bug", "security"], - "number": 2987, - "title": "Catch invalid date exceptions", - "url": "https://github.com/hapijs/hapi/issues/2987" - } - ], - "number": 179, - "url": "https://github.com/hapijs/hapi/milestone/179", - "version": "11.1.3" - }, - { - "date": "2015-11-21T22:30:55Z", - "id": 1411759, - "issues": [ - { - "id": 118219559, - "labels": ["test"], - "number": 2953, - "title": "Tests for issue #2950", - "url": "https://github.com/hapijs/hapi/pull/2953" - }, - { - "id": 118161087, - "labels": ["bug"], - "number": 2950, - "title": "Access-Control-Expose-Headers response header duplicate values ", - "url": "https://github.com/hapijs/hapi/issues/2950" - }, - { - "id": 116403240, - "labels": ["bug"], - "number": 2940, - "title": "Fails to set a global route auth config", - "url": "https://github.com/hapijs/hapi/pull/2940" - } - ], - "number": 177, - "url": "https://github.com/hapijs/hapi/milestone/177", - "version": "11.1.2" - }, - { - "date": "2015-11-14T17:39:16Z", - "id": 1395261, - "issues": [ - { - "id": 116932359, - "labels": ["bug", "dependency"], - "number": 2944, - "title": "Update hapijs/subtext to 3.0.1 from 3.0.0", - "url": "https://github.com/hapijs/hapi/pull/2944" - }, - { - "id": 115263434, - "labels": ["bug"], - "number": 2931, - "title": "Lookup route during OPTIONS by using request.info.hostname. Closes #2930", - "url": "https://github.com/hapijs/hapi/pull/2931" - }, - { - "id": 115260451, - "labels": ["bug"], - "number": 2930, - "title": "Route not correctly looked up during CORS OPTIONS request when using vhost", - "url": "https://github.com/hapijs/hapi/issues/2930" - } - ], - "number": 176, - "url": "https://github.com/hapijs/hapi/milestone/176", - "version": "11.1.1" - }, - { - "date": "2015-11-05T08:51:24Z", - "id": 1392202, - "issues": [ - { - "id": 115221209, - "labels": ["feature"], - "number": 2929, - "title": "Allow setting request app and plugins via inject", - "url": "https://github.com/hapijs/hapi/issues/2929" - }, - { - "id": 115216373, - "labels": ["feature"], - "number": 2928, - "title": "Support per-request decoration", - "url": "https://github.com/hapijs/hapi/issues/2928" - } - ], - "number": 174, - "url": "https://github.com/hapijs/hapi/milestone/174", - "version": "11.1.0" - }, - { - "date": "2015-11-03T20:54:21Z", - "id": 1390578, - "issues": [ - { - "id": 114610278, - "labels": ["bug"], - "number": 2894, - "title": "CORS headers to include 'Origin'", - "url": "https://github.com/hapijs/hapi/issues/2894" - } - ], - "number": 173, - "url": "https://github.com/hapijs/hapi/milestone/173", - "version": "11.0.5" - }, - { - "date": "2015-11-03T08:12:18Z", - "id": 1384735, - "issues": [ - { - "id": 114760296, - "labels": ["dependency"], - "number": 2923, - "title": "Update hapijs/vise to 2.0.0 from 1.0.0", - "url": "https://github.com/hapijs/hapi/issues/2923" - }, - { - "id": 114760200, - "labels": ["dependency"], - "number": 2922, - "title": "Update hapijs/nigel to 2.0.0 from 1.0.1", - "url": "https://github.com/hapijs/hapi/issues/2922" - }, - { - "id": 114760081, - "labels": ["dependency"], - "number": 2921, - "title": "Update hapijs/pez to 2.0.1 from 1.0.0", - "url": "https://github.com/hapijs/hapi/issues/2921" - }, - { - "id": 114759999, - "labels": ["dependency"], - "number": 2920, - "title": "Update hapijs/context to 3.0.0 from 1.0.2", - "url": "https://github.com/hapijs/hapi/issues/2920" - }, - { - "id": 114759907, - "labels": ["dependency"], - "number": 2919, - "title": "Update hapijs/subtext to 3.0.0 from 2.0.2", - "url": "https://github.com/hapijs/hapi/issues/2919" - }, - { - "id": 114759862, - "labels": ["dependency"], - "number": 2918, - "title": "Update hapijs/statehood to 3.0.0 from 2.1.1", - "url": "https://github.com/hapijs/hapi/issues/2918" - }, - { - "id": 114759798, - "labels": ["dependency"], - "number": 2917, - "title": "Update hapijs/shot to 2.0.1 from 1.7.0", - "url": "https://github.com/hapijs/hapi/issues/2917" - }, - { - "id": 114759643, - "labels": ["dependency"], - "number": 2916, - "title": "Update hapijs/qs to 6.0.0 from 5.2.0", - "url": "https://github.com/hapijs/hapi/issues/2916" - }, - { - "id": 114759385, - "labels": ["dependency"], - "number": 2915, - "title": "Update hapijs/peekaboo to 2.0.0 from 1.0.0", - "url": "https://github.com/hapijs/hapi/issues/2915" - }, - { - "id": 114759246, - "labels": ["dependency"], - "number": 2914, - "title": "Update hapijs/mimos to 3.0.0 from 2.0.2", - "url": "https://github.com/hapijs/hapi/issues/2914" - }, - { - "id": 114758883, - "labels": ["dependency"], - "number": 2913, - "title": "Update hapijs/kilt to 2.0.0 from 1.1.1", - "url": "https://github.com/hapijs/hapi/issues/2913" - }, - { - "id": 114758616, - "labels": ["dependency"], - "number": 2912, - "title": "Update hueniverse/iron to 3.0.1 from 2.1.3", - "url": "https://github.com/hapijs/hapi/issues/2912" - }, - { - "id": 114757672, - "labels": ["dependency"], - "number": 2911, - "title": "Update hapijs/heavy to 4.0.0 from 3.0.1", - "url": "https://github.com/hapijs/hapi/issues/2911" - }, - { - "id": 114757364, - "labels": ["dependency"], - "number": 2910, - "title": "Update hapijs/cryptiles to 3.0.0 from 2.0.5", - "url": "https://github.com/hapijs/hapi/issues/2910" - }, - { - "id": 114756825, - "labels": ["dependency"], - "number": 2909, - "title": "Update hapijs/catbox-memory to 2.0.1 from 1.1.2", - "url": "https://github.com/hapijs/hapi/issues/2909" - }, - { - "id": 114756404, - "labels": ["dependency"], - "number": 2908, - "title": "Update hapijs/isemail to 2.0.0 from 1.2.0", - "url": "https://github.com/hapijs/hapi/issues/2908" - }, - { - "id": 114755963, - "labels": ["dependency"], - "number": 2907, - "title": "Update hapijs/topo to 2.0.0 from 1.1.0", - "url": "https://github.com/hapijs/hapi/issues/2907" - }, - { - "id": 114755754, - "labels": ["dependency"], - "number": 2906, - "title": "Update hapijs/joi to 7.0.0 from 6.8.1", - "url": "https://github.com/hapijs/hapi/issues/2906" - }, - { - "id": 114755517, - "labels": ["dependency"], - "number": 2905, - "title": "Update hapijs/catbox to 7.0.0 from 6.0.0", - "url": "https://github.com/hapijs/hapi/issues/2905" - }, - { - "id": 114754604, - "labels": ["dependency"], - "number": 2904, - "title": "Update hapijs/call to 3.0.0 from 2.0.2", - "url": "https://github.com/hapijs/hapi/issues/2904" - }, - { - "id": 114754547, - "labels": ["dependency"], - "number": 2903, - "title": "Update hapijs/ammo to 2.0.0 from 1.0.1", - "url": "https://github.com/hapijs/hapi/issues/2903" - }, - { - "id": 114754439, - "labels": ["dependency"], - "number": 2902, - "title": "Update hapijs/accept to 2.0.0 from 1.1.0", - "url": "https://github.com/hapijs/hapi/issues/2902" - }, - { - "id": 114754324, - "labels": ["dependency"], - "number": 2901, - "title": "Update hapijs/wreck to 7.0.0 from 6.2.0", - "url": "https://github.com/hapijs/hapi/issues/2901" - }, - { - "id": 114754261, - "labels": ["dependency"], - "number": 2900, - "title": "Update hapijs/b64 to 3.0.0 from 2.0.1", - "url": "https://github.com/hapijs/hapi/issues/2900" - }, - { - "id": 114754198, - "labels": ["dependency"], - "number": 2899, - "title": "Update hapijs/items to 2.0.0 from 1.1.0", - "url": "https://github.com/hapijs/hapi/issues/2899" - }, - { - "id": 114754124, - "labels": ["dependency"], - "number": 2898, - "title": "Update hapijs/boom to 3.0.0 from 2.9.0", - "url": "https://github.com/hapijs/hapi/issues/2898" - }, - { - "id": 114751064, - "labels": ["dependency"], - "number": 2897, - "title": "Update hapijs/hoek to 3.0.1 from 2.16.3", - "url": "https://github.com/hapijs/hapi/issues/2897" - } - ], - "number": 172, - "url": "https://github.com/hapijs/hapi/milestone/172", - "version": "11.0.4" - }, - { - "date": "2015-10-30T06:09:57Z", - "id": 1368524, - "issues": [ - { - "id": 113952338, - "labels": ["dependency"], - "number": 2885, - "title": "Update hapijs/subtext to 2.0.2 from 2.0.1", - "url": "https://github.com/hapijs/hapi/pull/2885" - }, - { - "id": 113098683, - "labels": ["feature"], - "number": 2877, - "title": "Replace all functions inside functions with arrow functions", - "url": "https://github.com/hapijs/hapi/issues/2877" - }, - { - "id": 113080106, - "labels": ["feature"], - "number": 2875, - "title": "Style change: replace for(i, il) with length in test", - "url": "https://github.com/hapijs/hapi/issues/2875" - }, - { - "id": 113073973, - "labels": ["feature"], - "number": 2874, - "title": "Replace var with let", - "url": "https://github.com/hapijs/hapi/issues/2874" - }, - { - "id": 113059185, - "labels": ["feature", "breaking changes"], - "number": 2873, - "title": "Use const where possible", - "url": "https://github.com/hapijs/hapi/issues/2873" - }, - { - "id": 113057968, - "labels": ["feature"], - "number": 2872, - "title": "Add strict mode", - "url": "https://github.com/hapijs/hapi/issues/2872" - }, - { - "id": 112982911, - "labels": ["bug"], - "number": 2870, - "title": "Fix empty content-length handling for gzip and 204 responses", - "url": "https://github.com/hapijs/hapi/pull/2870" - }, - { - "id": 112942201, - "labels": ["bug"], - "number": 2869, - "title": "Gzip compression is skipped when content-length is unknown", - "url": "https://github.com/hapijs/hapi/issues/2869" - }, - { - "id": 112775815, - "labels": ["bug"], - "number": 2868, - "title": "CORS: Is 404 on OPTIONS request the right thing to do?", - "url": "https://github.com/hapijs/hapi/issues/2868" - }, - { - "id": 112622113, - "labels": ["bug", "breaking changes", "security"], - "number": 2867, - "title": "Skip extensions for notFound and badRequest", - "url": "https://github.com/hapijs/hapi/issues/2867" - }, - { - "id": 112309946, - "labels": ["dependency"], - "number": 2862, - "title": "Update hapijs/subtext to 2.0.2 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/2862" - } - ], - "number": 171, - "url": "https://github.com/hapijs/hapi/milestone/171", - "version": "11.0.3" - }, - { - "date": "2015-10-21T15:42:18Z", - "id": 1365472, - "issues": [ - { - "id": 112612570, - "labels": ["bug"], - "number": 2866, - "title": "Fixed an issue with mixed-case headers not being matched correctly in CORS", - "url": "https://github.com/hapijs/hapi/pull/2866" - }, - { - "id": 111950613, - "labels": ["bug"], - "number": 2852, - "title": "request.params undefined when route not found", - "url": "https://github.com/hapijs/hapi/issues/2852" - } - ], - "number": 170, - "url": "https://github.com/hapijs/hapi/milestone/170", - "version": "11.0.2" - }, - { - "date": "2015-10-20T04:48:16Z", - "id": 1360091, - "issues": [ - { - "id": 112222285, - "labels": ["feature"], - "number": 2859, - "title": "Add error messages to 404's caused by cors closes #2857", - "url": "https://github.com/hapijs/hapi/pull/2859" - }, - { - "id": 112218941, - "labels": ["feature", "breaking changes", "security"], - "number": 2858, - "title": "Add 'Accept' to default header per #2855", - "url": "https://github.com/hapijs/hapi/pull/2858" - } - ], - "number": 169, - "url": "https://github.com/hapijs/hapi/milestone/169", - "version": "11.0.1" - }, - { - "date": "2015-10-16T19:32:53Z", - "id": 1357601, - "issues": [ - { - "id": 111895000, - "labels": ["breaking changes", "release notes"], - "number": 2850, - "title": "11.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/2850" - }, - { - "id": 111888075, - "labels": ["breaking changes"], - "number": 2849, - "title": "Add 204 to statuses cached by default", - "url": "https://github.com/hapijs/hapi/issues/2849" - }, - { - "id": 111878987, - "labels": ["feature"], - "number": 2848, - "title": "Allow response validation of non-objects", - "url": "https://github.com/hapijs/hapi/issues/2848" - }, - { - "id": 111772823, - "labels": ["breaking changes", "dependency"], - "number": 2847, - "title": "Update hapijs/qs to 5.2.0 from 4.0.0", - "url": "https://github.com/hapijs/hapi/issues/2847" - }, - { - "id": 111710906, - "labels": ["feature"], - "number": 2845, - "title": "Allow empty response to default to 204", - "url": "https://github.com/hapijs/hapi/issues/2845" - }, - { - "id": 111349802, - "labels": ["bug", "breaking changes", "security"], - "number": 2840, - "title": "CORS route-specific override can conflict with connection defaults", - "url": "https://github.com/hapijs/hapi/issues/2840" - }, - { - "id": 109596360, - "labels": ["breaking changes"], - "number": 2814, - "title": "Remove server.after()", - "url": "https://github.com/hapijs/hapi/issues/2814" - }, - { - "id": 109563464, - "labels": ["bug", "breaking changes"], - "number": 2807, - "title": "Remove id from request received event", - "url": "https://github.com/hapijs/hapi/issues/2807" - } - ], - "number": 168, - "url": "https://github.com/hapijs/hapi/milestone/168", - "version": "11.0.0" - }, - { - "date": "2015-10-15T16:01:43Z", - "id": 1345034, - "issues": [ - { - "id": 111647969, - "labels": ["feature"], - "number": 2844, - "title": "Server new route event", - "url": "https://github.com/hapijs/hapi/issues/2844" - }, - { - "id": 109910428, - "labels": ["feature"], - "number": 2829, - "title": "Expanded `registrations` API. Added test. Updated docs.", - "url": "https://github.com/hapijs/hapi/pull/2829" - }, - { - "id": 66507485, - "labels": ["bug", "breaking changes", "security"], - "number": 2491, - "title": "CORS pre-fetch not respecting per-route config", - "url": "https://github.com/hapijs/hapi/issues/2491" - } - ], - "number": 167, - "url": "https://github.com/hapijs/hapi/milestone/167", - "version": "10.5.0" - }, - { - "date": "2015-10-08T16:05:56Z", - "id": 1339928, - "issues": [ - { - "id": 110397884, - "labels": ["dependency", "lts"], - "number": 2836, - "title": "Update hapijs/heavy to 3.0.1 from 3.0.0", - "url": "https://github.com/hapijs/hapi/issues/2836" - } - ], - "number": 164, - "url": "https://github.com/hapijs/hapi/milestone/164", - "version": "10.4.1" - }, - { - "date": "2015-10-06T09:26:00Z", - "id": 1336465, - "issues": [ - { - "id": 109899885, - "labels": ["bug", "dependency"], - "number": 2828, - "title": "Update hapijs/shot to 1.7.0 from 1.6.1", - "url": "https://github.com/hapijs/hapi/issues/2828" - }, - { - "id": 109848355, - "labels": ["feature"], - "number": 2827, - "title": "Enhance server.ext() to accept an array of event objects", - "url": "https://github.com/hapijs/hapi/issues/2827" - }, - { - "id": 109734129, - "labels": ["dependency"], - "number": 2826, - "title": "Update hapijs/topo to 1.1.0 from 1.0.3", - "url": "https://github.com/hapijs/hapi/issues/2826" - }, - { - "id": 109725277, - "labels": ["bug"], - "number": 2824, - "title": "request.info.host - Host header wrong in server.inject", - "url": "https://github.com/hapijs/hapi/issues/2824" - }, - { - "id": 109662171, - "labels": ["feature"], - "number": 2823, - "title": "Skip empty extension points in request lifecycle", - "url": "https://github.com/hapijs/hapi/issues/2823" - }, - { - "id": 109658608, - "labels": ["bug"], - "number": 2822, - "title": "Plugin schema too restrictive", - "url": "https://github.com/hapijs/hapi/issues/2822" - }, - { - "id": 109654417, - "labels": ["feature", "breaking changes"], - "number": 2819, - "title": "Replace single connection server decorations with assertions", - "url": "https://github.com/hapijs/hapi/issues/2819" - }, - { - "id": 109653456, - "labels": ["feature"], - "number": 2818, - "title": "Support plugin level once attribute", - "url": "https://github.com/hapijs/hapi/issues/2818" - }, - { - "id": 81468481, - "labels": ["feature"], - "number": 2566, - "title": "Lifecycle hooks on routes", - "url": "https://github.com/hapijs/hapi/issues/2566" - } - ], - "number": 163, - "url": "https://github.com/hapijs/hapi/milestone/163", - "version": "10.4.0" - }, - { - "date": "2015-10-04T00:04:55Z", - "id": 1336333, - "issues": [ - { - "id": 105004067, - "labels": ["feature"], - "number": 2754, - "title": "Add connections inside a plugin", - "url": "https://github.com/hapijs/hapi/issues/2754" - } - ], - "number": 162, - "url": "https://github.com/hapijs/hapi/milestone/162", - "version": "10.3.0" - }, - { - "date": "2015-10-03T19:33:29Z", - "id": 1335943, - "issues": [ - { - "id": 109639990, - "labels": ["bug"], - "number": 2817, - "title": "Multiple connectionless plugin exceptions", - "url": "https://github.com/hapijs/hapi/issues/2817" - } - ], - "number": 161, - "url": "https://github.com/hapijs/hapi/milestone/161", - "version": "10.2.1" - }, - { - "date": "2015-10-03T06:23:10Z", - "id": 1324063, - "issues": [ - { - "id": 109605517, - "labels": ["feature"], - "number": 2815, - "title": "Cleanup after() options", - "url": "https://github.com/hapijs/hapi/issues/2815" - }, - { - "id": 109592800, - "labels": ["bug", "breaking changes"], - "number": 2813, - "title": "Update server root methods when adding 2nd connection", - "url": "https://github.com/hapijs/hapi/issues/2813" - }, - { - "id": 109585522, - "labels": ["bug"], - "number": 2812, - "title": "Prevent adding server extensions once initialize() is called", - "url": "https://github.com/hapijs/hapi/issues/2812" - }, - { - "id": 109580498, - "labels": ["feature"], - "number": 2811, - "title": "Support connectionless plugins", - "url": "https://github.com/hapijs/hapi/issues/2811" - }, - { - "id": 109579528, - "labels": ["bug", "breaking changes"], - "number": 2809, - "title": "Return plugin dependency errors via callback instead of throwing", - "url": "https://github.com/hapijs/hapi/issues/2809" - }, - { - "id": 109567520, - "labels": ["bug", "breaking changes"], - "number": 2808, - "title": "Pass start() and initialize() errors via callback, not throw", - "url": "https://github.com/hapijs/hapi/issues/2808" - }, - { - "id": 109536616, - "labels": ["dependency"], - "number": 2806, - "title": "Update hapijs/isemail to 1.2.0 from 1.1.1 ", - "url": "https://github.com/hapijs/hapi/issues/2806" - }, - { - "id": 109536447, - "labels": ["dependency"], - "number": 2805, - "title": "Update hapijs/joi to 6.8.0 from 6.6.1 ", - "url": "https://github.com/hapijs/hapi/issues/2805" - }, - { - "id": 109390569, - "labels": ["bug"], - "number": 2804, - "title": "Apply arguments schema more consistently", - "url": "https://github.com/hapijs/hapi/issues/2804" - }, - { - "id": 108776180, - "labels": ["bug"], - "number": 2796, - "title": "don't duplicate accept-encoding in vary header", - "url": "https://github.com/hapijs/hapi/pull/2796" - }, - { - "id": 108523100, - "labels": ["feature"], - "number": 2790, - "title": "Add cache stats to server methods", - "url": "https://github.com/hapijs/hapi/pull/2790" - }, - { - "id": 108348479, - "labels": ["feature"], - "number": 2788, - "title": "Option to turn off domains", - "url": "https://github.com/hapijs/hapi/issues/2788" - }, - { - "id": 107538197, - "labels": ["feature"], - "number": 2777, - "title": "Public API for Registered Plugins", - "url": "https://github.com/hapijs/hapi/issues/2777" - }, - { - "id": 107274674, - "labels": ["security"], - "number": 2773, - "title": "Detects and rejects malformed response headers", - "url": "https://github.com/hapijs/hapi/pull/2773" - }, - { - "id": 105919629, - "labels": ["feature"], - "number": 2763, - "title": "get cache stats for a server method?", - "url": "https://github.com/hapijs/hapi/issues/2763" - }, - { - "id": 105451911, - "labels": ["feature"], - "number": 2761, - "title": "Conditional register() for skipping already registered plugins", - "url": "https://github.com/hapijs/hapi/issues/2761" - }, - { - "id": 102993662, - "labels": ["bug", "breaking changes"], - "number": 2736, - "title": "Stopping the server while starting it", - "url": "https://github.com/hapijs/hapi/issues/2736" - }, - { - "id": 102854190, - "labels": ["feature"], - "number": 2733, - "title": "CORS Headers", - "url": "https://github.com/hapijs/hapi/issues/2733" - }, - { - "id": 54491702, - "labels": ["bug"], - "number": 2352, - "title": "setting undefined headers on transmit", - "url": "https://github.com/hapijs/hapi/issues/2352" - }, - { - "id": 39939287, - "labels": ["feature"], - "number": 1850, - "title": "Set per-plugin registration options when registering an array of plugins", - "url": "https://github.com/hapijs/hapi/issues/1850" - } - ], - "number": 160, - "url": "https://github.com/hapijs/hapi/milestone/160", - "version": "10.2.0" - }, - { - "date": "2015-09-25T15:35:28Z", - "id": 1319597, - "issues": [ - { - "id": 108346050, - "labels": ["dependency"], - "number": 2787, - "title": "Update hapijs/wreck to 6.2.0 from 6.1.0", - "url": "https://github.com/hapijs/hapi/issues/2787" - }, - { - "id": 108345879, - "labels": ["dependency"], - "number": 2786, - "title": "Update hapijs/b64 to 2.0.1 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/2786" - }, - { - "id": 108345655, - "labels": ["dependency"], - "number": 2785, - "title": "Update hapijs/shot to 1.6.1 from 1.6.0", - "url": "https://github.com/hapijs/hapi/issues/2785" - }, - { - "id": 108345509, - "labels": ["dependency"], - "number": 2784, - "title": "Update jshttp/mime-db to 1.19.0 from 1.18.0", - "url": "https://github.com/hapijs/hapi/issues/2784" - }, - { - "id": 108345218, - "labels": ["dependency"], - "number": 2783, - "title": "Update hapijs/hoek to 2.16.3 from 2.14.0", - "url": "https://github.com/hapijs/hapi/issues/2783" - }, - { - "id": 108345087, - "labels": ["dependency"], - "number": 2782, - "title": "Update hapijs/cryptiles to 2.0.5 from 2.0.4", - "url": "https://github.com/hapijs/hapi/issues/2782" - }, - { - "id": 107424279, - "labels": ["feature", "security"], - "number": 2776, - "title": "Add preload flag to HSTS header and fix casing for includeSubDomains.", - "url": "https://github.com/hapijs/hapi/pull/2776" - }, - { - "id": 68786718, - "labels": ["bug"], - "number": 2505, - "title": "request.state occasionally null", - "url": "https://github.com/hapijs/hapi/issues/2505" - } - ], - "number": 159, - "url": "https://github.com/hapijs/hapi/milestone/159", - "version": "10.1.0" - }, - { - "date": "2015-09-23T01:24:00Z", - "id": 1319596, - "issues": [ - { - "id": 107832242, - "labels": ["test"], - "number": 2779, - "title": "Flaky test? \"Request does not return an error when server is responding when the timeout occurs\"", - "url": "https://github.com/hapijs/hapi/issues/2779" - } - ], - "number": 158, - "url": "https://github.com/hapijs/hapi/milestone/158", - "version": "10.0.1" - }, - { - "date": "2015-09-23T01:23:00Z", - "id": 1301714, - "issues": [ - { - "id": 106091253, - "labels": ["breaking changes", "lts"], - "number": 2765, - "title": "node v4", - "url": "https://github.com/hapijs/hapi/issues/2765" - }, - { - "id": 106091022, - "labels": ["breaking changes", "release notes"], - "number": 2764, - "title": "10.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/2764" - } - ], - "number": 157, - "url": "https://github.com/hapijs/hapi/milestone/157", - "version": "10.0.0" - }, - { - "date": "2015-12-24T00:45:09Z", - "id": 1473187, - "issues": [ - { - "id": 123740749, - "labels": ["bug", "security", "lts"], - "number": 2989, - "title": "Handle Date parsing error", - "url": "https://github.com/hapijs/hapi/issues/2989" - } - ], - "number": 180, - "url": "https://github.com/hapijs/hapi/milestone/180", - "version": "9.5.1" - }, - { - "date": "2015-11-05T08:50:39Z", - "id": 1395240, - "issues": [], - "number": 175, - "url": "https://github.com/hapijs/hapi/milestone/175", - "version": "9.5.0" - }, - { - "date": "2015-10-07T23:31:32Z", - "id": 1343625, - "issues": [ - { - "id": 110340067, - "labels": ["bug", "lts"], - "number": 2835, - "title": "hapi-lts requiring node 4 and no updates to hapi 9?", - "url": "https://github.com/hapijs/hapi/issues/2835" - } - ], - "number": 166, - "url": "https://github.com/hapijs/hapi/milestone/166", - "version": "9.4.1" - }, - { - "date": "2015-10-07T22:49:37Z", - "id": 1343586, - "issues": [ - { - "id": 110333753, - "labels": ["lts"], - "number": 2834, - "title": "9.4.0 LTS", - "url": "https://github.com/hapijs/hapi/issues/2834" - } - ], - "number": 165, - "url": "https://github.com/hapijs/hapi/milestone/165", - "version": "9.4.0" - }, - { - "date": "2015-09-11T20:25:13Z", - "id": 1292639, - "issues": [ - { - "id": 105276989, - "labels": ["bug"], - "number": 2760, - "title": "Decorators fail with nested require calls", - "url": "https://github.com/hapijs/hapi/issues/2760" - } - ], - "number": 156, - "url": "https://github.com/hapijs/hapi/milestone/156", - "version": "9.3.1" - }, - { - "date": "2015-09-06T17:34:29Z", - "id": 1292638, - "issues": [ - { - "id": 105105830, - "labels": ["feature", "bug", "breaking changes", "security"], - "number": 2757, - "title": "Require allowInternals option on server.inject() to call isInternal routes", - "url": "https://github.com/hapijs/hapi/issues/2757" - } - ], - "number": 155, - "url": "https://github.com/hapijs/hapi/milestone/155", - "version": "9.3.0" - }, - { - "date": "2015-09-06T17:34:00Z", - "id": 1289549, - "issues": [ - { - "id": 105034268, - "labels": ["feature"], - "number": 2756, - "title": "Expose route active authentication configuration", - "url": "https://github.com/hapijs/hapi/issues/2756" - }, - { - "id": 105034242, - "labels": ["dependency"], - "number": 2755, - "title": "Update jshttp/mime-db to 1.18.0 from 1.17.0", - "url": "https://github.com/hapijs/hapi/issues/2755" - } - ], - "number": 154, - "url": "https://github.com/hapijs/hapi/milestone/154", - "version": "9.2.0" - }, - { - "date": "2015-09-04T05:34:40Z", - "id": 1285726, - "issues": [ - { - "id": 104832979, - "labels": ["feature"], - "number": 2750, - "title": "Route config for internal access only routes", - "url": "https://github.com/hapijs/hapi/issues/2750" - } - ], - "number": 153, - "url": "https://github.com/hapijs/hapi/milestone/153", - "version": "9.1.0" - }, - { - "date": "2015-09-02T07:51:22Z", - "id": 1262833, - "issues": [ - { - "id": 103281896, - "labels": ["bug"], - "number": 2739, - "title": "Updated error when calling server.start with no callback", - "url": "https://github.com/hapijs/hapi/pull/2739" - }, - { - "id": 102016723, - "labels": ["bug"], - "number": 2727, - "title": "Decorations not propagated to sibling plugins", - "url": "https://github.com/hapijs/hapi/issues/2727" - } - ], - "number": 152, - "url": "https://github.com/hapijs/hapi/milestone/152", - "version": "9.0.4" - }, - { - "date": "2015-08-19T15:53:34Z", - "id": 1256635, - "issues": [ - { - "id": 101772248, - "labels": ["dependency"], - "number": 2725, - "title": "Update hapijs/catbox-memory to 1.1.2 from 1.1.1", - "url": "https://github.com/hapijs/hapi/pull/2725" - }, - { - "id": 101402917, - "labels": ["bug"], - "number": 2723, - "title": "Tape and server.inject problem", - "url": "https://github.com/hapijs/hapi/issues/2723" - } - ], - "number": 151, - "url": "https://github.com/hapijs/hapi/milestone/151", - "version": "9.0.3" - }, - { - "date": "2015-08-15T23:50:22Z", - "id": 1253819, - "issues": [ - { - "id": 101220104, - "labels": ["dependency"], - "number": 2717, - "title": "Update jshttp/mime-db to 1.17.0 from 1.16.0", - "url": "https://github.com/hapijs/hapi/issues/2717" - }, - { - "id": 101201861, - "labels": ["bug"], - "number": 2714, - "title": "Setting server method cache generateTimeout to false results in error", - "url": "https://github.com/hapijs/hapi/issues/2714" - } - ], - "number": 150, - "url": "https://github.com/hapijs/hapi/milestone/150", - "version": "9.0.2" - }, - { - "date": "2015-08-13T15:39:16Z", - "id": 1251164, - "issues": [ - { - "id": 100490784, - "labels": ["bug", "dependency"], - "number": 2699, - "title": "npm install hapi misses wreck sub-dependency", - "url": "https://github.com/hapijs/hapi/issues/2699" - } - ], - "number": 149, - "url": "https://github.com/hapijs/hapi/milestone/149", - "version": "9.0.1" - }, - { - "date": "2015-08-12T06:49:23Z", - "id": 1126542, - "issues": [ - { - "id": 101235807, - "labels": ["breaking changes"], - "number": 2718, - "title": "Breaking change with query string validation from 8.6.0 to 9.0.2", - "url": "https://github.com/hapijs/hapi/issues/2718" - }, - { - "id": 100467354, - "labels": ["dependency"], - "number": 2698, - "title": "Update hapijs/content to 1.0.2 from 1.0.1", - "url": "https://github.com/hapijs/hapi/issues/2698" - }, - { - "id": 100465222, - "labels": ["dependency"], - "number": 2697, - "title": "Update moment/moment to 2.10.6 from 2.10.3", - "url": "https://github.com/hapijs/hapi/issues/2697" - }, - { - "id": 100464886, - "labels": ["dependency"], - "number": 2696, - "title": "Update hapijs/joi to 6.6.1 from 6.4.1", - "url": "https://github.com/hapijs/hapi/issues/2696" - }, - { - "id": 100464713, - "labels": ["dependency"], - "number": 2695, - "title": "Update hueniverse/iron to 2.1.3 from 2.1.2", - "url": "https://github.com/hapijs/hapi/issues/2695" - }, - { - "id": 100463964, - "labels": ["dependency"], - "number": 2694, - "title": "Update hapijs/call to 2.0.2 from 2.0.1", - "url": "https://github.com/hapijs/hapi/issues/2694" - }, - { - "id": 100463530, - "labels": ["dependency"], - "number": 2693, - "title": "Update hapijs/boom to 2.8.0 from 2.7.2", - "url": "https://github.com/hapijs/hapi/issues/2693" - }, - { - "id": 100462830, - "labels": ["dependency"], - "number": 2692, - "title": "Update hapijs/ammo to 1.0.1 from 1.0.0", - "url": "https://github.com/hapijs/hapi/issues/2692" - }, - { - "id": 100462301, - "labels": ["dependency"], - "number": 2691, - "title": "Update hapijs/accept to 1.1.0 from 1.0.0", - "url": "https://github.com/hapijs/hapi/issues/2691" - }, - { - "id": 100418484, - "labels": ["breaking changes", "dependency"], - "number": 2689, - "title": "Update hapijs/subtext from 1.1.1 to 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/2689" - }, - { - "id": 100369673, - "labels": ["feature"], - "number": 2688, - "title": "Add server.initialize()", - "url": "https://github.com/hapijs/hapi/issues/2688" - }, - { - "id": 100232801, - "labels": ["feature"], - "number": 2687, - "title": "Set plugin options in realm", - "url": "https://github.com/hapijs/hapi/issues/2687" - }, - { - "id": 100220759, - "labels": ["feature", "breaking changes"], - "number": 2686, - "title": "Require callback in start() and end()", - "url": "https://github.com/hapijs/hapi/issues/2686" - }, - { - "id": 100199053, - "labels": ["feature"], - "number": 2685, - "title": "Allow server.ext() to extend server actions (start, stop)", - "url": "https://github.com/hapijs/hapi/issues/2685" - }, - { - "id": 99942812, - "labels": ["feature", "bug", "breaking changes", "dependency"], - "number": 2684, - "title": "Update hapijs/catbox to 6.0.0 from 4.3.0", - "url": "https://github.com/hapijs/hapi/issues/2684" - }, - { - "id": 99779392, - "labels": ["dependency"], - "number": 2683, - "title": "Update jshttp/mime-db to 1.16.0 from 1.14.0", - "url": "https://github.com/hapijs/hapi/issues/2683" - }, - { - "id": 99737710, - "labels": ["breaking changes", "release notes"], - "number": 2682, - "title": "9.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/2682" - }, - { - "id": 99732968, - "labels": ["breaking changes"], - "number": 2681, - "title": "Remove server files settings", - "url": "https://github.com/hapijs/hapi/issues/2681" - }, - { - "id": 98911158, - "labels": ["feature", "dependency"], - "number": 2675, - "title": "Update hapijs/shot to 1.6.0 from 1.5.3", - "url": "https://github.com/hapijs/hapi/pull/2675" - }, - { - "id": 98808932, - "labels": ["bug"], - "number": 2673, - "title": "304 response sends: no-cache regardless of routes.cache settings", - "url": "https://github.com/hapijs/hapi/issues/2673" - }, - { - "id": 97497114, - "labels": ["bug", "dependency"], - "number": 2665, - "title": "Server breaks when using cached server method", - "url": "https://github.com/hapijs/hapi/issues/2665" - }, - { - "id": 97204252, - "labels": ["feature"], - "number": 2662, - "title": "Added schema validation when creating a server method using object", - "url": "https://github.com/hapijs/hapi/pull/2662" - }, - { - "id": 97076551, - "labels": ["bug"], - "number": 2661, - "title": "No longer removing response validation from route object if sample = 0", - "url": "https://github.com/hapijs/hapi/pull/2661" - }, - { - "id": 95034917, - "labels": ["bug", "test"], - "number": 2645, - "title": "Add failing test for #2628", - "url": "https://github.com/hapijs/hapi/pull/2645" - }, - { - "id": 94562977, - "labels": ["bug"], - "number": 2641, - "title": "Vary accept-encoding header not always set for compressible content", - "url": "https://github.com/hapijs/hapi/issues/2641" - }, - { - "id": 92992095, - "labels": ["bug"], - "number": 2628, - "title": "Multiple etag problems with directory handler causing browser use outdated cached content.", - "url": "https://github.com/hapijs/hapi/issues/2628" - }, - { - "id": 92941994, - "labels": ["breaking changes"], - "number": 2626, - "title": "Remove inert, h2o2, and vision from core", - "url": "https://github.com/hapijs/hapi/issues/2626" - }, - { - "id": 90664257, - "labels": ["bug"], - "number": 2616, - "title": "Strange behaviour with throw in handlers", - "url": "https://github.com/hapijs/hapi/issues/2616" - }, - { - "id": 83363351, - "labels": ["bug", "breaking changes"], - "number": 2576, - "title": "Parsing requests with no payload", - "url": "https://github.com/hapijs/hapi/issues/2576" - }, - { - "id": 72320100, - "labels": ["feature"], - "number": 2520, - "title": "API wart: server.dependency after method lacks options", - "url": "https://github.com/hapijs/hapi/issues/2520" - }, - { - "id": 71450574, - "labels": ["feature"], - "number": 2517, - "title": "Means to force plugin registration to complete prior to server.inject", - "url": "https://github.com/hapijs/hapi/issues/2517" - }, - { - "id": 71441703, - "labels": ["feature", "breaking changes"], - "number": 2516, - "title": "Assert when server.start() is called before server.register() is done", - "url": "https://github.com/hapijs/hapi/issues/2516" - }, - { - "id": 60278126, - "labels": ["feature"], - "number": 2449, - "title": "Isn't there any api document to disable compression? (gzip)", - "url": "https://github.com/hapijs/hapi/issues/2449" - }, - { - "id": 58999614, - "labels": ["feature"], - "number": 2432, - "title": "TLS certificate errors are not surfaced in logs", - "url": "https://github.com/hapijs/hapi/issues/2432" - }, - { - "id": 56528486, - "labels": ["feature"], - "number": 2389, - "title": "Support plugin shutdown", - "url": "https://github.com/hapijs/hapi/issues/2389" - } - ], - "number": 141, - "url": "https://github.com/hapijs/hapi/milestone/141", - "version": "9.0.0" - }, - { - "date": "2015-07-29T19:31:38Z", - "id": 1192829, - "issues": [ - { - "id": 97996340, - "labels": ["dependency"], - "number": 2671, - "title": "Update hapijs/topo to 1.0.3 from 1.0.2", - "url": "https://github.com/hapijs/hapi/pull/2671" - }, - { - "id": 97992798, - "labels": ["bug", "dependency"], - "number": 2670, - "title": "Update hapijs/topo to 1.0.3 from 1.0.2", - "url": "https://github.com/hapijs/hapi/issues/2670" - }, - { - "id": 97375667, - "labels": ["feature"], - "number": 2664, - "title": "allow for proto inherit with Server (\"instanceof\" instead of \"===\")", - "url": "https://github.com/hapijs/hapi/pull/2664" - }, - { - "id": 97327263, - "labels": ["feature"], - "number": 2663, - "title": "internals.Server does not allow proto inheritance", - "url": "https://github.com/hapijs/hapi/issues/2663" - }, - { - "id": 96690187, - "labels": ["bug"], - "number": 2657, - "title": "`server.ext` dependencies not ordered using `before` as array", - "url": "https://github.com/hapijs/hapi/issues/2657" - }, - { - "id": 94588937, - "labels": ["bug"], - "number": 2642, - "title": "Failing test for `server.ext` with complex deps.", - "url": "https://github.com/hapijs/hapi/pull/2642" - }, - { - "id": 93261965, - "labels": ["bug", "dependency"], - "number": 2631, - "title": "Update hapijs/inert to 2.1.6 from 2.1.5", - "url": "https://github.com/hapijs/hapi/pull/2631" - } - ], - "number": 148, - "url": "https://github.com/hapijs/hapi/milestone/148", - "version": "8.8.1" - }, - { - "date": "2015-07-03T22:44:44Z", - "id": 1152830, - "issues": [ - { - "id": 92945318, - "labels": ["dependency"], - "number": 2627, - "title": "Update hapijs/subtext to 1.1.1 from 1.1.0", - "url": "https://github.com/hapijs/hapi/issues/2627" - }, - { - "id": 92473191, - "labels": ["bug", "dependency"], - "number": 2625, - "title": "Update hapijs/wreck to 6.0.0 from 5.5.1", - "url": "https://github.com/hapijs/hapi/issues/2625" - }, - { - "id": 92276209, - "labels": ["dependency"], - "number": 2623, - "title": "Update hapijs/qs to 4.0.0 from 2.4.2", - "url": "https://github.com/hapijs/hapi/issues/2623" - }, - { - "id": 92272665, - "labels": ["feature", "dependency"], - "number": 2622, - "title": "Support qs options in payload and query parsing", - "url": "https://github.com/hapijs/hapi/issues/2622" - }, - { - "id": 89970898, - "labels": ["dependency"], - "number": 2613, - "title": "Update jshttp/mime-db to 1.14.0 from 1.11.0", - "url": "https://github.com/hapijs/hapi/issues/2613" - }, - { - "id": 89970808, - "labels": ["dependency"], - "number": 2612, - "title": "Update hapijs/vision to 2.0.1 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/2612" - }, - { - "id": 63827787, - "labels": ["feature"], - "number": 2480, - "title": "Ability to pass options to qs for payload parsing", - "url": "https://github.com/hapijs/hapi/issues/2480" - } - ], - "number": 147, - "url": "https://github.com/hapijs/hapi/milestone/147", - "version": "8.8.0" - }, - { - "date": "2015-06-06T17:06:45Z", - "id": 1151052, - "issues": [ - { - "id": 85780956, - "labels": ["feature", "dependency"], - "number": 2587, - "title": "Update hapijs/catbox to 4.3.0 from 4.2.2", - "url": "https://github.com/hapijs/hapi/issues/2587" - } - ], - "number": 146, - "url": "https://github.com/hapijs/hapi/milestone/146", - "version": "8.7.0" - }, - { - "date": "2015-06-05T12:17:42Z", - "id": 1140647, - "issues": [ - { - "id": 85153332, - "labels": ["bug", "breaking changes", "dependency"], - "number": 2586, - "title": "Update hapijs/shot to 1.5.1 from 1.5.0", - "url": "https://github.com/hapijs/hapi/issues/2586" - }, - { - "id": 85137921, - "labels": ["dependency"], - "number": 2584, - "title": "Update jshttp/mime-db to 1.11.0 from 1.10.0", - "url": "https://github.com/hapijs/hapi/issues/2584" - }, - { - "id": 85116420, - "labels": ["dependency"], - "number": 2583, - "title": "Update hapijs/statehood to 2.1.1 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/2583" - } - ], - "number": 145, - "url": "https://github.com/hapijs/hapi/milestone/145", - "version": "8.6.1" - }, - { - "date": "2015-05-29T20:14:00Z", - "id": 1139241, - "issues": [ - { - "id": 82541853, - "labels": ["feature"], - "number": 2573, - "title": "allow returning a response object inside a promise", - "url": "https://github.com/hapijs/hapi/pull/2573" - }, - { - "id": 81939726, - "labels": ["bug"], - "number": 2570, - "title": "Added \"error\" event listener", - "url": "https://github.com/hapijs/hapi/pull/2570" - } - ], - "number": 144, - "url": "https://github.com/hapijs/hapi/milestone/144", - "version": "8.6.0" - }, - { - "date": "2015-05-29T05:55:48Z", - "id": 1135214, - "issues": [ - { - "id": 82278310, - "labels": ["dependency"], - "number": 2571, - "title": "Update hapijs/h2o2 to 4.0.1 from 4.0.0", - "url": "https://github.com/hapijs/hapi/issues/2571" - }, - { - "id": 81888292, - "labels": ["bug"], - "number": 2569, - "title": "Make sure auth filter passes on request auth artifacts when injecting, too", - "url": "https://github.com/hapijs/hapi/pull/2569" - } - ], - "number": 143, - "url": "https://github.com/hapijs/hapi/milestone/143", - "version": "8.5.3" - }, - { - "date": "2015-05-27T05:52:50Z", - "id": 1135208, - "issues": [ - { - "id": 81292296, - "labels": ["bug"], - "number": 2564, - "title": "Auth error log should not report missing or try as error", - "url": "https://github.com/hapijs/hapi/issues/2564" - } - ], - "number": 142, - "url": "https://github.com/hapijs/hapi/milestone/142", - "version": "8.5.2" - }, - { - "date": "2015-05-22T21:54:40Z", - "id": 1123913, - "issues": [ - { - "id": 79617597, - "labels": ["bug"], - "number": 2555, - "title": "fix dynamic scopes", - "url": "https://github.com/hapijs/hapi/pull/2555" - }, - { - "id": 79558045, - "labels": ["bug"], - "number": 2554, - "title": "Dynamic scope uses undefined request.payload", - "url": "https://github.com/hapijs/hapi/issues/2554" - }, - { - "id": 79557448, - "labels": ["dependency"], - "number": 2553, - "title": "Update hapijs/hoek to 2.14.0 from 2.13.0", - "url": "https://github.com/hapijs/hapi/issues/2553" - } - ], - "number": 140, - "url": "https://github.com/hapijs/hapi/milestone/140", - "version": "8.5.1" - }, - { - "date": "2015-05-21T19:23:31Z", - "id": 1040584, - "issues": [ - { - "id": 79080914, - "labels": ["dependency"], - "number": 2552, - "title": "Update hapijs/wreck to 5.5.1 from 5.2.0", - "url": "https://github.com/hapijs/hapi/issues/2552" - }, - { - "id": 79079509, - "labels": ["dependency"], - "number": 2551, - "title": "Update jshttp/mime-db to 1.10.0 from 1.9.1", - "url": "https://github.com/hapijs/hapi/issues/2551" - }, - { - "id": 79078963, - "labels": ["dependency"], - "number": 2550, - "title": "Update moment/moment to 2.10.3 from 2.9.0", - "url": "https://github.com/hapijs/hapi/issues/2550" - }, - { - "id": 79078635, - "labels": ["dependency"], - "number": 2549, - "title": "Update hapijs/joi to 6.4.1 from 6.0.8", - "url": "https://github.com/hapijs/hapi/issues/2549" - }, - { - "id": 79077911, - "labels": ["dependency"], - "number": 2548, - "title": "Update hapijs/hoek to 2.13.0 from 2.11.1", - "url": "https://github.com/hapijs/hapi/issues/2548" - }, - { - "id": 79076858, - "labels": ["dependency"], - "number": 2547, - "title": "Update hapijs/boom to 2.7.2 from 2.6.1", - "url": "https://github.com/hapijs/hapi/issues/2547" - }, - { - "id": 79072171, - "labels": ["dependency"], - "number": 2546, - "title": "Update hapijs/inert to 2.1.5 from 2.1.4", - "url": "https://github.com/hapijs/hapi/issues/2546" - }, - { - "id": 79067222, - "labels": ["dependency"], - "number": 2545, - "title": "Update isaacs/node-lru-cache to 2.6.4 from 2.5.0", - "url": "https://github.com/hapijs/hapi/issues/2545" - }, - { - "id": 78916577, - "labels": ["bug"], - "number": 2544, - "title": "Retain content-length header for HEAD requests", - "url": "https://github.com/hapijs/hapi/pull/2544" - }, - { - "id": 77496678, - "labels": ["feature"], - "number": 2538, - "title": "closes #2480: Ability to pass options to qs for payload parsing", - "url": "https://github.com/hapijs/hapi/pull/2538" - }, - { - "id": 75749024, - "labels": ["feature"], - "number": 2532, - "title": "Dynamic authentication scopes", - "url": "https://github.com/hapijs/hapi/pull/2532" - }, - { - "id": 69665809, - "labels": ["dependency"], - "number": 2509, - "title": "Update jshttp/mime-db to 1.9.1 from 1.7.0", - "url": "https://github.com/hapijs/hapi/issues/2509" - }, - { - "id": 68490149, - "labels": ["bug", "dependency"], - "number": 2503, - "title": "Update hapijs/shot to 1.5.0 from 1.4.2", - "url": "https://github.com/hapijs/hapi/issues/2503" - }, - { - "id": 68341549, - "labels": ["feature"], - "number": 2502, - "title": "Fix Hapi Issue #2501, pass on auth artifacts object in server.inject", - "url": "https://github.com/hapijs/hapi/pull/2502" - }, - { - "id": 68340363, - "labels": ["feature"], - "number": 2501, - "title": "server.inject does not allow me to set auth artifacts, only auth credentials", - "url": "https://github.com/hapijs/hapi/issues/2501" - }, - { - "id": 64394834, - "labels": ["feature"], - "number": 2481, - "title": "Feature: server.decorate('request' ... )", - "url": "https://github.com/hapijs/hapi/issues/2481" - }, - { - "id": 61641701, - "labels": ["security", "dependency"], - "number": 2472, - "title": "Update hapijs/qs to 2.4.2 from 2.4.0", - "url": "https://github.com/hapijs/hapi/issues/2472" - } - ], - "number": 139, - "url": "https://github.com/hapijs/hapi/milestone/139", - "version": "8.5.0" - }, - { - "date": "2015-03-26T19:06:18Z", - "id": 1015940, - "issues": [ - { - "id": 61175879, - "labels": ["bug"], - "number": 2470, - "title": "JSONP requests not always returning wrapped response", - "url": "https://github.com/hapijs/hapi/issues/2470" - }, - { - "id": 61157560, - "labels": ["feature", "dependency"], - "number": 2469, - "title": "Update hapijs/qs to 2.4.0 from 2.3.3", - "url": "https://github.com/hapijs/hapi/issues/2469" - }, - { - "id": 61143692, - "labels": ["bug"], - "number": 2468, - "title": "Proxy handler not forwarding request payload", - "url": "https://github.com/hapijs/hapi/issues/2468" - }, - { - "id": 60739532, - "labels": ["dependency"], - "number": 2465, - "title": "Update hapijs/catbox to 4.2.2 from 4.2.1", - "url": "https://github.com/hapijs/hapi/issues/2465" - }, - { - "id": 60709056, - "labels": ["dependency"], - "number": 2464, - "title": "Update hapijs/joi to 6.0.8 from 6.0.5", - "url": "https://github.com/hapijs/hapi/issues/2464" - }, - { - "id": 60708193, - "labels": ["dependency"], - "number": 2463, - "title": "Update shrinkwrap to joi 6.0.7", - "url": "https://github.com/hapijs/hapi/pull/2463" - } - ], - "number": 138, - "url": "https://github.com/hapijs/hapi/milestone/138", - "version": "8.4.0" - }, - { - "date": "2015-03-11T06:37:16Z", - "id": 1015732, - "issues": [ - { - "id": 60594909, - "labels": ["bug"], - "number": 2461, - "title": "Missing dependency in 8.3", - "url": "https://github.com/hapijs/hapi/issues/2461" - } - ], - "number": 137, - "url": "https://github.com/hapijs/hapi/milestone/137", - "version": "8.3.1" - }, - { - "date": "2015-03-11T00:33:58Z", - "id": 972557, - "issues": [ - { - "id": 60547208, - "labels": ["bug"], - "number": 2459, - "title": "Fix for node 0.10 for changes in #2429", - "url": "https://github.com/hapijs/hapi/issues/2459" - }, - { - "id": 60460546, - "labels": ["dependency"], - "number": 2457, - "title": "Update hapijs/inert to 2.1.4 from 2.1.3", - "url": "https://github.com/hapijs/hapi/issues/2457" - }, - { - "id": 60441309, - "labels": ["bug", "dependency"], - "number": 2455, - "title": "Update hapijs/shot to 1.4.2 from 1.4.1", - "url": "https://github.com/hapijs/hapi/issues/2455" - }, - { - "id": 60441201, - "labels": ["dependency"], - "number": 2454, - "title": "Update moment/moment to 2.9.0 from 2.8.4", - "url": "https://github.com/hapijs/hapi/issues/2454" - }, - { - "id": 60441022, - "labels": ["dependency"], - "number": 2453, - "title": "Update hapijs/joi to 6.0.5 from 5.0.2", - "url": "https://github.com/hapijs/hapi/issues/2453" - }, - { - "id": 60440898, - "labels": ["dependency"], - "number": 2452, - "title": "Update hapijs/hoek to 2.11.1 from 2.10.0", - "url": "https://github.com/hapijs/hapi/issues/2452" - }, - { - "id": 60016028, - "labels": ["dependency"], - "number": 2446, - "title": "Update hapijs/wreck to 5.2.0 from 5.0.1", - "url": "https://github.com/hapijs/hapi/issues/2446" - }, - { - "id": 59575886, - "labels": ["feature"], - "number": 2439, - "title": "pass context to response schema validation", - "url": "https://github.com/hapijs/hapi/pull/2439" - }, - { - "id": 58747201, - "labels": ["bug"], - "number": 2429, - "title": "Fix for #2427", - "url": "https://github.com/hapijs/hapi/pull/2429" - }, - { - "id": 58464739, - "labels": ["bug"], - "number": 2427, - "title": "Issue uploading file with io.js or node > 0.11.6", - "url": "https://github.com/hapijs/hapi/issues/2427" - }, - { - "id": 58329307, - "labels": ["dependency"], - "number": 2423, - "title": "Update mime-db to 1.7.0 from 1.6.1", - "url": "https://github.com/hapijs/hapi/pull/2423" - }, - { - "id": 58289035, - "labels": ["bug", "dependency"], - "number": 2420, - "title": "Update hapijs/shot to 1.4.1 from 1.4.0", - "url": "https://github.com/hapijs/hapi/issues/2420" - }, - { - "id": 58123880, - "labels": ["bug"], - "number": 2418, - "title": "Add regex to allow leading $ and _", - "url": "https://github.com/hapijs/hapi/pull/2418" - }, - { - "id": 57856338, - "labels": ["dependency"], - "number": 2411, - "title": "Update jshttp/mime-db to 1.7.0 from 1.6.1", - "url": "https://github.com/hapijs/hapi/issues/2411" - }, - { - "id": 57357434, - "labels": ["feature"], - "number": 2405, - "title": "Support inline dependencies on plugins", - "url": "https://github.com/hapijs/hapi/pull/2405" - }, - { - "id": 57322956, - "labels": ["bug"], - "number": 2402, - "title": "Improved validation of route method label", - "url": "https://github.com/hapijs/hapi/pull/2402" - }, - { - "id": 57307842, - "labels": ["bug"], - "number": 2401, - "title": "Method name RegExp", - "url": "https://github.com/hapijs/hapi/issues/2401" - }, - { - "id": 56025963, - "labels": ["bug"], - "number": 2382, - "title": "Return explicit error when trying to stream a non-Readable stream", - "url": "https://github.com/hapijs/hapi/pull/2382" - }, - { - "id": 55231596, - "labels": ["bug"], - "number": 2368, - "title": "response.streamify assumes stream has attribute _readableState", - "url": "https://github.com/hapijs/hapi/issues/2368" - }, - { - "id": 53346217, - "labels": ["feature"], - "number": 2332, - "title": "Replacing plugin.dependency() with attributes key", - "url": "https://github.com/hapijs/hapi/issues/2332" - }, - { - "id": 53075995, - "labels": ["bug", "breaking changes"], - "number": 2326, - "title": "request-error logged before `onPostHandler` or `onPreResponse`", - "url": "https://github.com/hapijs/hapi/issues/2326" - } - ], - "number": 136, - "url": "https://github.com/hapijs/hapi/milestone/136", - "version": "8.3.0" - }, - { - "date": "2015-02-09T21:01:51Z", - "id": 924597, - "issues": [ - { - "id": 57088910, - "labels": ["dependency"], - "number": 2398, - "title": "Update hapijs/inert to 2.1.3 from 2.1.2", - "url": "https://github.com/hapijs/hapi/issues/2398" - }, - { - "id": 57067880, - "labels": ["feature"], - "number": 2397, - "title": "throw when attaching route handlers without a connection", - "url": "https://github.com/hapijs/hapi/pull/2397" - }, - { - "id": 56999539, - "labels": ["bug", "dependency"], - "number": 2396, - "title": "Inert 2.1.3 update", - "url": "https://github.com/hapijs/hapi/pull/2396" - }, - { - "id": 56976035, - "labels": ["dependency"], - "number": 2395, - "title": "Update jshttp/mime-db to 1.6.1 from 1.5.0", - "url": "https://github.com/hapijs/hapi/issues/2395" - }, - { - "id": 56719318, - "labels": ["bug"], - "number": 2392, - "title": "No Payload Validation", - "url": "https://github.com/hapijs/hapi/issues/2392" - }, - { - "id": 55574272, - "labels": ["bug"], - "number": 2374, - "title": "Server methods context not available in route prerequisites", - "url": "https://github.com/hapijs/hapi/issues/2374" - }, - { - "id": 55515823, - "labels": ["dependency"], - "number": 2373, - "title": "Update hapijs/inert to 2.1.2 from 2.1.0", - "url": "https://github.com/hapijs/hapi/issues/2373" - }, - { - "id": 55513746, - "labels": ["bug", "dependency"], - "number": 2372, - "title": "inert 2.1.2", - "url": "https://github.com/hapijs/hapi/pull/2372" - }, - { - "id": 55456448, - "labels": ["bug", "security"], - "number": 2370, - "title": "Add xss protection to validation response", - "url": "https://github.com/hapijs/hapi/pull/2370" - }, - { - "id": 55206735, - "labels": ["feature", "dependency"], - "number": 2367, - "title": "Update hapijs/inert to 2.1.0 from 2.0.0", - "url": "https://github.com/hapijs/hapi/issues/2367" - }, - { - "id": 55206382, - "labels": ["bug", "dependency"], - "number": 2366, - "title": "Update hapijs/catbox to 4.2.1 from 4.2.0", - "url": "https://github.com/hapijs/hapi/issues/2366" - }, - { - "id": 55158394, - "labels": ["bug"], - "number": 2363, - "title": "Refuse to handle incoming request after server is stopped", - "url": "https://github.com/hapijs/hapi/pull/2363" - }, - { - "id": 55156037, - "labels": ["bug", "test"], - "number": 2362, - "title": "Don't respond to connections until listening is started", - "url": "https://github.com/hapijs/hapi/pull/2362" - }, - { - "id": 55142950, - "labels": ["bug"], - "number": 2359, - "title": "Remove '{}' payload from cors OPTIONS response", - "url": "https://github.com/hapijs/hapi/pull/2359" - }, - { - "id": 54814226, - "labels": ["bug"], - "number": 2355, - "title": "Fix table labels", - "url": "https://github.com/hapijs/hapi/pull/2355" - }, - { - "id": 54688439, - "labels": ["dependency"], - "number": 2354, - "title": "Update API.md for inert 2.1.0", - "url": "https://github.com/hapijs/hapi/pull/2354" - }, - { - "id": 54007021, - "labels": ["bug"], - "number": 2347, - "title": "Improve error message when validation.payload is set but type is GET", - "url": "https://github.com/hapijs/hapi/issues/2347" - }, - { - "id": 52532191, - "labels": ["feature"], - "number": 2309, - "title": "Fixes #2308 by logging boom error object instead of just message", - "url": "https://github.com/hapijs/hapi/pull/2309" - }, - { - "id": 52532067, - "labels": ["feature"], - "number": 2308, - "title": "Logging boom errors from handlers should send boom error to log not just message", - "url": "https://github.com/hapijs/hapi/issues/2308" - } - ], - "number": 135, - "url": "https://github.com/hapijs/hapi/milestone/135", - "version": "8.2.0" - }, - { - "date": "2015-01-06T22:29:42Z", - "id": 898121, - "issues": [ - { - "id": 53550704, - "labels": ["feature"], - "number": 2335, - "title": "Expose the request object in inject()", - "url": "https://github.com/hapijs/hapi/issues/2335" - }, - { - "id": 53334250, - "labels": ["test", "dependency"], - "number": 2331, - "title": "Revise range tests to not depend on the inert module", - "url": "https://github.com/hapijs/hapi/pull/2331" - }, - { - "id": 52978912, - "labels": ["bug"], - "number": 2324, - "title": "Remove catch call for promise replies", - "url": "https://github.com/hapijs/hapi/pull/2324" - }, - { - "id": 52835038, - "labels": ["bug"], - "number": 2323, - "title": "Promise support", - "url": "https://github.com/hapijs/hapi/issues/2323" - }, - { - "id": 52720347, - "labels": ["dependency"], - "number": 2316, - "title": "Update jshttp/mime-db to 1.5.0 from 1.3.1", - "url": "https://github.com/hapijs/hapi/issues/2316" - }, - { - "id": 52394017, - "labels": ["bug"], - "number": 2302, - "title": "allow replying with a stream as returned by node core http client methods", - "url": "https://github.com/hapijs/hapi/pull/2302" - }, - { - "id": 52393941, - "labels": ["bug"], - "number": 2301, - "title": "can't reply with stream returned by node core http client methods", - "url": "https://github.com/hapijs/hapi/issues/2301" - }, - { - "id": 52265547, - "labels": ["dependency"], - "number": 2300, - "title": "Bumped mime-db version", - "url": "https://github.com/hapijs/hapi/pull/2300" - }, - { - "id": 52112068, - "labels": ["bug"], - "number": 2291, - "title": "external listener protocol issue", - "url": "https://github.com/hapijs/hapi/issues/2291" - }, - { - "id": 51698148, - "labels": ["bug"], - "number": 2277, - "title": "Fix invalid response for empty reply() (v8.x regression)", - "url": "https://github.com/hapijs/hapi/pull/2277" - } - ], - "number": 133, - "url": "https://github.com/hapijs/hapi/milestone/133", - "version": "8.1.0" - }, - { - "date": "2014-12-09T23:08:50Z", - "id": 842872, - "issues": [ - { - "id": 51495372, - "labels": ["dependency"], - "number": 2271, - "title": "Update jshttp/mime-db to 1.3.0 from 1.2.0", - "url": "https://github.com/hapijs/hapi/issues/2271" - }, - { - "id": 51495292, - "labels": ["dependency"], - "number": 2270, - "title": "Update hapijs/boom to 2.6.1 from 2.6.0", - "url": "https://github.com/hapijs/hapi/issues/2270" - }, - { - "id": 51495248, - "labels": ["dependency"], - "number": 2269, - "title": "Update hapijs/shot to 1.4.0 from 1.3.5", - "url": "https://github.com/hapijs/hapi/issues/2269" - }, - { - "id": 51495206, - "labels": ["dependency"], - "number": 2268, - "title": "Update hapijs/joi to 5.0.2 from 5.0.0", - "url": "https://github.com/hapijs/hapi/issues/2268" - }, - { - "id": 51329662, - "labels": ["feature"], - "number": 2264, - "title": "How to blacklist all routes to use a plugin config?", - "url": "https://github.com/hapijs/hapi/issues/2264" - }, - { - "id": 51227614, - "labels": ["breaking changes"], - "number": 2262, - "title": "Change server.table() result from object to array", - "url": "https://github.com/hapijs/hapi/issues/2262" - }, - { - "id": 51034014, - "labels": ["feature"], - "number": 2255, - "title": "Throw when calling reply() with objectMode stream", - "url": "https://github.com/hapijs/hapi/issues/2255" - }, - { - "id": 50940654, - "labels": ["feature"], - "number": 2249, - "title": "Add 'uri' connection option", - "url": "https://github.com/hapijs/hapi/issues/2249" - }, - { - "id": 50803535, - "labels": ["feature", "breaking changes"], - "number": 2247, - "title": "Split debug settings per event type", - "url": "https://github.com/hapijs/hapi/issues/2247" - }, - { - "id": 50780016, - "labels": ["bug"], - "number": 2246, - "title": "plugin dependencies error message changed", - "url": "https://github.com/hapijs/hapi/issues/2246" - }, - { - "id": 50707176, - "labels": ["bug"], - "number": 2244, - "title": "Fix reply.continue() in prerequisite. Closes #2243", - "url": "https://github.com/hapijs/hapi/pull/2244" - }, - { - "id": 50707025, - "labels": ["bug"], - "number": 2243, - "title": "Fix reply.continue() in prerequisite.", - "url": "https://github.com/hapijs/hapi/issues/2243" - }, - { - "id": 50673598, - "labels": ["bug"], - "number": 2242, - "title": "Uncaught error: Cannot read property 'isBoom' of null in hapi/lib/handler.js", - "url": "https://github.com/hapijs/hapi/issues/2242" - }, - { - "id": 50627042, - "labels": ["breaking changes"], - "number": 2241, - "title": "Remove string notation method logging when cache not setup", - "url": "https://github.com/hapijs/hapi/issues/2241" - }, - { - "id": 50623169, - "labels": ["bug"], - "number": 2240, - "title": "Cached method in string notation bypasses cache", - "url": "https://github.com/hapijs/hapi/issues/2240" - }, - { - "id": 50601834, - "labels": ["feature"], - "number": 2238, - "title": "Conditional Validation Rules based on Auth", - "url": "https://github.com/hapijs/hapi/issues/2238" - }, - { - "id": 50577828, - "labels": ["feature"], - "number": 2237, - "title": "Support bare server (no files, proxy, views)", - "url": "https://github.com/hapijs/hapi/issues/2237" - }, - { - "id": 50496688, - "labels": ["feature"], - "number": 2235, - "title": "Expose realm as public interface", - "url": "https://github.com/hapijs/hapi/issues/2235" - }, - { - "id": 50493969, - "labels": ["feature"], - "number": 2234, - "title": "Support views in auth schemes", - "url": "https://github.com/hapijs/hapi/issues/2234" - }, - { - "id": 50493124, - "labels": ["breaking changes"], - "number": 2233, - "title": "Populate connection.info.uri before start when port 0", - "url": "https://github.com/hapijs/hapi/issues/2233" - }, - { - "id": 50451718, - "labels": ["breaking changes"], - "number": 2231, - "title": "Change request.route to a wrapper object containing settings", - "url": "https://github.com/hapijs/hapi/issues/2231" - }, - { - "id": 50451704, - "labels": ["breaking changes"], - "number": 2230, - "title": "Replace server.config with server.realm.modifiers", - "url": "https://github.com/hapijs/hapi/issues/2230" - }, - { - "id": 50450801, - "labels": ["breaking changes"], - "number": 2229, - "title": "plugin.expose() only sets server.plugins, not connection.plugins", - "url": "https://github.com/hapijs/hapi/issues/2229" - }, - { - "id": 50444020, - "labels": ["breaking changes", "dependency"], - "number": 2228, - "title": "Update hapijs/joi to 5.0.0 from 4.9.0", - "url": "https://github.com/hapijs/hapi/issues/2228" - }, - { - "id": 50443999, - "labels": ["dependency"], - "number": 2227, - "title": "Update moment to 2.8.4", - "url": "https://github.com/hapijs/hapi/issues/2227" - }, - { - "id": 50361853, - "labels": ["bug"], - "number": 2226, - "title": "When using string shorthand in pre it does not provide reply interface", - "url": "https://github.com/hapijs/hapi/issues/2226" - }, - { - "id": 50334829, - "labels": ["breaking changes"], - "number": 2224, - "title": "Cleanup connection.info settings and introduce 'address' config", - "url": "https://github.com/hapijs/hapi/issues/2224" - }, - { - "id": 50266857, - "labels": ["feature"], - "number": 2220, - "title": "A method to test a string against the routes table", - "url": "https://github.com/hapijs/hapi/issues/2220" - }, - { - "id": 50252408, - "labels": ["dependency"], - "number": 2219, - "title": "Update hapijs/hoek to 2.10.0 from 2.9.0", - "url": "https://github.com/hapijs/hapi/issues/2219" - }, - { - "id": 50091208, - "labels": ["bug"], - "number": 2217, - "title": "Disable scope checking on a route", - "url": "https://github.com/hapijs/hapi/issues/2217" - }, - { - "id": 50089417, - "labels": ["bug"], - "number": 2216, - "title": "Invalid deep cloning of bind context", - "url": "https://github.com/hapijs/hapi/issues/2216" - }, - { - "id": 50064576, - "labels": ["feature"], - "number": 2215, - "title": "Revert change to trailing slash behavior ", - "url": "https://github.com/hapijs/hapi/issues/2215" - }, - { - "id": 49883937, - "labels": ["bug"], - "number": 2209, - "title": "Not possible to add route in plugins", - "url": "https://github.com/hapijs/hapi/issues/2209" - }, - { - "id": 49865058, - "labels": ["breaking changes"], - "number": 2206, - "title": "Change server.bind() and server.path() to apply only to routes that follow", - "url": "https://github.com/hapijs/hapi/issues/2206" - }, - { - "id": 49862297, - "labels": ["breaking changes"], - "number": 2205, - "title": "Rename plugin register() `route` option to `routes`", - "url": "https://github.com/hapijs/hapi/issues/2205" - }, - { - "id": 49852394, - "labels": ["breaking changes"], - "number": 2203, - "title": "Move connection route config to route with connections defaults ", - "url": "https://github.com/hapijs/hapi/issues/2203" - }, - { - "id": 49843509, - "labels": ["breaking changes"], - "number": 2201, - "title": "Rename cacheControlStatus to cache.statuses", - "url": "https://github.com/hapijs/hapi/issues/2201" - }, - { - "id": 49802372, - "labels": ["bug"], - "number": 2200, - "title": "Validation failAction and custom function are not protected", - "url": "https://github.com/hapijs/hapi/issues/2200" - }, - { - "id": 49795606, - "labels": ["bug"], - "number": 2199, - "title": "add missing variety handler for promises returning a object", - "url": "https://github.com/hapijs/hapi/pull/2199" - }, - { - "id": 49768780, - "labels": ["dependency"], - "number": 2198, - "title": "Update hapijs/call to 2.0.1 from 1.0.0", - "url": "https://github.com/hapijs/hapi/issues/2198" - }, - { - "id": 49630129, - "labels": ["feature"], - "number": 2195, - "title": "Override timeout values at a route level", - "url": "https://github.com/hapijs/hapi/issues/2195" - }, - { - "id": 49604779, - "labels": [], - "number": 2192, - "title": "Rename connection to listener or similar", - "url": "https://github.com/hapijs/hapi/issues/2192" - }, - { - "id": 49601406, - "labels": ["feature"], - "number": 2191, - "title": "Change defaults for router", - "url": "https://github.com/hapijs/hapi/issues/2191" - }, - { - "id": 49595212, - "labels": ["feature"], - "number": 2190, - "title": "Log heavy load reason when check() is false", - "url": "https://github.com/hapijs/hapi/issues/2190" - }, - { - "id": 49467577, - "labels": ["breaking changes", "release notes"], - "number": 2186, - "title": "8.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/2186" - }, - { - "id": 49467115, - "labels": ["dependency"], - "number": 2185, - "title": "Update hapijs/catbox to 4.2.0 from 4.1.0", - "url": "https://github.com/hapijs/hapi/issues/2185" - }, - { - "id": 49349303, - "labels": ["breaking changes"], - "number": 2181, - "title": "Remove server method cache key 'h' prefix", - "url": "https://github.com/hapijs/hapi/issues/2181" - }, - { - "id": 49290349, - "labels": ["bug"], - "number": 2179, - "title": "server.register() doesn't work with direct require of plugins (-rc1)", - "url": "https://github.com/hapijs/hapi/issues/2179" - }, - { - "id": 49278765, - "labels": ["dependency"], - "number": 2178, - "title": "Update hapijs/mimos to 2.0.2 from 1.0.1", - "url": "https://github.com/hapijs/hapi/issues/2178" - }, - { - "id": 49271325, - "labels": ["feature"], - "number": 2177, - "title": "Return select() on server.connection()", - "url": "https://github.com/hapijs/hapi/issues/2177" - }, - { - "id": 49192339, - "labels": ["dependency"], - "number": 2175, - "title": "Update jshttp/mime-db to 1.2.0 from 1.1.2", - "url": "https://github.com/hapijs/hapi/issues/2175" - }, - { - "id": 49191912, - "labels": ["dependency"], - "number": 2174, - "title": "Update hapijs/qs to 2.3.3 from 2.3.2", - "url": "https://github.com/hapijs/hapi/issues/2174" - }, - { - "id": 49191877, - "labels": ["dependency"], - "number": 2173, - "title": "Update hapijs/catbox-memory to 1.1.1 from 1.1.0", - "url": "https://github.com/hapijs/hapi/issues/2173" - }, - { - "id": 49191831, - "labels": ["dependency"], - "number": 2172, - "title": "Update hapijs/boom to 2.6.0 from 2.5.1", - "url": "https://github.com/hapijs/hapi/issues/2172" - }, - { - "id": 49121906, - "labels": ["dependency"], - "number": 2170, - "title": "Spin off range header parser", - "url": "https://github.com/hapijs/hapi/issues/2170" - }, - { - "id": 49060410, - "labels": ["feature"], - "number": 2167, - "title": "Add response 'close' processor", - "url": "https://github.com/hapijs/hapi/issues/2167" - }, - { - "id": 49059440, - "labels": ["bug"], - "number": 2166, - "title": "ETag vary modification not applied to content-encoding set elsewhere", - "url": "https://github.com/hapijs/hapi/issues/2166" - }, - { - "id": 49057240, - "labels": ["feature"], - "number": 2165, - "title": "Expose request.paramsArray", - "url": "https://github.com/hapijs/hapi/issues/2165" - }, - { - "id": 49056226, - "labels": ["bug"], - "number": 2164, - "title": "Bypass compression on empty payload", - "url": "https://github.com/hapijs/hapi/issues/2164" - }, - { - "id": 49053465, - "labels": ["bug"], - "number": 2163, - "title": "ETag vary modification is incorrect", - "url": "https://github.com/hapijs/hapi/issues/2163" - }, - { - "id": 48959252, - "labels": ["feature", "breaking changes"], - "number": 2160, - "title": "Add cors.override setting", - "url": "https://github.com/hapijs/hapi/issues/2160" - }, - { - "id": 48913400, - "labels": ["feature"], - "number": 2158, - "title": "How to get default auth strategy from server object?", - "url": "https://github.com/hapijs/hapi/issues/2158" - }, - { - "id": 48887597, - "labels": ["documentation"], - "number": 2157, - "title": "Link mentions of methods to their reference", - "url": "https://github.com/hapijs/hapi/issues/2157" - }, - { - "id": 48887562, - "labels": ["documentation"], - "number": 2156, - "title": "Rewrite reply() interface section", - "url": "https://github.com/hapijs/hapi/issues/2156" - }, - { - "id": 48887531, - "labels": ["documentation", "breaking changes"], - "number": 2155, - "title": "Cleanup and document all internal request logs", - "url": "https://github.com/hapijs/hapi/issues/2155" - }, - { - "id": 48886372, - "labels": ["breaking changes"], - "number": 2154, - "title": "Rename response object option marshall to marshal", - "url": "https://github.com/hapijs/hapi/issues/2154" - }, - { - "id": 48858405, - "labels": ["bug", "breaking changes"], - "number": 2153, - "title": "Change etag based on vary header by default", - "url": "https://github.com/hapijs/hapi/issues/2153" - }, - { - "id": 48846610, - "labels": ["breaking changes"], - "number": 2152, - "title": "Change server method generateKey() to only take the arguments", - "url": "https://github.com/hapijs/hapi/issues/2152" - }, - { - "id": 48836141, - "labels": ["feature"], - "number": 2150, - "title": "argument Object Optimizations", - "url": "https://github.com/hapijs/hapi/pull/2150" - }, - { - "id": 48832184, - "labels": ["feature"], - "number": 2149, - "title": "Support server methods without callback", - "url": "https://github.com/hapijs/hapi/issues/2149" - }, - { - "id": 48821233, - "labels": ["feature"], - "number": 2148, - "title": "Optimize use of arguments", - "url": "https://github.com/hapijs/hapi/issues/2148" - }, - { - "id": 48753153, - "labels": ["breaking changes"], - "number": 2146, - "title": "Deep copy app and plugins configurations", - "url": "https://github.com/hapijs/hapi/issues/2146" - }, - { - "id": 48726532, - "labels": ["breaking changes"], - "number": 2145, - "title": "Split request log events into request and request-internal", - "url": "https://github.com/hapijs/hapi/issues/2145" - }, - { - "id": 48726379, - "labels": ["breaking changes"], - "number": 2144, - "title": "Rename server event internalError to `request-error`", - "url": "https://github.com/hapijs/hapi/issues/2144" - }, - { - "id": 48720788, - "labels": ["breaking changes"], - "number": 2143, - "title": "Replace log 'hapi' tag with event.internal flag", - "url": "https://github.com/hapijs/hapi/issues/2143" - }, - { - "id": 48695044, - "labels": ["breaking changes"], - "number": 2142, - "title": "Rename request.responses to request.preResponses", - "url": "https://github.com/hapijs/hapi/issues/2142" - }, - { - "id": 48485113, - "labels": ["breaking changes"], - "number": 2137, - "title": "Remove auth authenticate() `log` option in result", - "url": "https://github.com/hapijs/hapi/issues/2137" - }, - { - "id": 48477163, - "labels": ["breaking changes"], - "number": 2136, - "title": "Here comes 8", - "url": "https://github.com/hapijs/hapi/pull/2136" - }, - { - "id": 48471100, - "labels": ["breaking changes"], - "number": 2135, - "title": "Remove Hapi.version", - "url": "https://github.com/hapijs/hapi/issues/2135" - }, - { - "id": 48419937, - "labels": ["breaking changes"], - "number": 2131, - "title": "Simplify server.register() to only accept register() or { register, options }", - "url": "https://github.com/hapijs/hapi/issues/2131" - }, - { - "id": 48361501, - "labels": ["feature"], - "number": 2129, - "title": "Support promises in server.method()", - "url": "https://github.com/hapijs/hapi/issues/2129" - }, - { - "id": 48361127, - "labels": ["breaking changes"], - "number": 2128, - "title": "Change server.method() object key from fn to method", - "url": "https://github.com/hapijs/hapi/issues/2128" - }, - { - "id": 48334948, - "labels": ["breaking changes"], - "number": 2126, - "title": "Change server.cache() to take only options", - "url": "https://github.com/hapijs/hapi/issues/2126" - }, - { - "id": 48318681, - "labels": ["breaking changes"], - "number": 2125, - "title": "Remove .hapi references", - "url": "https://github.com/hapijs/hapi/issues/2125" - }, - { - "id": 48313389, - "labels": ["feature"], - "number": 2124, - "title": "Server-level connection defaults", - "url": "https://github.com/hapijs/hapi/issues/2124" - }, - { - "id": 48293546, - "labels": ["feature"], - "number": 2122, - "title": "Pass the reply() interface everywhere a response can be returned", - "url": "https://github.com/hapijs/hapi/issues/2122" - }, - { - "id": 48184039, - "labels": ["breaking changes"], - "number": 2118, - "title": "Cleanup register() to accept a plugin or { plugin, options }", - "url": "https://github.com/hapijs/hapi/issues/2118" - }, - { - "id": 48157529, - "labels": ["dependency"], - "number": 2117, - "title": "Update hapijs/joi to 4.8.0 from 4.7.0", - "url": "https://github.com/hapijs/hapi/issues/2117" - }, - { - "id": 48154085, - "labels": ["dependency"], - "number": 2116, - "title": "Move peek logic to Peekaboo", - "url": "https://github.com/hapijs/hapi/issues/2116" - }, - { - "id": 48118665, - "labels": ["breaking changes"], - "number": 2113, - "title": "Missing host will default to hostname or 'localhost' instead of '0.0.0.0' pre start()", - "url": "https://github.com/hapijs/hapi/issues/2113" - }, - { - "id": 48118552, - "labels": ["breaking changes"], - "number": 2112, - "title": "Switch unix domain socket and windows named pipe to use options.port", - "url": "https://github.com/hapijs/hapi/issues/2112" - }, - { - "id": 48099337, - "labels": ["bug", "breaking changes"], - "number": 2111, - "title": "CORS matchOrigin should echo origin when config doesn't specify", - "url": "https://github.com/hapijs/hapi/issues/2111" - }, - { - "id": 48055900, - "labels": ["feature"], - "number": 2109, - "title": "Remove request aborted listener", - "url": "https://github.com/hapijs/hapi/issues/2109" - }, - { - "id": 48016342, - "labels": ["breaking changes"], - "number": 2104, - "title": "Apply `reply.continue()` to auth interfaces", - "url": "https://github.com/hapijs/hapi/issues/2104" - }, - { - "id": 48015941, - "labels": ["breaking changes"], - "number": 2103, - "title": "Change ext continuation method from `reply()` to `reply.continue()`", - "url": "https://github.com/hapijs/hapi/issues/2103" - }, - { - "id": 47840688, - "labels": ["bug"], - "number": 2099, - "title": "ETags never match with varyEtag setting", - "url": "https://github.com/hapijs/hapi/issues/2099" - }, - { - "id": 47792370, - "labels": ["feature"], - "number": 2097, - "title": "Support Promises in reply() interface", - "url": "https://github.com/hapijs/hapi/issues/2097" - }, - { - "id": 47779648, - "labels": ["breaking changes"], - "number": 2096, - "title": "Skip onPreResponse when connection closes prematurely", - "url": "https://github.com/hapijs/hapi/issues/2096" - }, - { - "id": 47762470, - "labels": ["breaking changes"], - "number": 2095, - "title": "Rework composer format", - "url": "https://github.com/hapijs/hapi/issues/2095" - }, - { - "id": 47695175, - "labels": ["bug"], - "number": 2093, - "title": "Include ETag and Last-Modified in 304 response", - "url": "https://github.com/hapijs/hapi/pull/2093" - }, - { - "id": 47692100, - "labels": ["breaking changes"], - "number": 2092, - "title": "Change default port to 0", - "url": "https://github.com/hapijs/hapi/issues/2092" - }, - { - "id": 47683973, - "labels": ["breaking changes"], - "number": 2090, - "title": "Remove plugin.version", - "url": "https://github.com/hapijs/hapi/issues/2090" - }, - { - "id": 47642749, - "labels": ["bug", "breaking changes"], - "number": 2089, - "title": "Server method `generateKey` no longer supports returning null as valid no caching indicator", - "url": "https://github.com/hapijs/hapi/issues/2089" - }, - { - "id": 47550458, - "labels": ["breaking changes"], - "number": 2086, - "title": "Remove bin/hapi", - "url": "https://github.com/hapijs/hapi/issues/2086" - }, - { - "id": 47550442, - "labels": ["breaking changes"], - "number": 2085, - "title": "Remove server.compose()", - "url": "https://github.com/hapijs/hapi/issues/2085" - }, - { - "id": 47550391, - "labels": ["breaking changes"], - "number": 2084, - "title": "Remove Hapi.state.prepareValue()", - "url": "https://github.com/hapijs/hapi/issues/2084" - }, - { - "id": 47550323, - "labels": ["breaking changes"], - "number": 2083, - "title": "Remove Hapi.error", - "url": "https://github.com/hapijs/hapi/issues/2083" - }, - { - "id": 47550188, - "labels": ["breaking changes"], - "number": 2082, - "title": "Remove Hapi.createServer()", - "url": "https://github.com/hapijs/hapi/issues/2082" - }, - { - "id": 47528139, - "labels": ["breaking changes"], - "number": 2080, - "title": "app config no longer copied over to server.app or connection.app", - "url": "https://github.com/hapijs/hapi/issues/2080" - }, - { - "id": 47513367, - "labels": ["breaking changes"], - "number": 2077, - "title": "Rename .server -> .connection and .pack -> .server", - "url": "https://github.com/hapijs/hapi/issues/2077" - }, - { - "id": 47511948, - "labels": ["breaking changes"], - "number": 2076, - "title": "Move files.etagsCacheMaxSize to pack level", - "url": "https://github.com/hapijs/hapi/issues/2076" - }, - { - "id": 47392023, - "labels": ["feature"], - "number": 2074, - "title": "server.auth.default is not exposed at plugin.auth.default", - "url": "https://github.com/hapijs/hapi/issues/2074" - }, - { - "id": 47351768, - "labels": ["breaking changes"], - "number": 2073, - "title": "Split process load from server load limits", - "url": "https://github.com/hapijs/hapi/issues/2073" - }, - { - "id": 47349572, - "labels": ["breaking changes"], - "number": 2072, - "title": "Remove debug from server configuration", - "url": "https://github.com/hapijs/hapi/issues/2072" - }, - { - "id": 47348456, - "labels": ["breaking changes"], - "number": 2071, - "title": "Move proxy handler to use local maxSocket config", - "url": "https://github.com/hapijs/hapi/issues/2071" - }, - { - "id": 47214717, - "labels": ["feature"], - "number": 2066, - "title": "Configure auth scheme to require payload validation", - "url": "https://github.com/hapijs/hapi/issues/2066" - }, - { - "id": 47204856, - "labels": ["bug", "breaking changes"], - "number": 2065, - "title": "failing to generate a method key should generate an error somewhere", - "url": "https://github.com/hapijs/hapi/issues/2065" - }, - { - "id": 46981323, - "labels": ["breaking changes"], - "number": 2053, - "title": "Change plugin.servers to plugin.connections", - "url": "https://github.com/hapijs/hapi/issues/2053" - }, - { - "id": 46975311, - "labels": ["breaking changes"], - "number": 2052, - "title": "Remove plugin.length", - "url": "https://github.com/hapijs/hapi/issues/2052" - }, - { - "id": 46774830, - "labels": ["feature", "breaking changes"], - "number": 2048, - "title": "New Event for request.log", - "url": "https://github.com/hapijs/hapi/issues/2048" - }, - { - "id": 46552605, - "labels": ["feature", "breaking changes"], - "number": 2040, - "title": "Improve request ID generator to prevent collisions", - "url": "https://github.com/hapijs/hapi/issues/2040" - }, - { - "id": 44841649, - "labels": ["bug"], - "number": 2003, - "title": "Stop cache client when pack stops", - "url": "https://github.com/hapijs/hapi/issues/2003" - }, - { - "id": 44615832, - "labels": ["feature", "breaking changes"], - "number": 1994, - "title": "Pass meta data from a joi object to a failAction", - "url": "https://github.com/hapijs/hapi/issues/1994" - }, - { - "id": 43763393, - "labels": ["feature"], - "number": 1977, - "title": "Throw when route() is called with multiple arguments", - "url": "https://github.com/hapijs/hapi/issues/1977" - }, - { - "id": 43551650, - "labels": ["feature"], - "number": 1971, - "title": "Allow plugins to extend Server", - "url": "https://github.com/hapijs/hapi/issues/1971" - }, - { - "id": 43475918, - "labels": ["feature"], - "number": 1965, - "title": "Need to know when response was sent in `server.on(tail)`", - "url": "https://github.com/hapijs/hapi/issues/1965" - }, - { - "id": 43313391, - "labels": ["feature"], - "number": 1963, - "title": "Extensible reply() interface", - "url": "https://github.com/hapijs/hapi/issues/1963" - }, - { - "id": 42802353, - "labels": ["feature"], - "number": 1945, - "title": "IE <=8 doesn't accept application/javascript as a mimetype", - "url": "https://github.com/hapijs/hapi/issues/1945" - }, - { - "id": 42676862, - "labels": ["feature"], - "number": 1939, - "title": "Reverse Routing a URL", - "url": "https://github.com/hapijs/hapi/issues/1939" - }, - { - "id": 42388151, - "labels": ["feature", "breaking changes"], - "number": 1926, - "title": "Remove special handling of the HTTP Location header", - "url": "https://github.com/hapijs/hapi/issues/1926" - }, - { - "id": 42005905, - "labels": ["bug"], - "number": 1902, - "title": "reply.redirect() and reply.file() not working in server extensions", - "url": "https://github.com/hapijs/hapi/issues/1902" - }, - { - "id": 40413289, - "labels": ["bug"], - "number": 1866, - "title": "Throw error when trying to reply twice", - "url": "https://github.com/hapijs/hapi/issues/1866" - }, - { - "id": 40320480, - "labels": ["feature"], - "number": 1864, - "title": "Feature Request: Validation of non-200/ok responses.", - "url": "https://github.com/hapijs/hapi/issues/1864" - }, - { - "id": 39171107, - "labels": ["feature"], - "number": 1815, - "title": "spdy support", - "url": "https://github.com/hapijs/hapi/issues/1815" - }, - { - "id": 35782558, - "labels": ["feature"], - "number": 1723, - "title": "Allow response object stripping according to schema", - "url": "https://github.com/hapijs/hapi/issues/1723" - }, - { - "id": 34980474, - "labels": ["bug"], - "number": 1686, - "title": "Don't report request closed on redirect payload write", - "url": "https://github.com/hapijs/hapi/issues/1686" - }, - { - "id": 34663998, - "labels": ["feature"], - "number": 1672, - "title": "Enable starting the server listener externally", - "url": "https://github.com/hapijs/hapi/issues/1672" - } - ], - "number": 127, - "url": "https://github.com/hapijs/hapi/milestone/127", - "version": "8.0.0" - }, - { - "date": "2014-12-17T18:18:21Z", - "id": 905123, - "issues": [ - { - "id": 52067869, - "labels": ["security"], - "number": 2290, - "title": "Update hapijs/inert to 1.1.1 from 1.1.0", - "url": "https://github.com/hapijs/hapi/issues/2290" - } - ], - "number": 134, - "url": "https://github.com/hapijs/hapi/milestone/134", - "version": "7.5.3" - }, - { - "date": "2014-11-10T20:24:00Z", - "id": 860650, - "issues": [ - { - "id": 48309231, - "labels": ["bug", "dependency"], - "number": 2123, - "title": "Upgrade hoek to 2.9.0", - "url": "https://github.com/hapijs/hapi/issues/2123" - } - ], - "number": 132, - "url": "https://github.com/hapijs/hapi/milestone/132", - "version": "7.5.2" - }, - { - "date": "2014-11-10T20:21:12Z", - "id": 857981, - "issues": [ - { - "id": 48222109, - "labels": ["bug", "dependency"], - "number": 2120, - "title": "TypeError: Cannot read property 'get' of undefined", - "url": "https://github.com/hapijs/hapi/issues/2120" - } - ], - "number": 131, - "url": "https://github.com/hapijs/hapi/milestone/131", - "version": "7.5.1" - }, - { - "date": "2014-11-07T22:12:33Z", - "id": 857043, - "issues": [ - { - "id": 48017911, - "labels": ["feature", "bug"], - "number": 2105, - "title": "Added ability to pass option into unstate.", - "url": "https://github.com/hapijs/hapi/pull/2105" - }, - { - "id": 47332694, - "labels": ["bug"], - "number": 2068, - "title": "it is not possible to unstate a cookie that was stated with options", - "url": "https://github.com/hapijs/hapi/issues/2068" - }, - { - "id": 42185941, - "labels": ["bug"], - "number": 1916, - "title": "Temp file is not deleted when request is aborted by client", - "url": "https://github.com/hapijs/hapi/issues/1916" - } - ], - "number": 130, - "url": "https://github.com/hapijs/hapi/milestone/130", - "version": "7.5.0" - }, - { - "date": "2014-11-07T08:11:24Z", - "id": 854019, - "issues": [ - { - "id": 48048239, - "labels": ["dependency"], - "number": 2108, - "title": "Upgrade qs to version 2.3.2", - "url": "https://github.com/hapijs/hapi/issues/2108" - }, - { - "id": 48048129, - "labels": ["dependency"], - "number": 2107, - "title": "Upgrade mime-db to 1.1.2", - "url": "https://github.com/hapijs/hapi/issues/2107" - }, - { - "id": 47903283, - "labels": ["feature", "dependency"], - "number": 2100, - "title": "Global view context.", - "url": "https://github.com/hapijs/hapi/pull/2100" - }, - { - "id": 46092753, - "labels": ["bug"], - "number": 2027, - "title": "JPG vs jpg", - "url": "https://github.com/hapijs/hapi/issues/2027" - } - ], - "number": 129, - "url": "https://github.com/hapijs/hapi/milestone/129", - "version": "7.4.0" - }, - { - "date": "2014-11-05T03:02:04Z", - "id": 847445, - "issues": [ - { - "id": 47794388, - "labels": ["dependency"], - "number": 2098, - "title": "Catbox 4.1", - "url": "https://github.com/hapijs/hapi/issues/2098" - } - ], - "number": 128, - "url": "https://github.com/hapijs/hapi/milestone/128", - "version": "7.3.0" - }, - { - "date": "2014-10-30T23:34:52Z", - "id": 838664, - "issues": [ - { - "id": 47344416, - "labels": ["feature"], - "number": 2069, - "title": "Isolate server in its own pack", - "url": "https://github.com/hapijs/hapi/pull/2069" - }, - { - "id": 47089996, - "labels": ["feature"], - "number": 2061, - "title": "Second phase of server/pack/plugin refactor", - "url": "https://github.com/hapijs/hapi/pull/2061" - }, - { - "id": 46998270, - "labels": ["feature", "breaking changes", "dependency"], - "number": 2057, - "title": "Pack refactor", - "url": "https://github.com/hapijs/hapi/pull/2057" - }, - { - "id": 46992789, - "labels": ["feature"], - "number": 2056, - "title": "Enhance Pack to have the full plugin API directly", - "url": "https://github.com/hapijs/hapi/issues/2056" - }, - { - "id": 46992738, - "labels": ["feature", "breaking changes"], - "number": 2055, - "title": "Move plugin dependency validation to start()", - "url": "https://github.com/hapijs/hapi/issues/2055" - }, - { - "id": 46992655, - "labels": ["dependency"], - "number": 2054, - "title": "Move composer logic to glue", - "url": "https://github.com/hapijs/hapi/issues/2054" - } - ], - "number": 126, - "url": "https://github.com/hapijs/hapi/milestone/126", - "version": "7.2.0" - }, - { - "date": "2014-10-24T06:18:52Z", - "id": 836437, - "issues": [ - { - "id": 46707804, - "labels": ["bug"], - "number": 2046, - "title": "Fix shrinkwrap", - "url": "https://github.com/hapijs/hapi/issues/2046" - } - ], - "number": 125, - "url": "https://github.com/hapijs/hapi/milestone/125", - "version": "7.1.1" - }, - { - "date": "2014-10-24T06:18:51Z", - "id": 836404, - "issues": [ - { - "id": 46551699, - "labels": ["breaking changes", "dependency"], - "number": 2039, - "title": "Added npm-shrinkwrap", - "url": "https://github.com/hapijs/hapi/issues/2039" - } - ], - "number": 124, - "url": "https://github.com/hapijs/hapi/milestone/124", - "version": "7.1.0" - }, - { - "date": "2014-10-22T19:08:57Z", - "id": 820544, - "issues": [ - { - "id": 46547220, - "labels": ["dependency"], - "number": 2038, - "title": "Move cli logic to rejoice", - "url": "https://github.com/hapijs/hapi/issues/2038" - }, - { - "id": 46482957, - "labels": ["dependency"], - "number": 2036, - "title": "Move lru-cache to inert", - "url": "https://github.com/hapijs/hapi/issues/2036" - }, - { - "id": 46458328, - "labels": ["test", "dependency"], - "number": 2035, - "title": "lab 5.0 features. Closes #2034", - "url": "https://github.com/hapijs/hapi/pull/2035" - }, - { - "id": 46458286, - "labels": ["test", "dependency"], - "number": 2034, - "title": "Lab 5.0", - "url": "https://github.com/hapijs/hapi/issues/2034" - }, - { - "id": 46128338, - "labels": ["feature"], - "number": 2029, - "title": "Fixes #2028. Updated error message for invalid scope to explain that any of the specified are sufficient", - "url": "https://github.com/hapijs/hapi/pull/2029" - }, - { - "id": 46115080, - "labels": ["feature"], - "number": 2028, - "title": "Improve error message when auth scope is insufficient", - "url": "https://github.com/hapijs/hapi/issues/2028" - }, - { - "id": 45503233, - "labels": ["bug"], - "number": 2024, - "title": "Resolve undefined environment variables to the empty string in the cli.", - "url": "https://github.com/hapijs/hapi/pull/2024" - } - ], - "number": 123, - "url": "https://github.com/hapijs/hapi/milestone/123", - "version": "7.0.1" - }, - { - "date": "2014-10-10T00:26:27Z", - "id": 781660, - "issues": [ - { - "id": 45428746, - "labels": ["breaking changes", "release notes"], - "number": 2023, - "title": "7.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/2023" - }, - { - "id": 45426617, - "labels": ["dependency"], - "number": 2022, - "title": "Spin off file and directory to inert", - "url": "https://github.com/hapijs/hapi/issues/2022" - }, - { - "id": 45414830, - "labels": ["feature"], - "number": 2021, - "title": "Override server files.relativeTo config per route", - "url": "https://github.com/hapijs/hapi/issues/2021" - }, - { - "id": 45414776, - "labels": ["dependency"], - "number": 2020, - "title": "h2o2 2.0", - "url": "https://github.com/hapijs/hapi/issues/2020" - }, - { - "id": 45337404, - "labels": ["breaking changes", "dependency"], - "number": 2019, - "title": "Catbox 4.0", - "url": "https://github.com/hapijs/hapi/issues/2019" - }, - { - "id": 45308675, - "labels": ["breaking changes"], - "number": 2017, - "title": "Initial 7.0 changes", - "url": "https://github.com/hapijs/hapi/pull/2017" - }, - { - "id": 45308544, - "labels": ["breaking changes"], - "number": 2016, - "title": "Remove $env support from pack.compose()", - "url": "https://github.com/hapijs/hapi/issues/2016" - }, - { - "id": 45030421, - "labels": ["bug"], - "number": 2011, - "title": "Hapi should not override `cache-control` header if it's manually set by user's code", - "url": "https://github.com/hapijs/hapi/issues/2011" - }, - { - "id": 44875436, - "labels": ["breaking changes"], - "number": 2007, - "title": "Remove server views config", - "url": "https://github.com/hapijs/hapi/issues/2007" - }, - { - "id": 43214068, - "labels": ["breaking changes"], - "number": 1960, - "title": "Remove support for tos authentication setting", - "url": "https://github.com/hapijs/hapi/issues/1960" - }, - { - "id": 43019654, - "labels": ["feature"], - "number": 1955, - "title": "Use environment variables in CLI configuration json file", - "url": "https://github.com/hapijs/hapi/pull/1955" - }, - { - "id": 42927402, - "labels": ["breaking changes"], - "number": 1954, - "title": "Remove support for catbox getOrGenerate()", - "url": "https://github.com/hapijs/hapi/issues/1954" - }, - { - "id": 42688181, - "labels": ["breaking changes"], - "number": 1941, - "title": "Remove route from handler registration arguments", - "url": "https://github.com/hapijs/hapi/issues/1941" - }, - { - "id": 42167730, - "labels": ["breaking changes", "security"], - "number": 1913, - "title": "Change proxy localStatePassThrough setting default to false", - "url": "https://github.com/hapijs/hapi/issues/1913" - } - ], - "number": 117, - "url": "https://github.com/hapijs/hapi/milestone/117", - "version": "7.0.0" - }, - { - "date": "2014-10-06T19:18:25Z", - "id": 813354, - "issues": [ - { - "id": 44957637, - "labels": ["bug", "dependency"], - "number": 2010, - "title": "Heavy", - "url": "https://github.com/hapijs/hapi/pull/2010" - }, - { - "id": 44957610, - "labels": ["bug"], - "number": 2009, - "title": "Setting event loop delay max lower than sample interval leads to false positive", - "url": "https://github.com/hapijs/hapi/issues/2009" - }, - { - "id": 44929347, - "labels": ["feature"], - "number": 2008, - "title": "Break load handler implementation into separate module", - "url": "https://github.com/hapijs/hapi/issues/2008" - }, - { - "id": 44841377, - "labels": ["feature"], - "number": 2002, - "title": "show route method in error message", - "url": "https://github.com/hapijs/hapi/pull/2002" - } - ], - "number": 122, - "url": "https://github.com/hapijs/hapi/milestone/122", - "version": "6.11.1" - }, - { - "date": "2014-10-04T06:52:40Z", - "id": 812036, - "issues": [ - { - "id": 44860758, - "labels": ["bug", "dependency"], - "number": 2005, - "title": "Replace negotiator", - "url": "https://github.com/hapijs/hapi/pull/2005" - }, - { - "id": 44847438, - "labels": ["bug"], - "number": 2004, - "title": "Default accept-encoding '*' to 'identity', not 'gzip'", - "url": "https://github.com/hapijs/hapi/issues/2004" - }, - { - "id": 44838400, - "labels": ["bug"], - "number": 2001, - "title": "Keep the options of server.inject untouched #2000", - "url": "https://github.com/hapijs/hapi/pull/2001" - }, - { - "id": 44622797, - "labels": ["bug"], - "number": 1995, - "title": "Adding route with multiple methods overrides route config", - "url": "https://github.com/hapijs/hapi/issues/1995" - }, - { - "id": 44120078, - "labels": ["feature"], - "number": 1984, - "title": "All non 200 responses get cache-control=no-cache header", - "url": "https://github.com/hapijs/hapi/issues/1984" - }, - { - "id": 39796122, - "labels": ["dependency"], - "number": 1845, - "title": "Replace negotiator", - "url": "https://github.com/hapijs/hapi/issues/1845" - } - ], - "number": 121, - "url": "https://github.com/hapijs/hapi/milestone/121", - "version": "6.11.0" - }, - { - "date": "2014-10-02T22:16:15Z", - "id": 798791, - "issues": [ - { - "id": 44742556, - "labels": ["dependency"], - "number": 1998, - "title": "Migrate payload parsing to subtext with multipart support via pez", - "url": "https://github.com/hapijs/hapi/pull/1998" - }, - { - "id": 44628979, - "labels": ["feature"], - "number": 1997, - "title": "Allow payload parsing timeout override per route", - "url": "https://github.com/hapijs/hapi/issues/1997" - }, - { - "id": 44626738, - "labels": ["bug"], - "number": 1996, - "title": "Apply payload failAction to maxBytes and invalid content type", - "url": "https://github.com/hapijs/hapi/issues/1996" - }, - { - "id": 44611453, - "labels": ["dependency"], - "number": 1993, - "title": "Replaced optimist with bossy", - "url": "https://github.com/hapijs/hapi/pull/1993" - }, - { - "id": 42410081, - "labels": ["feature"], - "number": 1928, - "title": "Handle empty or falsy charset in response", - "url": "https://github.com/hapijs/hapi/pull/1928" - }, - { - "id": 42344948, - "labels": ["dependency"], - "number": 1923, - "title": "Replace multiparty", - "url": "https://github.com/hapijs/hapi/issues/1923" - }, - { - "id": 39795917, - "labels": ["dependency"], - "number": 1843, - "title": "Replace optimist", - "url": "https://github.com/hapijs/hapi/issues/1843" - } - ], - "number": 120, - "url": "https://github.com/hapijs/hapi/milestone/120", - "version": "6.10.0" - }, - { - "date": "2014-09-22T20:42:23Z", - "id": 784188, - "issues": [ - { - "id": 43551898, - "labels": ["feature"], - "number": 1973, - "title": "Move proxy decorations to h2o2", - "url": "https://github.com/hapijs/hapi/issues/1973" - }, - { - "id": 43551849, - "labels": ["feature"], - "number": 1972, - "title": "Move view decorations to vision", - "url": "https://github.com/hapijs/hapi/issues/1972" - }, - { - "id": 43538814, - "labels": ["dependency"], - "number": 1969, - "title": "Move mime to mimos", - "url": "https://github.com/hapijs/hapi/issues/1969" - }, - { - "id": 43537865, - "labels": ["dependency"], - "number": 1968, - "title": "Vision / Mimos", - "url": "https://github.com/hapijs/hapi/pull/1968" - }, - { - "id": 43537831, - "labels": ["dependency"], - "number": 1967, - "title": "Move views code to vision", - "url": "https://github.com/hapijs/hapi/issues/1967" - }, - { - "id": 43209896, - "labels": ["bug"], - "number": 1959, - "title": "Fix server/plugin ext views conflict", - "url": "https://github.com/hapijs/hapi/pull/1959" - }, - { - "id": 43198240, - "labels": ["dependency"], - "number": 1958, - "title": "Move proxy handler to h2o2", - "url": "https://github.com/hapijs/hapi/pull/1958" - }, - { - "id": 43198236, - "labels": ["dependency"], - "number": 1957, - "title": "Move proxy handler to h2o2", - "url": "https://github.com/hapijs/hapi/issues/1957" - }, - { - "id": 43125211, - "labels": ["bug"], - "number": 1956, - "title": "Fix Content-Type overriding", - "url": "https://github.com/hapijs/hapi/pull/1956" - }, - { - "id": 42731551, - "labels": ["dependency"], - "number": 1944, - "title": "Move router to Call", - "url": "https://github.com/hapijs/hapi/pull/1944" - }, - { - "id": 42689616, - "labels": ["dependency"], - "number": 1943, - "title": "Move routing login out to call", - "url": "https://github.com/hapijs/hapi/issues/1943" - }, - { - "id": 42530577, - "labels": ["bug"], - "number": 1934, - "title": "Fix non-spec compliant Last-Modified header in response", - "url": "https://github.com/hapijs/hapi/pull/1934" - }, - { - "id": 42505076, - "labels": ["bug"], - "number": 1932, - "title": "handle empty CORS expose-headers header response", - "url": "https://github.com/hapijs/hapi/pull/1932" - }, - { - "id": 42370900, - "labels": ["bug"], - "number": 1924, - "title": "Unable to provide views override in onPreResponse", - "url": "https://github.com/hapijs/hapi/issues/1924" - } - ], - "number": 119, - "url": "https://github.com/hapijs/hapi/milestone/119", - "version": "6.9.0" - }, - { - "date": "2014-09-09T21:19:37Z", - "id": 782936, - "issues": [ - { - "id": 42344182, - "labels": ["bug", "breaking changes"], - "number": 1922, - "title": "Handle server methods without cache as special case", - "url": "https://github.com/hapijs/hapi/issues/1922" - } - ], - "number": 118, - "url": "https://github.com/hapijs/hapi/milestone/118", - "version": "6.8.1" - }, - { - "date": "2014-09-09T00:56:34Z", - "id": 768098, - "issues": [ - { - "id": 42538417, - "labels": ["non issue", "breaking changes"], - "number": 1935, - "title": "server.method breaking change", - "url": "https://github.com/hapijs/hapi/issues/1935" - }, - { - "id": 42233937, - "labels": ["feature", "dependency"], - "number": 1919, - "title": "Log method pre string notation", - "url": "https://github.com/hapijs/hapi/pull/1919" - }, - { - "id": 42207610, - "labels": ["feature"], - "number": 1917, - "title": "Log cache info when using server method short hand calls", - "url": "https://github.com/hapijs/hapi/issues/1917" - }, - { - "id": 42168347, - "labels": ["bug", "security", "dependency"], - "number": 1915, - "title": "Issue/1911", - "url": "https://github.com/hapijs/hapi/pull/1915" - }, - { - "id": 42168327, - "labels": ["dependency"], - "number": 1914, - "title": "catbox 3.2", - "url": "https://github.com/hapijs/hapi/issues/1914" - }, - { - "id": 42153579, - "labels": ["bug", "security"], - "number": 1911, - "title": "Exclude configured cookies from proxy passthrough", - "url": "https://github.com/hapijs/hapi/issues/1911" - }, - { - "id": 42059483, - "labels": ["dependency"], - "number": 1905, - "title": "Replaced mime-type with mime.", - "url": "https://github.com/hapijs/hapi/pull/1905" - }, - { - "id": 41572907, - "labels": ["dependency"], - "number": 1890, - "title": "Use mime-db", - "url": "https://github.com/hapijs/hapi/issues/1890" - }, - { - "id": 41537215, - "labels": ["dependency"], - "number": 1889, - "title": "Upgrade to wreck v5", - "url": "https://github.com/hapijs/hapi/pull/1889" - }, - { - "id": 41537018, - "labels": ["dependency"], - "number": 1888, - "title": "Upgrade to Wreck v5", - "url": "https://github.com/hapijs/hapi/issues/1888" - }, - { - "id": 39402378, - "labels": ["feature"], - "number": 1828, - "title": "Disable compression on file types already compressed (png, jpg)", - "url": "https://github.com/hapijs/hapi/issues/1828" - } - ], - "number": 116, - "url": "https://github.com/hapijs/hapi/milestone/116", - "version": "6.8.0" - }, - { - "date": "2014-08-28T00:41:12Z", - "id": 768065, - "issues": [ - { - "id": 41344951, - "labels": ["bug"], - "number": 1885, - "title": "Handler timeout with onPreResponse asserts on bad protect", - "url": "https://github.com/hapijs/hapi/issues/1885" - } - ], - "number": 115, - "url": "https://github.com/hapijs/hapi/milestone/115", - "version": "6.7.1" - }, - { - "date": "2014-08-27T23:38:00Z", - "id": 763675, - "issues": [ - { - "id": 41341873, - "labels": ["feature"], - "number": 1884, - "title": "Improve protect logging", - "url": "https://github.com/hapijs/hapi/issues/1884" - }, - { - "id": 41100300, - "labels": ["feature"], - "number": 1881, - "title": "update qs dependency", - "url": "https://github.com/hapijs/hapi/pull/1881" - } - ], - "number": 114, - "url": "https://github.com/hapijs/hapi/milestone/114", - "version": "6.7.0" - }, - { - "date": "2014-08-24T07:04:25Z", - "id": 752804, - "issues": [ - { - "id": 40969837, - "labels": ["bug"], - "number": 1878, - "title": "Rename private route members", - "url": "https://github.com/hapijs/hapi/issues/1878" - }, - { - "id": 40872804, - "labels": ["dependency"], - "number": 1877, - "title": "Move state.js to statehood module", - "url": "https://github.com/hapijs/hapi/issues/1877" - }, - { - "id": 40810285, - "labels": ["bug"], - "number": 1875, - "title": "Session scope does not match one to many auth.scope on route.", - "url": "https://github.com/hapijs/hapi/issues/1875" - }, - { - "id": 40532468, - "labels": ["dependency"], - "number": 1871, - "title": "Switch to wreck", - "url": "https://github.com/hapijs/hapi/issues/1871" - }, - { - "id": 40294883, - "labels": ["feature"], - "number": 1863, - "title": "Allow agent to be set on proxy options and passed into Nipple.", - "url": "https://github.com/hapijs/hapi/pull/1863" - }, - { - "id": 40194279, - "labels": ["bug"], - "number": 1858, - "title": "Fix typo in defaults.js", - "url": "https://github.com/hapijs/hapi/pull/1858" - }, - { - "id": 40193696, - "labels": ["feature"], - "number": 1856, - "title": "Allow view options override on handler object", - "url": "https://github.com/hapijs/hapi/pull/1856" - } - ], - "number": 113, - "url": "https://github.com/hapijs/hapi/milestone/113", - "version": "6.6.0" - }, - { - "date": "2014-08-13T20:13:10Z", - "id": 752623, - "issues": [ - { - "id": 40193948, - "labels": ["bug"], - "number": 1857, - "title": "Manifest validation tests server config before defaults applies", - "url": "https://github.com/hapijs/hapi/issues/1857" - } - ], - "number": 112, - "url": "https://github.com/hapijs/hapi/milestone/112", - "version": "6.5.1" - }, - { - "date": "2014-08-13T18:50:55Z", - "id": 742901, - "issues": [ - { - "id": 39962695, - "labels": ["documentation"], - "number": 1851, - "title": "Updated route documentation.", - "url": "https://github.com/hapijs/hapi/pull/1851" - }, - { - "id": 39796085, - "labels": ["dependency"], - "number": 1844, - "title": "Replace async", - "url": "https://github.com/hapijs/hapi/issues/1844" - }, - { - "id": 39746008, - "labels": ["test"], - "number": 1842, - "title": "Lab 4.00", - "url": "https://github.com/hapijs/hapi/pull/1842" - }, - { - "id": 39663331, - "labels": ["bug"], - "number": 1840, - "title": "No longer possible to load caches using CLI?", - "url": "https://github.com/hapijs/hapi/issues/1840" - }, - { - "id": 39509793, - "labels": ["bug"], - "number": 1835, - "title": "server.state ttl must be a number ", - "url": "https://github.com/hapijs/hapi/issues/1835" - }, - { - "id": 39479229, - "labels": ["dependency"], - "number": 1832, - "title": "Replace mime with mime-type", - "url": "https://github.com/hapijs/hapi/issues/1832" - }, - { - "id": 39340416, - "labels": ["bug"], - "number": 1822, - "title": "Added joi validation to manifest.", - "url": "https://github.com/hapijs/hapi/pull/1822" - }, - { - "id": 38338167, - "labels": ["feature"], - "number": 1795, - "title": "request.server._views in plugin", - "url": "https://github.com/hapijs/hapi/issues/1795" - }, - { - "id": 35743185, - "labels": ["bug"], - "number": 1722, - "title": "Validate compose manifest", - "url": "https://github.com/hapijs/hapi/issues/1722" - } - ], - "number": 111, - "url": "https://github.com/hapijs/hapi/milestone/111", - "version": "6.5.0" - }, - { - "date": "2014-08-05T01:11:44Z", - "id": 740881, - "issues": [ - { - "id": 39476631, - "labels": ["feature", "breaking changes", "security"], - "number": 1831, - "title": "Upgrade to qs 1.0.0", - "url": "https://github.com/hapijs/hapi/issues/1831" - }, - { - "id": 38806717, - "labels": ["feature", "security"], - "number": 1810, - "title": "set X-Content-Type-Options to nosnif for jsonp responses", - "url": "https://github.com/hapijs/hapi/pull/1810" - } - ], - "number": 110, - "url": "https://github.com/hapijs/hapi/milestone/110", - "version": "6.4.0" - }, - { - "date": "2014-08-04T20:19:30Z", - "id": 740167, - "issues": [ - { - "id": 39378738, - "labels": ["bug"], - "number": 1827, - "title": "Cannot call setTimeout with non-integer msec value", - "url": "https://github.com/hapijs/hapi/issues/1827" - }, - { - "id": 39365217, - "labels": ["feature"], - "number": 1826, - "title": "Support cache generateTimeout setting", - "url": "https://github.com/hapijs/hapi/issues/1826" - } - ], - "number": 109, - "url": "https://github.com/hapijs/hapi/milestone/109", - "version": "6.3.0" - }, - { - "date": "2014-08-01T20:14:34Z", - "id": 729752, - "issues": [ - { - "id": 39323531, - "labels": ["documentation"], - "number": 1820, - "title": "Rename spumko to hapijs", - "url": "https://github.com/hapijs/hapi/issues/1820" - } - ], - "number": 108, - "url": "https://github.com/hapijs/hapi/milestone/108", - "version": "6.2.2" - }, - { - "date": "2014-07-23T14:08:30Z", - "id": 724196, - "issues": [ - { - "id": 38532098, - "labels": ["bug"], - "number": 1801, - "title": "Stale dependencies", - "url": "https://github.com/hapijs/hapi/issues/1801" - } - ], - "number": 107, - "url": "https://github.com/hapijs/hapi/milestone/107", - "version": "6.2.1" - }, - { - "date": "2014-07-17T12:36:05Z", - "id": 723005, - "issues": [ - { - "id": 38069870, - "labels": ["feature"], - "number": 1790, - "title": "Expose authentication mode", - "url": "https://github.com/hapijs/hapi/issues/1790" - }, - { - "id": 37477399, - "labels": ["feature"], - "number": 1767, - "title": "plugin.location", - "url": "https://github.com/hapijs/hapi/issues/1767" - } - ], - "number": 106, - "url": "https://github.com/hapijs/hapi/milestone/106", - "version": "6.2.0" - }, - { - "date": "2014-07-16T14:29:21Z", - "id": 693239, - "issues": [ - { - "id": 37973176, - "labels": ["non issue"], - "number": 1788, - "title": "Last-Modified comparison needs to account for 1 second precision", - "url": "https://github.com/hapijs/hapi/issues/1788" - }, - { - "id": 37747052, - "labels": ["bug"], - "number": 1783, - "title": "Change etag when content-encoding is used", - "url": "https://github.com/hapijs/hapi/issues/1783" - }, - { - "id": 37725548, - "labels": ["bug"], - "number": 1782, - "title": "server.inject() res.result does not reflect actual payload sent on 304/204", - "url": "https://github.com/hapijs/hapi/issues/1782" - }, - { - "id": 37725455, - "labels": ["bug"], - "number": 1781, - "title": "Send empty payload on 204", - "url": "https://github.com/hapijs/hapi/issues/1781" - }, - { - "id": 37712505, - "labels": ["bug"], - "number": 1778, - "title": "Do not create a duplicate Content-Type header on proxy passthrough", - "url": "https://github.com/hapijs/hapi/pull/1778" - }, - { - "id": 37704536, - "labels": ["bug"], - "number": 1777, - "title": "Duplicated \"Content-Type\" header on proxy requests", - "url": "https://github.com/hapijs/hapi/issues/1777" - }, - { - "id": 37698886, - "labels": ["bug"], - "number": 1776, - "title": "Proxy pass-through with onResponse fails to preserve vary header values", - "url": "https://github.com/hapijs/hapi/issues/1776" - }, - { - "id": 37630826, - "labels": ["test", "non issue"], - "number": 1774, - "title": "Style fixes", - "url": "https://github.com/hapijs/hapi/pull/1774" - }, - { - "id": 37614494, - "labels": ["bug"], - "number": 1773, - "title": "Windows path fails on trailing slash on view helpers", - "url": "https://github.com/hapijs/hapi/issues/1773" - }, - { - "id": 37612102, - "labels": ["bug"], - "number": 1772, - "title": "HEAD requests should retail etag header", - "url": "https://github.com/hapijs/hapi/issues/1772" - }, - { - "id": 37610676, - "labels": ["bug"], - "number": 1771, - "title": "Open open one file stream when using precompressed file", - "url": "https://github.com/hapijs/hapi/issues/1771" - }, - { - "id": 37536985, - "labels": ["bug"], - "number": 1769, - "title": "Plugin X missing dependency Y in server if manifest.plugins key order not carefully managed", - "url": "https://github.com/hapijs/hapi/issues/1769" - }, - { - "id": 37406301, - "labels": ["security"], - "number": 1766, - "title": "prepend jsonp callbacks with a comment to prevent the rosetta-flash vulnerability", - "url": "https://github.com/hapijs/hapi/pull/1766" - }, - { - "id": 37335229, - "labels": ["bug"], - "number": 1763, - "title": "fixes #1755 - stripTrailingSlash doesn't work when query variables are used", - "url": "https://github.com/hapijs/hapi/pull/1763" - }, - { - "id": 37292446, - "labels": ["bug"], - "number": 1762, - "title": "fix content-type overriding issue #1760.", - "url": "https://github.com/hapijs/hapi/pull/1762" - }, - { - "id": 37277845, - "labels": ["bug"], - "number": 1760, - "title": "How can I set Content-Type header to the content generated from reply.view?", - "url": "https://github.com/hapijs/hapi/issues/1760" - }, - { - "id": 37211901, - "labels": ["non issue"], - "number": 1756, - "title": "Follow coding conventions concerning semicolons; Don't initialize variab...", - "url": "https://github.com/hapijs/hapi/pull/1756" - }, - { - "id": 37179358, - "labels": ["bug"], - "number": 1755, - "title": "Server Options for Router: stripTrailingSlash doesn't work with query string", - "url": "https://github.com/hapijs/hapi/issues/1755" - }, - { - "id": 37102331, - "labels": ["feature"], - "number": 1754, - "title": "File handler to handle 206 Partial Content?", - "url": "https://github.com/hapijs/hapi/issues/1754" - }, - { - "id": 36984954, - "labels": ["bug"], - "number": 1752, - "title": "Adding helpful error message when pack.register is missing a callback", - "url": "https://github.com/hapijs/hapi/pull/1752" - }, - { - "id": 36984893, - "labels": ["bug"], - "number": 1751, - "title": "Calling pack.register without a callback has an unfriendly error", - "url": "https://github.com/hapijs/hapi/issues/1751" - }, - { - "id": 36749778, - "labels": ["feature"], - "number": 1745, - "title": "Add joi validation of pack options", - "url": "https://github.com/hapijs/hapi/pull/1745" - }, - { - "id": 36081683, - "labels": ["bug"], - "number": 1733, - "title": "log function should only emit once if _server object", - "url": "https://github.com/hapijs/hapi/pull/1733" - }, - { - "id": 35953854, - "labels": ["bug"], - "number": 1728, - "title": "6.x breaks plugin modules exporting functions", - "url": "https://github.com/hapijs/hapi/issues/1728" - }, - { - "id": 35743181, - "labels": ["bug"], - "number": 1721, - "title": "Validate pack options", - "url": "https://github.com/hapijs/hapi/issues/1721" - }, - { - "id": 34730475, - "labels": ["bug"], - "number": 1676, - "title": "Problem serving precompressed files with directory handler", - "url": "https://github.com/hapijs/hapi/issues/1676" - }, - { - "id": 27250311, - "labels": ["bug"], - "number": 1407, - "title": "Skip opening file or rendering view on head or 304", - "url": "https://github.com/hapijs/hapi/issues/1407" - } - ], - "number": 105, - "url": "https://github.com/hapijs/hapi/milestone/105", - "version": "6.1.0" - }, - { - "date": "2014-06-17T07:26:13Z", - "id": 689574, - "issues": [ - { - "id": 35739067, - "labels": ["bug"], - "number": 1720, - "title": "No way to handle root routes with `route: {prefix: '...'}`", - "url": "https://github.com/hapijs/hapi/issues/1720" - }, - { - "id": 35738835, - "labels": ["bug"], - "number": 1719, - "title": "Fixes undefined error in `plugin.dependency`", - "url": "https://github.com/hapijs/hapi/pull/1719" - } - ], - "number": 104, - "url": "https://github.com/hapijs/hapi/milestone/104", - "version": "6.0.2" - }, - { - "date": "2014-06-12T17:28:50Z", - "id": 688887, - "issues": [ - { - "id": 35564369, - "labels": ["bug"], - "number": 1710, - "title": "Buffer based passwords fail schema validation (6.0 regression)", - "url": "https://github.com/hapijs/hapi/issues/1710" - } - ], - "number": 103, - "url": "https://github.com/hapijs/hapi/milestone/103", - "version": "6.0.1" - }, - { - "date": "2014-06-12T05:03:02Z", - "id": 668412, - "issues": [ - { - "id": 39663877, - "labels": ["breaking changes"], - "number": 1841, - "title": "Missing plugin error on migrating from 5.0 provides no useful information", - "url": "https://github.com/hapijs/hapi/issues/1841" - }, - { - "id": 35527493, - "labels": ["bug"], - "number": 1708, - "title": "Hapi 6.0 no longer invalidates auth strategy on registration of route", - "url": "https://github.com/hapijs/hapi/issues/1708" - }, - { - "id": 35500950, - "labels": ["breaking changes", "release notes"], - "number": 1707, - "title": "6.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/1707" - }, - { - "id": 35453709, - "labels": ["breaking changes"], - "number": 1703, - "title": "Catbox 3.0 and drop internal require support", - "url": "https://github.com/hapijs/hapi/issues/1703" - }, - { - "id": 35434647, - "labels": ["bug"], - "number": 1701, - "title": "MODULE_NOT_FOUND on Windows when requirePath is absolute", - "url": "https://github.com/hapijs/hapi/issues/1701" - }, - { - "id": 35411709, - "labels": ["bug", "breaking changes"], - "number": 1700, - "title": "Change the order of actions when starting a pack", - "url": "https://github.com/hapijs/hapi/issues/1700" - }, - { - "id": 35262246, - "labels": ["bug", "breaking changes"], - "number": 1696, - "title": "Non-Error auth err responses are ignored in try mode", - "url": "https://github.com/hapijs/hapi/issues/1696" - }, - { - "id": 35260925, - "labels": ["feature"], - "number": 1695, - "title": "Preserve auth error on try", - "url": "https://github.com/hapijs/hapi/issues/1695" - }, - { - "id": 35228395, - "labels": ["feature"], - "number": 1694, - "title": "Minor error tweaks", - "url": "https://github.com/hapijs/hapi/issues/1694" - }, - { - "id": 35227068, - "labels": ["feature", "breaking changes"], - "number": 1693, - "title": "Enhance setting authentication defaults", - "url": "https://github.com/hapijs/hapi/issues/1693" - }, - { - "id": 35223414, - "labels": ["feature"], - "number": 1692, - "title": "Allow testing a request against any configured authentication strategy", - "url": "https://github.com/hapijs/hapi/issues/1692" - }, - { - "id": 35159547, - "labels": ["feature", "bug", "breaking changes"], - "number": 1691, - "title": "V6.0", - "url": "https://github.com/hapijs/hapi/pull/1691" - }, - { - "id": 35030922, - "labels": ["feature"], - "number": 1688, - "title": "Bring back reply.redirect()", - "url": "https://github.com/hapijs/hapi/issues/1688" - }, - { - "id": 35029890, - "labels": ["bug"], - "number": 1687, - "title": "Don't log auth non-error responses with 'error' tag", - "url": "https://github.com/hapijs/hapi/issues/1687" - }, - { - "id": 34824024, - "labels": ["feature"], - "number": 1679, - "title": "Allow cookie-specific settings for failAction, strictHeader, and clearInvalid", - "url": "https://github.com/hapijs/hapi/issues/1679" - }, - { - "id": 34807871, - "labels": ["feature"], - "number": 1678, - "title": "Expose the location header logic", - "url": "https://github.com/hapijs/hapi/issues/1678" - }, - { - "id": 34739893, - "labels": ["feature"], - "number": 1677, - "title": "Enhance manifest format to support registration options (select, prefix, vhost)", - "url": "https://github.com/hapijs/hapi/issues/1677" - }, - { - "id": 34723733, - "labels": ["breaking changes"], - "number": 1675, - "title": "Remove pack.list", - "url": "https://github.com/hapijs/hapi/issues/1675" - }, - { - "id": 34723536, - "labels": ["feature"], - "number": 1674, - "title": "Make plugin register() and dependency() selectable", - "url": "https://github.com/hapijs/hapi/issues/1674" - }, - { - "id": 34723332, - "labels": ["feature"], - "number": 1673, - "title": "Make plugin.events selectable", - "url": "https://github.com/hapijs/hapi/issues/1673" - }, - { - "id": 34486186, - "labels": ["feature", "breaking changes"], - "number": 1668, - "title": "Delete 'Accept-Encoding' header on proxy requests", - "url": "https://github.com/hapijs/hapi/issues/1668" - }, - { - "id": 34405582, - "labels": ["feature"], - "number": 1666, - "title": "Allow loading different plugins (or same plugins) to different servers in pack", - "url": "https://github.com/hapijs/hapi/issues/1666" - }, - { - "id": 34401817, - "labels": ["bug"], - "number": 1665, - "title": "duplicate require calls in hapi/lib/views.js", - "url": "https://github.com/hapijs/hapi/issues/1665" - }, - { - "id": 34344301, - "labels": ["breaking changes"], - "number": 1664, - "title": "Upgrading plugins to hapi 6.0 (preview)", - "url": "https://github.com/hapijs/hapi/issues/1664" - }, - { - "id": 34330401, - "labels": ["feature"], - "number": 1663, - "title": "Allow register to pre-select servers", - "url": "https://github.com/hapijs/hapi/issues/1663" - }, - { - "id": 34323488, - "labels": ["bug", "breaking changes"], - "number": 1662, - "title": "Config clones bind, app, and plugins", - "url": "https://github.com/hapijs/hapi/issues/1662" - }, - { - "id": 34319712, - "labels": ["bug"], - "number": 1661, - "title": "View manager clones engines including modules", - "url": "https://github.com/hapijs/hapi/issues/1661" - }, - { - "id": 34291571, - "labels": ["bug"], - "number": 1659, - "title": "plugin.view() modifies options' basePath", - "url": "https://github.com/hapijs/hapi/issues/1659" - }, - { - "id": 34291350, - "labels": ["feature"], - "number": 1658, - "title": "Set route path prefix when loading plugin", - "url": "https://github.com/hapijs/hapi/issues/1658" - }, - { - "id": 34274930, - "labels": ["breaking changes"], - "number": 1656, - "title": "Remove pack.require() and plugin.require()", - "url": "https://github.com/hapijs/hapi/issues/1656" - }, - { - "id": 34253624, - "labels": ["breaking changes"], - "number": 1655, - "title": "Remove support for string view engine config", - "url": "https://github.com/hapijs/hapi/issues/1655" - }, - { - "id": 34252199, - "labels": ["breaking changes"], - "number": 1653, - "title": "Move Composer into Pack.compose()", - "url": "https://github.com/hapijs/hapi/issues/1653" - }, - { - "id": 34248625, - "labels": ["breaking changes"], - "number": 1652, - "title": "Remove composer support for multiple packs", - "url": "https://github.com/hapijs/hapi/issues/1652" - }, - { - "id": 34248478, - "labels": ["breaking changes"], - "number": 1651, - "title": "6.0.0 Breaking Changes", - "url": "https://github.com/hapijs/hapi/issues/1651" - }, - { - "id": 29520030, - "labels": ["bug"], - "number": 1499, - "title": "Composer not resolving plugins correctly", - "url": "https://github.com/hapijs/hapi/issues/1499" - }, - { - "id": 29401362, - "labels": ["feature"], - "number": 1490, - "title": "Feature Request: composer.log", - "url": "https://github.com/hapijs/hapi/issues/1490" - }, - { - "id": 28938025, - "labels": ["bug"], - "number": 1471, - "title": "pack.requirePath vs view engine loader", - "url": "https://github.com/hapijs/hapi/issues/1471" - }, - { - "id": 16842723, - "labels": ["feature"], - "number": 981, - "title": "Scope plugin routes to a virtual host", - "url": "https://github.com/hapijs/hapi/issues/981" - } - ], - "number": 102, - "url": "https://github.com/hapijs/hapi/milestone/102", - "version": "6.0.0" - }, - { - "date": "2014-05-24T23:30:34Z", - "id": 663669, - "issues": [ - { - "id": 31826841, - "labels": ["bug"], - "number": 1581, - "title": "Authentication throws are treated as valid reply()", - "url": "https://github.com/hapijs/hapi/issues/1581" - }, - { - "id": 31774411, - "labels": ["feature"], - "number": 1579, - "title": "Add option to remove trailing slashes to router", - "url": "https://github.com/hapijs/hapi/issues/1579" - }, - { - "id": 31517848, - "labels": ["feature"], - "number": 1574, - "title": "Document the best way to implement a 404 from the directory handler when using path callback", - "url": "https://github.com/hapijs/hapi/issues/1574" - }, - { - "id": 31517802, - "labels": ["feature"], - "number": 1573, - "title": "Server throttling controls do not log execution", - "url": "https://github.com/hapijs/hapi/issues/1573" - }, - { - "id": 29982952, - "labels": ["bug"], - "number": 1508, - "title": "Escaped error message with regex validation", - "url": "https://github.com/hapijs/hapi/issues/1508" - }, - { - "id": 29139773, - "labels": ["bug"], - "number": 1477, - "title": "proxy xforward option will set bad headers in some cases", - "url": "https://github.com/hapijs/hapi/issues/1477" - } - ], - "number": 101, - "url": "https://github.com/hapijs/hapi/milestone/101", - "version": "5.1.0" - }, - { - "date": "2014-05-19T19:43:23Z", - "id": 662089, - "issues": [ - { - "id": 33825498, - "labels": ["breaking changes", "release notes"], - "number": 1645, - "title": "5.0.0 Release Notes", - "url": "https://github.com/hapijs/hapi/issues/1645" - }, - { - "id": 33822739, - "labels": ["bug", "breaking changes"], - "number": 1644, - "title": "request.params contains empty strings for missing optional params", - "url": "https://github.com/hapijs/hapi/issues/1644" - }, - { - "id": 33763537, - "labels": ["feature"], - "number": 1643, - "title": "Expose cross inputs as validation context", - "url": "https://github.com/hapijs/hapi/issues/1643" - }, - { - "id": 33763396, - "labels": ["feature"], - "number": 1642, - "title": "Cjihrig header validation", - "url": "https://github.com/hapijs/hapi/pull/1642" - }, - { - "id": 33763011, - "labels": ["feature", "breaking changes"], - "number": 1641, - "title": "Upgrade to joi 4.x", - "url": "https://github.com/hapijs/hapi/pull/1641" - }, - { - "id": 33762752, - "labels": ["breaking changes"], - "number": 1640, - "title": "Rename route `config.validate.path` to `config.validate.params`", - "url": "https://github.com/hapijs/hapi/issues/1640" - }, - { - "id": 33760725, - "labels": ["bug", "breaking changes"], - "number": 1639, - "title": "Response validation modifies payload", - "url": "https://github.com/hapijs/hapi/issues/1639" - }, - { - "id": 32929402, - "labels": ["feature"], - "number": 1622, - "title": "Extend Hapi cli to enable loading a module before loading hapi", - "url": "https://github.com/hapijs/hapi/pull/1622" - }, - { - "id": 32112873, - "labels": ["feature"], - "number": 1589, - "title": "Added validation for request headers.", - "url": "https://github.com/hapijs/hapi/pull/1589" - }, - { - "id": 32079306, - "labels": ["feature"], - "number": 1588, - "title": "Validation for cookies and other headers", - "url": "https://github.com/hapijs/hapi/issues/1588" - } - ], - "number": 100, - "url": "https://github.com/hapijs/hapi/milestone/100", - "version": "5.0.0" - }, - { - "date": "2014-05-17T18:35:49Z", - "id": 661897, - "issues": [ - { - "id": 33696915, - "labels": ["bug"], - "number": 1638, - "title": "Unahndled Exception when a request is aborted", - "url": "https://github.com/hapijs/hapi/issues/1638" - } - ], - "number": 99, - "url": "https://github.com/hapijs/hapi/milestone/99", - "version": "4.1.4" - }, - { - "date": "2014-05-17T08:17:23Z", - "id": 657958, - "issues": [], - "number": 98, - "url": "https://github.com/hapijs/hapi/milestone/98", - "version": "4.1.3" - }, - { - "date": "2014-05-13T20:36:18Z", - "id": 657732, - "issues": [ - { - "id": 33433898, - "labels": ["bug"], - "number": 1635, - "title": "Remove reference to request in domain. Closes #1634", - "url": "https://github.com/hapijs/hapi/pull/1635" - }, - { - "id": 33433646, - "labels": ["bug"], - "number": 1634, - "title": "Request domain leaks request object", - "url": "https://github.com/hapijs/hapi/issues/1634" - } - ], - "number": 97, - "url": "https://github.com/hapijs/hapi/milestone/97", - "version": "4.1.2" - }, - { - "date": "2014-05-13T17:13:19Z", - "id": 646228, - "issues": [ - { - "id": 33345305, - "labels": ["bug"], - "number": 1633, - "title": "Rework domains to single entry", - "url": "https://github.com/hapijs/hapi/pull/1633" - }, - { - "id": 33334886, - "labels": ["bug"], - "number": 1632, - "title": "Clean response objects for aborted requests", - "url": "https://github.com/hapijs/hapi/pull/1632" - }, - { - "id": 32864332, - "labels": ["bug"], - "number": 1619, - "title": "Avoid async operations while protect is running", - "url": "https://github.com/hapijs/hapi/pull/1619" - } - ], - "number": 96, - "url": "https://github.com/hapijs/hapi/milestone/96", - "version": "4.1.1" - }, - { - "date": "2014-05-01T16:33:46Z", - "id": 640014, - "issues": [ - { - "id": 31908458, - "labels": ["feature"], - "number": 1583, - "title": "Support JSON-derived media types", - "url": "https://github.com/hapijs/hapi/pull/1583" - }, - { - "id": 28377295, - "labels": ["feature", "security"], - "number": 1461, - "title": "Security headers", - "url": "https://github.com/hapijs/hapi/pull/1461" - } - ], - "number": 93, - "url": "https://github.com/hapijs/hapi/milestone/93", - "version": "4.1.0" - }, - { - "date": "2014-04-28T21:07:56Z", - "id": 641458, - "issues": [ - { - "id": 32398660, - "labels": ["bug"], - "number": 1604, - "title": "response emitter fails to retain custom event listeners once sent", - "url": "https://github.com/hapijs/hapi/issues/1604" - }, - { - "id": 32273012, - "labels": ["bug"], - "number": 1597, - "title": "Template helpers fail on relative paths", - "url": "https://github.com/hapijs/hapi/issues/1597" - } - ], - "number": 95, - "url": "https://github.com/hapijs/hapi/milestone/95", - "version": "4.0.3" - }, - { - "date": "2014-04-26T00:21:31Z", - "id": 640880, - "issues": [ - { - "id": 32275919, - "labels": ["bug"], - "number": 1598, - "title": "Throws when response does not have _close()", - "url": "https://github.com/hapijs/hapi/issues/1598" - } - ], - "number": 94, - "url": "https://github.com/hapijs/hapi/milestone/94", - "version": "4.0.2" - }, - { - "date": "2014-04-25T07:38:21Z", - "id": 626909, - "issues": [ - { - "id": 32159262, - "labels": ["bug"], - "number": 1594, - "title": "Can jsonp be optional?", - "url": "https://github.com/hapijs/hapi/issues/1594" - }, - { - "id": 32125444, - "labels": ["bug"], - "number": 1591, - "title": "Find better way to drain non file/socket stream than read()", - "url": "https://github.com/hapijs/hapi/issues/1591" - }, - { - "id": 32124988, - "labels": ["bug"], - "number": 1590, - "title": "RSS leak occurs when request does not read entire stream response", - "url": "https://github.com/hapijs/hapi/issues/1590" - }, - { - "id": 31519732, - "labels": ["feature"], - "number": 1575, - "title": "Precompile joi response validation", - "url": "https://github.com/hapijs/hapi/issues/1575" - }, - { - "id": 31397584, - "labels": ["feature"], - "number": 1569, - "title": "Move ext topo sort to its own module", - "url": "https://github.com/hapijs/hapi/issues/1569" - }, - { - "id": 31302876, - "labels": ["bug"], - "number": 1567, - "title": "allow defaultExtension", - "url": "https://github.com/hapijs/hapi/pull/1567" - }, - { - "id": 31300889, - "labels": ["feature"], - "number": 1566, - "title": "Precompile joi validation", - "url": "https://github.com/hapijs/hapi/issues/1566" - } - ], - "number": 92, - "url": "https://github.com/hapijs/hapi/milestone/92", - "version": "4.0.1" - }, - { - "date": "2014-04-08T07:22:36Z", - "id": 613856, - "issues": [ - { - "id": 31028615, - "labels": ["breaking changes"], - "number": 1560, - "title": "4.0.0", - "url": "https://github.com/hapijs/hapi/issues/1560" - }, - { - "id": 31028254, - "labels": ["feature", "breaking changes"], - "number": 1559, - "title": "joi 3.0", - "url": "https://github.com/hapijs/hapi/issues/1559" - }, - { - "id": 31028168, - "labels": ["breaking changes"], - "number": 1558, - "title": "Change Hapi.utils.version() to Hapi.version and remove Hoek alias", - "url": "https://github.com/hapijs/hapi/issues/1558" - }, - { - "id": 30806050, - "labels": ["test"], - "number": 1554, - "title": "coverage, closes #1524", - "url": "https://github.com/hapijs/hapi/pull/1554" - }, - { - "id": 30798078, - "labels": ["bug"], - "number": 1551, - "title": "add an insecureAgent when maxSockets is set, closes #1512", - "url": "https://github.com/hapijs/hapi/pull/1551" - }, - { - "id": 30736930, - "labels": ["bug"], - "number": 1548, - "title": "wip: fix windows bugs", - "url": "https://github.com/hapijs/hapi/pull/1548" - }, - { - "id": 30643712, - "labels": ["bug"], - "number": 1547, - "title": "Make certain that path is relative before joining it to relativeTo", - "url": "https://github.com/hapijs/hapi/pull/1547" - }, - { - "id": 30102493, - "labels": ["test"], - "number": 1524, - "title": "Coverage after lab partial condition result coverage", - "url": "https://github.com/hapijs/hapi/issues/1524" - }, - { - "id": 30088910, - "labels": ["feature"], - "number": 1521, - "title": "Allow plugins to register handler types", - "url": "https://github.com/hapijs/hapi/pull/1521" - } - ], - "number": 91, - "url": "https://github.com/hapijs/hapi/milestone/91", - "version": "4.0.0" - }, - { - "date": "2014-03-29T08:27:53Z", - "id": 607421, - "issues": [ - { - "id": 30432972, - "labels": ["bug", "documentation"], - "number": 1541, - "title": "Clarify that statusCode key of stream response passed in response", - "url": "https://github.com/hapijs/hapi/issues/1541" - }, - { - "id": 30432641, - "labels": ["bug"], - "number": 1540, - "title": "Pre-gzipped source stream not properly tested for being the active source", - "url": "https://github.com/hapijs/hapi/issues/1540" - }, - { - "id": 30412496, - "labels": ["bug"], - "number": 1538, - "title": "Passing Error objects can leak message in 500 response", - "url": "https://github.com/hapijs/hapi/issues/1538" - }, - { - "id": 30368792, - "labels": ["bug"], - "number": 1536, - "title": "maxEventLoopDelay fails to catch when load is too high to reach next sample interval", - "url": "https://github.com/hapijs/hapi/issues/1536" - }, - { - "id": 30368133, - "labels": ["bug", "breaking changes"], - "number": 1535, - "title": "Cannot set maxSockets to node default", - "url": "https://github.com/hapijs/hapi/issues/1535" - }, - { - "id": 30350368, - "labels": ["bug"], - "number": 1533, - "title": "Proxy without passThrough fails to set cache-control header", - "url": "https://github.com/hapijs/hapi/issues/1533" - }, - { - "id": 30279410, - "labels": ["bug"], - "number": 1532, - "title": "Multipart payload to files with multiple files skips second file when large", - "url": "https://github.com/hapijs/hapi/issues/1532" - }, - { - "id": 30264489, - "labels": ["bug"], - "number": 1531, - "title": "pack.log() doesn't retain server debug false setting", - "url": "https://github.com/hapijs/hapi/issues/1531" - }, - { - "id": 30262806, - "labels": ["bug"], - "number": 1530, - "title": "plugin.method() should use method bind before plugin bind", - "url": "https://github.com/hapijs/hapi/issues/1530" - }, - { - "id": 30141325, - "labels": ["feature"], - "number": 1525, - "title": "expose filename and headers for streams in a multipart form", - "url": "https://github.com/hapijs/hapi/pull/1525" - }, - { - "id": 30101811, - "labels": ["feature", "support"], - "number": 1523, - "title": "Question: How to validate payload with templated response properly ?", - "url": "https://github.com/hapijs/hapi/issues/1523" - }, - { - "id": 30084128, - "labels": ["feature", "bug", "documentation"], - "number": 1520, - "title": "server.table() mis-documented, missing args, and route.table() is wrong", - "url": "https://github.com/hapijs/hapi/issues/1520" - }, - { - "id": 30064158, - "labels": ["bug"], - "number": 1518, - "title": "Server timeout config allows invalid values", - "url": "https://github.com/hapijs/hapi/issues/1518" - }, - { - "id": 30056072, - "labels": ["bug"], - "number": 1517, - "title": "Proxy handler payload config validation using incorrect variable", - "url": "https://github.com/hapijs/hapi/issues/1517" - }, - { - "id": 30013788, - "labels": ["test"], - "number": 1515, - "title": "Coverage to 100% after lab logical statement support", - "url": "https://github.com/hapijs/hapi/issues/1515" - }, - { - "id": 30013363, - "labels": ["bug"], - "number": 1514, - "title": "Server allows duplicate lables", - "url": "https://github.com/hapijs/hapi/issues/1514" - }, - { - "id": 30012147, - "labels": ["bug"], - "number": 1513, - "title": "Authentication userland code not protected by domain", - "url": "https://github.com/hapijs/hapi/issues/1513" - } - ], - "number": 90, - "url": "https://github.com/hapijs/hapi/milestone/90", - "version": "3.1.0" - }, - { - "date": "2014-03-24T06:38:33Z", - "id": 606695, - "issues": [ - { - "id": 29972843, - "labels": ["bug"], - "number": 1507, - "title": "request.setUrl('') throws", - "url": "https://github.com/hapijs/hapi/issues/1507" - } - ], - "number": 89, - "url": "https://github.com/hapijs/hapi/milestone/89", - "version": "3.0.2" - }, - { - "date": "2014-03-22T21:20:35Z", - "id": 602268, - "issues": [ - { - "id": 29666316, - "labels": ["bug"], - "number": 1503, - "title": "plugin.method(name, fn, [options]) fails ", - "url": "https://github.com/hapijs/hapi/issues/1503" - } - ], - "number": 88, - "url": "https://github.com/hapijs/hapi/milestone/88", - "version": "3.0.1" - }, - { - "date": "2014-03-12T23:45:58Z", - "id": 580001, - "issues": [ - { - "id": 29278257, - "labels": ["test"], - "number": 1485, - "title": "Bring coverage back to 100% after lab fix", - "url": "https://github.com/hapijs/hapi/issues/1485" - }, - { - "id": 29207071, - "labels": ["bug"], - "number": 1483, - "title": "server.helper cache hit causing the object type to be different", - "url": "https://github.com/hapijs/hapi/issues/1483" - }, - { - "id": 29155250, - "labels": [], - "number": 1479, - "title": "Less major version drama", - "url": "https://github.com/hapijs/hapi/issues/1479" - }, - { - "id": 29154770, - "labels": ["feature"], - "number": 1478, - "title": "Use joi 2.8 alternatives()", - "url": "https://github.com/hapijs/hapi/issues/1478" - }, - { - "id": 29123940, - "labels": ["feature"], - "number": 1476, - "title": "add PATCH to default cors methods, closes #1475", - "url": "https://github.com/hapijs/hapi/pull/1476" - }, - { - "id": 29122304, - "labels": ["feature"], - "number": 1475, - "title": "Include PATCH method in options/cors/methods default", - "url": "https://github.com/hapijs/hapi/issues/1475" - }, - { - "id": 29015182, - "labels": ["breaking changes"], - "number": 1474, - "title": "v3.0.0 Breaking Changes", - "url": "https://github.com/hapijs/hapi/issues/1474" - }, - { - "id": 29014934, - "labels": ["breaking changes"], - "number": 1473, - "title": "Drop dtrace support", - "url": "https://github.com/hapijs/hapi/issues/1473" - }, - { - "id": 28589222, - "labels": ["breaking changes"], - "number": 1466, - "title": "Drop support for server helpers", - "url": "https://github.com/hapijs/hapi/issues/1466" - }, - { - "id": 28567641, - "labels": ["feature", "breaking changes"], - "number": 1465, - "title": "Migrate to catbox 2.0", - "url": "https://github.com/hapijs/hapi/issues/1465" - }, - { - "id": 28471154, - "labels": ["bug"], - "number": 1464, - "title": "When in a route config, Joi.any.rename(, {move:true}) doesnt move item in the payload", - "url": "https://github.com/hapijs/hapi/issues/1464" - }, - { - "id": 28270244, - "labels": ["feature", "bug"], - "number": 1458, - "title": "Removed Http(s) globalAgent settings", - "url": "https://github.com/hapijs/hapi/pull/1458" - } - ], - "number": 86, - "url": "https://github.com/hapijs/hapi/milestone/86", - "version": "3.0.0" - }, - { - "date": "2014-02-25T15:49:24Z", - "id": 576257, - "issues": [ - { - "id": 28145808, - "labels": ["feature", "breaking changes"], - "number": 1455, - "title": "Print to console server logs based on debug config", - "url": "https://github.com/hapijs/hapi/issues/1455" - }, - { - "id": 28115430, - "labels": ["feature"], - "number": 1453, - "title": "Include prerequisites in default view context. #1452", - "url": "https://github.com/hapijs/hapi/pull/1453" - }, - { - "id": 28113128, - "labels": ["feature"], - "number": 1452, - "title": "Perhaps include `request.pre` in handler view context ", - "url": "https://github.com/hapijs/hapi/issues/1452" - }, - { - "id": 28108912, - "labels": ["bug"], - "number": 1451, - "title": "Objects created in plugin.dependency or plugin.after are monitored by the wrong domain", - "url": "https://github.com/hapijs/hapi/issues/1451" - }, - { - "id": 28107871, - "labels": ["feature"], - "number": 1450, - "title": "Enable handlers to use the prerequisite method string notation", - "url": "https://github.com/hapijs/hapi/issues/1450" - }, - { - "id": 28107861, - "labels": ["feature"], - "number": 1449, - "title": "Allow server methods names to include '.' (nested)", - "url": "https://github.com/hapijs/hapi/issues/1449" - }, - { - "id": 28107836, - "labels": ["bug"], - "number": 1448, - "title": "Prerequisite string notation parsing errors", - "url": "https://github.com/hapijs/hapi/issues/1448" - }, - { - "id": 28107823, - "labels": ["feature"], - "number": 1447, - "title": "Allow prerequisites string notation to use method name without ()", - "url": "https://github.com/hapijs/hapi/issues/1447" - }, - { - "id": 28107802, - "labels": ["documentation"], - "number": 1446, - "title": "Document server method callback 'isUncacheable' argument", - "url": "https://github.com/hapijs/hapi/issues/1446" - }, - { - "id": 28107788, - "labels": ["feature"], - "number": 1445, - "title": "Server method bind option", - "url": "https://github.com/hapijs/hapi/issues/1445" - }, - { - "id": 28052225, - "labels": ["bug"], - "number": 1442, - "title": "Response 304", - "url": "https://github.com/hapijs/hapi/pull/1442" - }, - { - "id": 27978477, - "labels": ["bug"], - "number": 1437, - "title": "Safari 6 reload bug using directory handler", - "url": "https://github.com/hapijs/hapi/issues/1437" - } - ], - "number": 85, - "url": "https://github.com/hapijs/hapi/milestone/85", - "version": "2.6.0" - }, - { - "date": "2014-02-21T07:57:24Z", - "id": 571322, - "issues": [ - { - "id": 27997942, - "labels": ["bug"], - "number": 1440, - "title": "Redirecting from within an Auth.Scheme generates a Circular Reference", - "url": "https://github.com/hapijs/hapi/issues/1440" - }, - { - "id": 27988781, - "labels": ["bug"], - "number": 1439, - "title": "proper etag formatting", - "url": "https://github.com/hapijs/hapi/pull/1439" - }, - { - "id": 27923789, - "labels": ["feature"], - "number": 1434, - "title": "Allow overriding the filename in content-disposition headers", - "url": "https://github.com/hapijs/hapi/pull/1434" - }, - { - "id": 27814764, - "labels": ["feature", "breaking changes"], - "number": 1432, - "title": "Replace server helpers with server methods", - "url": "https://github.com/hapijs/hapi/issues/1432" - }, - { - "id": 27489774, - "labels": ["feature"], - "number": 1418, - "title": "normalise callback API usage OR outsmart callback API inconsistency", - "url": "https://github.com/hapijs/hapi/issues/1418" - }, - { - "id": 25106588, - "labels": ["bug"], - "number": 1299, - "title": "thrown errors inside server.inject does not propagate", - "url": "https://github.com/hapijs/hapi/issues/1299" - } - ], - "number": 84, - "url": "https://github.com/hapijs/hapi/milestone/84", - "version": "2.5.0" - }, - { - "date": "2014-02-17T06:39:52Z", - "id": 568382, - "issues": [ - { - "id": 27694794, - "labels": ["bug"], - "number": 1430, - "title": "Server fails to parse \"\" cookie value", - "url": "https://github.com/hapijs/hapi/issues/1430" - }, - { - "id": 27595788, - "labels": ["bug"], - "number": 1428, - "title": "request.getLog() includes same event multiple times when using multiple tags", - "url": "https://github.com/hapijs/hapi/issues/1428" - }, - { - "id": 27546665, - "labels": ["feature"], - "number": 1425, - "title": "return a reference to the server when adding via pack.server", - "url": "https://github.com/hapijs/hapi/pull/1425" - }, - { - "id": 27546446, - "labels": ["feature", "documentation"], - "number": 1424, - "title": "Searching actual working SSE example (#1008 does not work for me)", - "url": "https://github.com/hapijs/hapi/issues/1424" - }, - { - "id": 27506581, - "labels": ["feature"], - "number": 1419, - "title": "Send newline \\n after all responses", - "url": "https://github.com/hapijs/hapi/issues/1419" - } - ], - "number": 83, - "url": "https://github.com/hapijs/hapi/milestone/83", - "version": "2.4.0" - }, - { - "date": "2014-02-13T13:16:52Z", - "id": 565476, - "issues": [ - { - "id": 25884301, - "labels": ["bug"], - "number": 1341, - "title": "Cookie validation does not respect the \"strict\" option", - "url": "https://github.com/hapijs/hapi/issues/1341" - }, - { - "id": 25459331, - "labels": ["bug", "breaking changes"], - "number": 1320, - "title": "Add support for asynchronous view rendering", - "url": "https://github.com/hapijs/hapi/issues/1320" - } - ], - "number": 82, - "url": "https://github.com/hapijs/hapi/milestone/82", - "version": "2.3.0" - }, - { - "date": "2014-02-10T23:37:03Z", - "id": 548513, - "issues": [ - { - "id": 27586120, - "labels": ["security"], - "number": 1427, - "title": "File descriptor leak can cause DoS vulnerability in v2.0 and v2.1", - "url": "https://github.com/hapijs/hapi/issues/1427" - }, - { - "id": 27250771, - "labels": ["bug"], - "number": 1414, - "title": "Sending incorrect status code (200) when file fails to open before transmit", - "url": "https://github.com/hapijs/hapi/issues/1414" - }, - { - "id": 27250728, - "labels": ["bug"], - "number": 1413, - "title": "File stream is opened before necessary (e.g. if replaced by another response in ext)", - "url": "https://github.com/hapijs/hapi/issues/1413" - }, - { - "id": 27250671, - "labels": ["bug"], - "number": 1412, - "title": "Missing file (404) not captured by onPreResponse", - "url": "https://github.com/hapijs/hapi/issues/1412" - }, - { - "id": 27250634, - "labels": ["bug"], - "number": 1411, - "title": "Wasteful encoder prep when response is 304 or head", - "url": "https://github.com/hapijs/hapi/issues/1411" - }, - { - "id": 27250607, - "labels": ["bug"], - "number": 1410, - "title": "passThrough statusCode overrides manual code value", - "url": "https://github.com/hapijs/hapi/issues/1410" - }, - { - "id": 27250538, - "labels": ["bug"], - "number": 1409, - "title": "Status code set from upstream without passThrough flag", - "url": "https://github.com/hapijs/hapi/issues/1409" - }, - { - "id": 27250504, - "labels": ["bug"], - "number": 1408, - "title": "precompressed file handle not closed when using head or 304", - "url": "https://github.com/hapijs/hapi/issues/1408" - }, - { - "id": 27206958, - "labels": ["bug"], - "number": 1405, - "title": "Call parseInt() for Joi-validated integers", - "url": "https://github.com/hapijs/hapi/issues/1405" - }, - { - "id": 27197108, - "labels": ["bug"], - "number": 1404, - "title": "Protect JSON.stringify from throwing.", - "url": "https://github.com/hapijs/hapi/issues/1404" - }, - { - "id": 27103534, - "labels": ["bug"], - "number": 1401, - "title": "route.payload.allow as Array never matches", - "url": "https://github.com/hapijs/hapi/issues/1401" - }, - { - "id": 27070865, - "labels": ["feature", "bug"], - "number": 1400, - "title": "Question: Can you get a log of requests that don't pass validation?", - "url": "https://github.com/hapijs/hapi/issues/1400" - }, - { - "id": 27039241, - "labels": ["bug"], - "number": 1395, - "title": "JSON circular structure error in authentication error logging", - "url": "https://github.com/hapijs/hapi/issues/1395" - }, - { - "id": 26916095, - "labels": ["feature"], - "number": 1393, - "title": "add `gunzip` as third option to `parse`; resolves #1391", - "url": "https://github.com/hapijs/hapi/pull/1393" - }, - { - "id": 26905894, - "labels": ["feature"], - "number": 1391, - "title": "Disable autoparsing without losing gzip", - "url": "https://github.com/hapijs/hapi/issues/1391" - }, - { - "id": 26848684, - "labels": ["bug", "security"], - "number": 1387, - "title": "EMFILE error when hapi serves static files over period of time in hapi 2.1.2", - "url": "https://github.com/hapijs/hapi/issues/1387" - }, - { - "id": 26766789, - "labels": ["feature"], - "number": 1382, - "title": "Make joi optional for route validation", - "url": "https://github.com/hapijs/hapi/issues/1382" - }, - { - "id": 26755930, - "labels": ["feature"], - "number": 1380, - "title": "Allow bind context for view handler", - "url": "https://github.com/hapijs/hapi/pull/1380" - }, - { - "id": 26726953, - "labels": ["feature"], - "number": 1379, - "title": "plugin.bind does not apply to proxy handlers", - "url": "https://github.com/hapijs/hapi/issues/1379" - }, - { - "id": 26725944, - "labels": ["feature", "breaking changes"], - "number": 1378, - "title": "add failureResponse option to proxy handler", - "url": "https://github.com/hapijs/hapi/pull/1378" - }, - { - "id": 26648586, - "labels": ["test"], - "number": 1372, - "title": "test that handler isn't called when a request is interrupted", - "url": "https://github.com/hapijs/hapi/issues/1372" - }, - { - "id": 26366450, - "labels": ["bug"], - "number": 1362, - "title": "(cookies) TypeError: Cannot call method 'match' of undefined", - "url": "https://github.com/hapijs/hapi/issues/1362" - }, - { - "id": 26333762, - "labels": ["bug"], - "number": 1357, - "title": "specify hoek minor version", - "url": "https://github.com/hapijs/hapi/pull/1357" - }, - { - "id": 26316322, - "labels": ["feature"], - "number": 1354, - "title": "Use configuration objects to register helpers", - "url": "https://github.com/hapijs/hapi/pull/1354" - }, - { - "id": 25819356, - "labels": ["bug", "support"], - "number": 1333, - "title": "Clarification on 'stream' changes from 1.20.x to 2.0.x", - "url": "https://github.com/hapijs/hapi/issues/1333" - }, - { - "id": 25630130, - "labels": ["feature"], - "number": 1328, - "title": "How to handle custom POST content-types", - "url": "https://github.com/hapijs/hapi/issues/1328" - } - ], - "number": 81, - "url": "https://github.com/hapijs/hapi/milestone/81", - "version": "2.2.0" - }, - { - "date": "2014-01-27T08:45:55Z", - "id": 542295, - "issues": [ - { - "id": 26338082, - "labels": ["bug"], - "number": 1359, - "title": "Ext reply(null).state() race condition", - "url": "https://github.com/hapijs/hapi/issues/1359" - }, - { - "id": 26299986, - "labels": ["feature"], - "number": 1351, - "title": "Prepare for node 0.12", - "url": "https://github.com/hapijs/hapi/issues/1351" - } - ], - "number": 80, - "url": "https://github.com/hapijs/hapi/milestone/80", - "version": "2.1.2" - }, - { - "date": "2014-01-21T09:12:12Z", - "id": 542008, - "issues": [ - { - "id": 25973253, - "labels": ["bug"], - "number": 1347, - "title": "Views should not use basePath when path is absolute", - "url": "https://github.com/hapijs/hapi/issues/1347" - } - ], - "number": 79, - "url": "https://github.com/hapijs/hapi/milestone/79", - "version": "2.1.1" - }, - { - "date": "2014-01-21T00:13:49Z", - "id": 525367, - "issues": [ - { - "id": 25950914, - "labels": ["feature", "breaking changes"], - "number": 1344, - "title": "Use the plugin loader when configured to load view engines", - "url": "https://github.com/hapijs/hapi/issues/1344" - }, - { - "id": 25853763, - "labels": ["feature"], - "number": 1336, - "title": "Allow custom view layout folder", - "url": "https://github.com/hapijs/hapi/issues/1336" - }, - { - "id": 25853746, - "labels": ["bug"], - "number": 1335, - "title": "Allow view layout to contain a string and boolean", - "url": "https://github.com/hapijs/hapi/issues/1335" - }, - { - "id": 24761932, - "labels": ["test"], - "number": 1245, - "title": "Replace request with nipple in tests", - "url": "https://github.com/hapijs/hapi/issues/1245" - } - ], - "number": 78, - "url": "https://github.com/hapijs/hapi/milestone/78", - "version": "2.1.0" - }, - { - "date": "2014-01-17T09:18:31Z", - "id": 486093, - "issues": [ - { - "id": 25769294, - "labels": ["bug"], - "number": 1332, - "title": "Payload always logging an error regardless of error state", - "url": "https://github.com/hapijs/hapi/issues/1332" - }, - { - "id": 25702988, - "labels": [], - "number": 1331, - "title": "Fix query(string) regression", - "url": "https://github.com/hapijs/hapi/pull/1331" - }, - { - "id": 25624890, - "labels": [], - "number": 1327, - "title": "Better debug support for object data", - "url": "https://github.com/hapijs/hapi/pull/1327" - }, - { - "id": 25543300, - "labels": ["bug"], - "number": 1324, - "title": "When no query params are sent, request.params is null instead of {}.", - "url": "https://github.com/hapijs/hapi/issues/1324" - }, - { - "id": 25471515, - "labels": ["feature"], - "number": 1322, - "title": "Does Hapi support multiple view templates?", - "url": "https://github.com/hapijs/hapi/issues/1322" - }, - { - "id": 25367273, - "labels": ["feature"], - "number": 1317, - "title": "Cannot Parse form-encoded arrays", - "url": "https://github.com/hapijs/hapi/issues/1317" - }, - { - "id": 25300507, - "labels": ["breaking changes"], - "number": 1314, - "title": "Replace old payload try mode with failAction", - "url": "https://github.com/hapijs/hapi/issues/1314" - }, - { - "id": 25299052, - "labels": ["breaking changes"], - "number": 1313, - "title": "Change redirectToSlash default value to true", - "url": "https://github.com/hapijs/hapi/issues/1313" - }, - { - "id": 25280844, - "labels": ["breaking changes"], - "number": 1312, - "title": "Remove special values for server config 'files.relativeTo'", - "url": "https://github.com/hapijs/hapi/issues/1312" - }, - { - "id": 25271035, - "labels": ["feature"], - "number": 1311, - "title": "Implement saving payload to file when not using mutlipart", - "url": "https://github.com/hapijs/hapi/issues/1311" - }, - { - "id": 25259073, - "labels": ["feature"], - "number": 1309, - "title": "Migrate all the plugins to 2.0", - "url": "https://github.com/hapijs/hapi/issues/1309" - }, - { - "id": 25224198, - "labels": ["feature"], - "number": 1304, - "title": "Request 'peek' event", - "url": "https://github.com/hapijs/hapi/issues/1304" - }, - { - "id": 25115520, - "labels": ["feature"], - "number": 1301, - "title": "`querystring` => `qs`, adds support for nested objects", - "url": "https://github.com/hapijs/hapi/pull/1301" - }, - { - "id": 25110485, - "labels": ["bug"], - "number": 1300, - "title": "Do not overwrite Access-Control-Allow-Origin", - "url": "https://github.com/hapijs/hapi/issues/1300" - }, - { - "id": 25079709, - "labels": [], - "number": 1297, - "title": "Document validation option in settings", - "url": "https://github.com/hapijs/hapi/pull/1297" - }, - { - "id": 25070603, - "labels": ["support"], - "number": 1296, - "title": "Possible to overwrite plugin options on a per server scope?", - "url": "https://github.com/hapijs/hapi/issues/1296" - }, - { - "id": 25067130, - "labels": ["feature", "breaking changes"], - "number": 1295, - "title": "Replace route payload.mode with payload.output and payload.parse", - "url": "https://github.com/hapijs/hapi/issues/1295" - }, - { - "id": 25051041, - "labels": ["feature"], - "number": 1294, - "title": "Allow 'domain' option in cookie authentication scheme config", - "url": "https://github.com/hapijs/hapi/issues/1294" - }, - { - "id": 25046914, - "labels": ["feature"], - "number": 1292, - "title": "Skip loading entire multipart to memory and stream directly to multiparty", - "url": "https://github.com/hapijs/hapi/issues/1292" - }, - { - "id": 25046840, - "labels": ["feature", "breaking changes"], - "number": 1291, - "title": "Remove server config normalizeRequestPath and default to true", - "url": "https://github.com/hapijs/hapi/issues/1291" - }, - { - "id": 25046333, - "labels": ["bug"], - "number": 1290, - "title": "Partial path param match /a{b}c does not apply isCaseSensitive", - "url": "https://github.com/hapijs/hapi/issues/1290" - }, - { - "id": 25046247, - "labels": ["support"], - "number": 1289, - "title": "Problem in very large file upload", - "url": "https://github.com/hapijs/hapi/issues/1289" - }, - { - "id": 25003518, - "labels": ["breaking changes"], - "number": 1288, - "title": "Move auth schemes to plugins", - "url": "https://github.com/hapijs/hapi/issues/1288" - }, - { - "id": 25000827, - "labels": ["feature", "breaking changes"], - "number": 1287, - "title": "Split server.auth() into server.auth.scheme() and server.auth.strategy()", - "url": "https://github.com/hapijs/hapi/issues/1287" - }, - { - "id": 24991526, - "labels": ["feature"], - "number": 1286, - "title": "Expose response preview as public API", - "url": "https://github.com/hapijs/hapi/issues/1286" - }, - { - "id": 24976868, - "labels": ["feature", "breaking changes"], - "number": 1285, - "title": "Change authenticate() callback to reply interface", - "url": "https://github.com/hapijs/hapi/issues/1285" - }, - { - "id": 24976844, - "labels": ["feature", "breaking changes"], - "number": 1284, - "title": "Expose request.response and change it to direct ref from func", - "url": "https://github.com/hapijs/hapi/issues/1284" - }, - { - "id": 24955113, - "labels": ["bug", "test"], - "number": 1282, - "title": "Security tests using reply().setState() which throws", - "url": "https://github.com/hapijs/hapi/issues/1282" - }, - { - "id": 24954052, - "labels": ["breaking changes"], - "number": 1281, - "title": "Change authenticate() callback signature", - "url": "https://github.com/hapijs/hapi/issues/1281" - }, - { - "id": 24953717, - "labels": ["feature"], - "number": 1280, - "title": "Support node callback pattern (err, result) for reply()", - "url": "https://github.com/hapijs/hapi/issues/1280" - }, - { - "id": 24928975, - "labels": ["feature", "breaking changes"], - "number": 1279, - "title": "Convert ext method signature to handler", - "url": "https://github.com/hapijs/hapi/issues/1279" - }, - { - "id": 24926637, - "labels": ["bug", "breaking changes"], - "number": 1277, - "title": "Emit 'internalError' for every 500, not just the one sent back", - "url": "https://github.com/hapijs/hapi/issues/1277" - }, - { - "id": 24926265, - "labels": ["bug"], - "number": 1276, - "title": "Retain headers in 304 response", - "url": "https://github.com/hapijs/hapi/issues/1276" - }, - { - "id": 24910679, - "labels": ["feature", "breaking changes"], - "number": 1275, - "title": "Boom 2.0", - "url": "https://github.com/hapijs/hapi/issues/1275" - }, - { - "id": 24900569, - "labels": [], - "number": 1274, - "title": "Fixed code example in README to comply with 2.0.x", - "url": "https://github.com/hapijs/hapi/pull/1274" - }, - { - "id": 24864151, - "labels": ["feature"], - "number": 1272, - "title": "Redo reply.close()", - "url": "https://github.com/hapijs/hapi/issues/1272" - }, - { - "id": 24856617, - "labels": ["bug"], - "number": 1270, - "title": "Apply encoding to Response.Payload operations consistently", - "url": "https://github.com/hapijs/hapi/issues/1270" - }, - { - "id": 24856599, - "labels": ["feature", "breaking changes"], - "number": 1269, - "title": "Manage state all in the request", - "url": "https://github.com/hapijs/hapi/issues/1269" - }, - { - "id": 24856155, - "labels": ["feature"], - "number": 1268, - "title": "Expose more response properties", - "url": "https://github.com/hapijs/hapi/issues/1268" - }, - { - "id": 24852398, - "labels": ["feature"], - "number": 1267, - "title": "Add 'app' and 'plugins' to response object", - "url": "https://github.com/hapijs/hapi/issues/1267" - }, - { - "id": 24850760, - "labels": ["breaking changes"], - "number": 1266, - "title": "Remove 'response.variety' support", - "url": "https://github.com/hapijs/hapi/issues/1266" - }, - { - "id": 24812590, - "labels": ["bug", "breaking changes"], - "number": 1264, - "title": "requesting url that is not encoded correctly should return 400, not 404", - "url": "https://github.com/hapijs/hapi/issues/1264" - }, - { - "id": 24806722, - "labels": ["breaking changes"], - "number": 1262, - "title": "Remove response.getTtl()", - "url": "https://github.com/hapijs/hapi/issues/1262" - }, - { - "id": 24802681, - "labels": ["breaking changes"], - "number": 1261, - "title": "Rename response.uri() to response.location()", - "url": "https://github.com/hapijs/hapi/issues/1261" - }, - { - "id": 24792922, - "labels": ["bug"], - "number": 1259, - "title": "onPreResponse not getting 404 for missing directory files", - "url": "https://github.com/hapijs/hapi/issues/1259" - }, - { - "id": 24779374, - "labels": ["feature", "breaking changes"], - "number": 1258, - "title": "Default Buffer responses to application/octet-stream", - "url": "https://github.com/hapijs/hapi/issues/1258" - }, - { - "id": 24779095, - "labels": ["documentation"], - "number": 1257, - "title": "Validate all examples", - "url": "https://github.com/hapijs/hapi/issues/1257" - }, - { - "id": 24779068, - "labels": ["breaking changes"], - "number": 1256, - "title": "Remove access to internal response types", - "url": "https://github.com/hapijs/hapi/issues/1256" - }, - { - "id": 24773989, - "labels": ["bug"], - "number": 1254, - "title": "File response leaks fd if gzipped stream used instead and the other way.", - "url": "https://github.com/hapijs/hapi/issues/1254" - }, - { - "id": 24772000, - "labels": ["bug"], - "number": 1253, - "title": "in directory, fix the listing of subdirs that reside in a subdirs that have spaces", - "url": "https://github.com/hapijs/hapi/pull/1253" - }, - { - "id": 24763092, - "labels": ["bug"], - "number": 1252, - "title": "Protect response payload stream wrapper from multiple replays", - "url": "https://github.com/hapijs/hapi/issues/1252" - }, - { - "id": 24763031, - "labels": ["feature", "breaking changes"], - "number": 1251, - "title": "Replace File from response type to reply.file() helper", - "url": "https://github.com/hapijs/hapi/issues/1251" - }, - { - "id": 24762881, - "labels": ["feature"], - "number": 1249, - "title": "Cleanup use of request._route.cache and request.route.cache", - "url": "https://github.com/hapijs/hapi/issues/1249" - }, - { - "id": 24762671, - "labels": ["non issue"], - "number": 1248, - "title": "Review proxy upstream ttl passing", - "url": "https://github.com/hapijs/hapi/issues/1248" - }, - { - "id": 24762458, - "labels": ["feature", "breaking changes"], - "number": 1247, - "title": "Clean up postResponse in proxy config", - "url": "https://github.com/hapijs/hapi/issues/1247" - }, - { - "id": 24762053, - "labels": ["feature", "breaking changes"], - "number": 1246, - "title": "Allow zero key helpers with cache", - "url": "https://github.com/hapijs/hapi/issues/1246" - }, - { - "id": 24760718, - "labels": ["breaking changes"], - "number": 1242, - "title": "Remove server-side route caching", - "url": "https://github.com/hapijs/hapi/issues/1242" - }, - { - "id": 24758551, - "labels": ["feature", "breaking changes"], - "number": 1241, - "title": "Add user/private flag to state variable", - "url": "https://github.com/hapijs/hapi/issues/1241" - }, - { - "id": 24758174, - "labels": ["feature"], - "number": 1239, - "title": "Disable cache when Authorization header is included", - "url": "https://github.com/hapijs/hapi/issues/1239" - }, - { - "id": 24758110, - "labels": ["feature"], - "number": 1238, - "title": "Special handling for '*' Vary response header", - "url": "https://github.com/hapijs/hapi/issues/1238" - }, - { - "id": 24698274, - "labels": ["bug"], - "number": 1236, - "title": "Review lru-cache settings", - "url": "https://github.com/hapijs/hapi/issues/1236" - }, - { - "id": 24689143, - "labels": ["feature", "bug"], - "number": 1235, - "title": "Vary support in internal routes cache", - "url": "https://github.com/hapijs/hapi/issues/1235" - }, - { - "id": 24687283, - "labels": ["breaking changes"], - "number": 1234, - "title": "Move client out to separate module", - "url": "https://github.com/hapijs/hapi/issues/1234" - }, - { - "id": 24686494, - "labels": ["documentation"], - "number": 1233, - "title": "Clarify server app config usage", - "url": "https://github.com/hapijs/hapi/issues/1233" - }, - { - "id": 24676888, - "labels": ["breaking changes"], - "number": 1231, - "title": "request.log() no longer adds 'error' tag if data is Error", - "url": "https://github.com/hapijs/hapi/issues/1231" - }, - { - "id": 24671354, - "labels": ["breaking changes"], - "number": 1230, - "title": "Remove plugin permissions", - "url": "https://github.com/hapijs/hapi/issues/1230" - }, - { - "id": 24670655, - "labels": ["feature"], - "number": 1229, - "title": "Add req.on('error'/'close') to request object processing", - "url": "https://github.com/hapijs/hapi/issues/1229" - }, - { - "id": 24670550, - "labels": ["bug"], - "number": 1228, - "title": "Client request timeout and downstream listener not set when payload is a stream", - "url": "https://github.com/hapijs/hapi/issues/1228" - }, - { - "id": 24539376, - "labels": ["feature"], - "number": 1223, - "title": "views.helpersPath requires .js files", - "url": "https://github.com/hapijs/hapi/issues/1223" - }, - { - "id": 24538624, - "labels": ["feature"], - "number": 1222, - "title": "Proxy passthrough does not allow for cookie domain modification", - "url": "https://github.com/hapijs/hapi/issues/1222" - }, - { - "id": 24428120, - "labels": ["documentation"], - "number": 1219, - "title": "`pack.require` doc is somewhat incorrect", - "url": "https://github.com/hapijs/hapi/issues/1219" - }, - { - "id": 24307912, - "labels": ["breaking changes"], - "number": 1216, - "title": "Remove support for `notFound` handler string", - "url": "https://github.com/hapijs/hapi/issues/1216" - }, - { - "id": 24300682, - "labels": ["bug", "breaking changes"], - "number": 1215, - "title": "Content-type charset attribute not added to streams", - "url": "https://github.com/hapijs/hapi/issues/1215" - }, - { - "id": 24298642, - "labels": ["feature"], - "number": 1214, - "title": "Allow specifying a list of method in route config", - "url": "https://github.com/hapijs/hapi/issues/1214" - }, - { - "id": 24234735, - "labels": ["feature", "breaking changes"], - "number": 1211, - "title": "Move all response payload processing to _prepare", - "url": "https://github.com/hapijs/hapi/issues/1211" - }, - { - "id": 24177245, - "labels": ["bug"], - "number": 1209, - "title": "Duplicate parameter error is missing route information", - "url": "https://github.com/hapijs/hapi/issues/1209" - }, - { - "id": 24154748, - "labels": ["bug"], - "number": 1208, - "title": "Route error message does not include information about which route failed", - "url": "https://github.com/hapijs/hapi/issues/1208" - }, - { - "id": 24147095, - "labels": ["feature"], - "number": 1207, - "title": "Accessing the response stream.", - "url": "https://github.com/hapijs/hapi/issues/1207" - }, - { - "id": 24143427, - "labels": ["bug"], - "number": 1205, - "title": "Honor options.bind in ext", - "url": "https://github.com/hapijs/hapi/issues/1205" - }, - { - "id": 24141337, - "labels": ["breaking changes"], - "number": 1204, - "title": "Rename handler/ext context to bind", - "url": "https://github.com/hapijs/hapi/issues/1204" - }, - { - "id": 24138760, - "labels": ["breaking changes"], - "number": 1202, - "title": "Move handler and ext context to use this", - "url": "https://github.com/hapijs/hapi/issues/1202" - }, - { - "id": 24060145, - "labels": [], - "number": 1200, - "title": "Removing confidence, alce from composer and CLI", - "url": "https://github.com/hapijs/hapi/pull/1200" - }, - { - "id": 24060108, - "labels": ["breaking changes"], - "number": 1199, - "title": "Remove confidence and alce dependency", - "url": "https://github.com/hapijs/hapi/issues/1199" - }, - { - "id": 24007432, - "labels": ["breaking changes"], - "number": 1195, - "title": "Move request.context to request.reply.context", - "url": "https://github.com/hapijs/hapi/issues/1195" - }, - { - "id": 24007133, - "labels": ["breaking changes"], - "number": 1194, - "title": "Remove support for decorating request with reply()", - "url": "https://github.com/hapijs/hapi/issues/1194" - }, - { - "id": 24001548, - "labels": ["breaking changes"], - "number": 1192, - "title": "Change pre type to always use handler mode", - "url": "https://github.com/hapijs/hapi/issues/1192" - }, - { - "id": 24001389, - "labels": ["bug"], - "number": 1191, - "title": "Cannot use multiple parallel pre methods in handler mode", - "url": "https://github.com/hapijs/hapi/issues/1191" - }, - { - "id": 23993302, - "labels": ["feature", "breaking changes"], - "number": 1190, - "title": "Move Obj stringify step to _prepare", - "url": "https://github.com/hapijs/hapi/issues/1190" - }, - { - "id": 23988811, - "labels": ["feature"], - "number": 1189, - "title": "Attaching a websocket to a server in a pack", - "url": "https://github.com/hapijs/hapi/issues/1189" - }, - { - "id": 23945675, - "labels": ["feature", "breaking changes"], - "number": 1187, - "title": "Change pre to use nested arrays instead of mode (serial, parallel)", - "url": "https://github.com/hapijs/hapi/issues/1187" - }, - { - "id": 23683749, - "labels": [], - "number": 1185, - "title": "be more careful about options in _provisionCache", - "url": "https://github.com/hapijs/hapi/pull/1185" - }, - { - "id": 23586263, - "labels": ["bug"], - "number": 1183, - "title": "Remove use of removeAllListeners()", - "url": "https://github.com/hapijs/hapi/issues/1183" - }, - { - "id": 23519746, - "labels": ["bug"], - "number": 1182, - "title": "Error transformation does not work when serving static files", - "url": "https://github.com/hapijs/hapi/issues/1182" - }, - { - "id": 23228212, - "labels": ["breaking changes"], - "number": 1178, - "title": "2.0 Breaking Changes", - "url": "https://github.com/hapijs/hapi/issues/1178" - }, - { - "id": 23211633, - "labels": [], - "number": 1176, - "title": "Unify stream and buffer responses", - "url": "https://github.com/hapijs/hapi/pull/1176" - }, - { - "id": 23155310, - "labels": ["feature"], - "number": 1168, - "title": "Save stream to file like {mode: 'file' ...}", - "url": "https://github.com/hapijs/hapi/issues/1168" - }, - { - "id": 22861659, - "labels": ["bug"], - "number": 1155, - "title": "404 not being caught by onPreResponse function", - "url": "https://github.com/hapijs/hapi/issues/1155" - }, - { - "id": 22237248, - "labels": ["support"], - "number": 1134, - "title": "Joi 2.0 integration feedback", - "url": "https://github.com/hapijs/hapi/issues/1134" - }, - { - "id": 19226566, - "labels": ["feature"], - "number": 1059, - "title": "Allow route prerequisites to takeover() and preempt handler", - "url": "https://github.com/hapijs/hapi/issues/1059" - }, - { - "id": 19089729, - "labels": ["feature"], - "number": 1049, - "title": "Validate pre config schema", - "url": "https://github.com/hapijs/hapi/issues/1049" - } - ], - "number": 69, - "url": "https://github.com/hapijs/hapi/milestone/69", - "version": "2.0.0" - }, - { - "date": "2013-11-24T19:44:41Z", - "id": 494063, - "issues": [ - { - "id": 23211458, - "labels": ["feature"], - "number": 1175, - "title": "Allow disabling CORS for individual route", - "url": "https://github.com/hapijs/hapi/issues/1175" - }, - { - "id": 23210211, - "labels": ["feature"], - "number": 1174, - "title": "Adjust CORS origin header options", - "url": "https://github.com/hapijs/hapi/issues/1174" - }, - { - "id": 23167306, - "labels": [], - "number": 1171, - "title": "Only emit vary origin for CORS wildcard mode", - "url": "https://github.com/hapijs/hapi/pull/1171" - } - ], - "number": 77, - "url": "https://github.com/hapijs/hapi/milestone/77", - "version": "1.20.0" - }, - { - "date": "2013-11-22T19:48:43Z", - "id": 493028, - "issues": [ - { - "id": 23162378, - "labels": ["feature", "breaking changes"], - "number": 1169, - "title": "Remove load samples and add protection against interval sample falling behind", - "url": "https://github.com/hapijs/hapi/issues/1169" - }, - { - "id": 23101281, - "labels": ["feature", "bug"], - "number": 1165, - "title": "Switch benchmarks to use Hoek.Bench instead of Date.now()", - "url": "https://github.com/hapijs/hapi/issues/1165" - } - ], - "number": 76, - "url": "https://github.com/hapijs/hapi/milestone/76", - "version": "1.19.5" - }, - { - "date": "2013-11-21T22:05:28Z", - "id": 490786, - "issues": [ - { - "id": 22974250, - "labels": ["bug"], - "number": 1163, - "title": "CORS response doesn't set Vary header in all cases", - "url": "https://github.com/hapijs/hapi/issues/1163" - } - ], - "number": 75, - "url": "https://github.com/hapijs/hapi/milestone/75", - "version": "1.19.4" - }, - { - "date": "2013-11-19T22:05:58Z", - "id": 490501, - "issues": [ - { - "id": 22953073, - "labels": ["bug"], - "number": 1161, - "title": "Schema issues", - "url": "https://github.com/hapijs/hapi/issues/1161" - } - ], - "number": 74, - "url": "https://github.com/hapijs/hapi/milestone/74", - "version": "1.19.3" - }, - { - "date": "2013-11-19T21:49:52Z", - "id": 490465, - "issues": [ - { - "id": 22952152, - "labels": ["bug"], - "number": 1160, - "title": "Missing null test", - "url": "https://github.com/hapijs/hapi/issues/1160" - } - ], - "number": 73, - "url": "https://github.com/hapijs/hapi/milestone/73", - "version": "1.19.2" - }, - { - "date": "2013-11-19T21:48:54Z", - "id": 490464, - "issues": [ - { - "id": 22951985, - "labels": ["feature"], - "number": 1159, - "title": "Allow multiple provisions of the same segment per cache", - "url": "https://github.com/hapijs/hapi/issues/1159" - } - ], - "number": 72, - "url": "https://github.com/hapijs/hapi/milestone/72", - "version": "1.19.1" - }, - { - "date": "2013-11-19T07:45:42Z", - "id": 488914, - "issues": [ - { - "id": 22893578, - "labels": ["bug"], - "number": 1157, - "title": "route cache config does not allow specifying name", - "url": "https://github.com/hapijs/hapi/issues/1157" - }, - { - "id": 22878382, - "labels": [], - "number": 1156, - "title": "Honor upstream ttl when proxying", - "url": "https://github.com/hapijs/hapi/pull/1156" - }, - { - "id": 18484316, - "labels": ["feature"], - "number": 1021, - "title": "Configure proxy handlers to cache according to upstream policy", - "url": "https://github.com/hapijs/hapi/issues/1021" - } - ], - "number": 71, - "url": "https://github.com/hapijs/hapi/milestone/71", - "version": "1.19.0" - }, - { - "date": "2013-11-18T19:22:10Z", - "id": 486841, - "issues": [ - { - "id": 22819986, - "labels": [], - "number": 1152, - "title": "Load sampling and limits", - "url": "https://github.com/hapijs/hapi/pull/1152" - }, - { - "id": 22793928, - "labels": ["feature"], - "number": 1151, - "title": "Max load configuration", - "url": "https://github.com/hapijs/hapi/issues/1151" - }, - { - "id": 22793490, - "labels": [], - "number": 1150, - "title": "Support multiple cache instances", - "url": "https://github.com/hapijs/hapi/pull/1150" - }, - { - "id": 22782638, - "labels": ["feature"], - "number": 1149, - "title": "Allow multiple cache containers", - "url": "https://github.com/hapijs/hapi/issues/1149" - }, - { - "id": 22763325, - "labels": ["bug"], - "number": 1148, - "title": "Return 401 when allowEmptyUsername is false and username missing", - "url": "https://github.com/hapijs/hapi/issues/1148" - } - ], - "number": 70, - "url": "https://github.com/hapijs/hapi/milestone/70", - "version": "1.18.0" - }, - { - "date": "2013-11-15T17:35:12Z", - "id": 479440, - "issues": [ - { - "id": 22744484, - "labels": [], - "number": 1147, - "title": "Add request.reply.proxy()", - "url": "https://github.com/hapijs/hapi/pull/1147" - }, - { - "id": 22739119, - "labels": ["feature"], - "number": 1146, - "title": "Expose proxy functionality as a utility", - "url": "https://github.com/hapijs/hapi/issues/1146" - }, - { - "id": 22711070, - "labels": ["bug"], - "number": 1145, - "title": "Proxy errors should use 502 and 504 instead of 500 for most errors", - "url": "https://github.com/hapijs/hapi/issues/1145" - }, - { - "id": 22695656, - "labels": [], - "number": 1144, - "title": "Support pre-compressed files", - "url": "https://github.com/hapijs/hapi/pull/1144" - }, - { - "id": 22648245, - "labels": [], - "number": 1142, - "title": "Fix ext function plugin env binding", - "url": "https://github.com/hapijs/hapi/pull/1142" - }, - { - "id": 22541366, - "labels": ["bug"], - "number": 1140, - "title": "Not able to login after attempting without user name", - "url": "https://github.com/hapijs/hapi/issues/1140" - }, - { - "id": 22541024, - "labels": ["bug"], - "number": 1139, - "title": "Auth validator does not log useful information", - "url": "https://github.com/hapijs/hapi/issues/1139" - }, - { - "id": 22475851, - "labels": ["bug"], - "number": 1138, - "title": "Apply plugin views during onRequest phase when route is not yet setup", - "url": "https://github.com/hapijs/hapi/issues/1138" - }, - { - "id": 22416115, - "labels": ["bug"], - "number": 1137, - "title": "generateView at 'onRequest' extension point", - "url": "https://github.com/hapijs/hapi/issues/1137" - }, - { - "id": 21976013, - "labels": ["feature"], - "number": 1126, - "title": "serve pre-compressed files when available ", - "url": "https://github.com/hapijs/hapi/issues/1126" - }, - { - "id": 20780705, - "labels": ["feature"], - "number": 1102, - "title": "How to exclude views from layout", - "url": "https://github.com/hapijs/hapi/issues/1102" - }, - { - "id": 19887076, - "labels": ["bug"], - "number": 1070, - "title": "TypeError when validate.* is set to false", - "url": "https://github.com/hapijs/hapi/issues/1070" - } - ], - "number": 68, - "url": "https://github.com/hapijs/hapi/milestone/68", - "version": "1.17.0" - }, - { - "date": "2013-11-09T08:54:32Z", - "id": 477008, - "issues": [ - { - "id": 22381217, - "labels": ["bug"], - "number": 1136, - "title": "Handlebars 1.1.x uses prototype for registerPartials which breaks its use in Hapi", - "url": "https://github.com/hapijs/hapi/issues/1136" - }, - { - "id": 22332419, - "labels": ["documentation"], - "number": 1135, - "title": "Formatting problem in Reference.md", - "url": "https://github.com/hapijs/hapi/issues/1135" - } - ], - "number": 67, - "url": "https://github.com/hapijs/hapi/milestone/67", - "version": "1.16.1" - }, - { - "date": "2013-11-07T00:50:25Z", - "id": 469446, - "issues": [ - { - "id": 22180283, - "labels": [], - "number": 1133, - "title": "Joi 2.0", - "url": "https://github.com/hapijs/hapi/pull/1133" - }, - { - "id": 22151837, - "labels": ["feature", "bug"], - "number": 1132, - "title": "Migrate to joi 2.0", - "url": "https://github.com/hapijs/hapi/issues/1132" - }, - { - "id": 22149941, - "labels": ["bug"], - "number": 1131, - "title": "Debug mode should log thrown and returned errors similarly", - "url": "https://github.com/hapijs/hapi/issues/1131" - }, - { - "id": 22103566, - "labels": [], - "number": 1129, - "title": "support for iisnode and windows named pipes", - "url": "https://github.com/hapijs/hapi/pull/1129" - }, - { - "id": 22100450, - "labels": ["bug"], - "number": 1128, - "title": "Server fails ot start when debug is defined as array", - "url": "https://github.com/hapijs/hapi/issues/1128" - }, - { - "id": 22041345, - "labels": ["feature"], - "number": 1127, - "title": "Add ability to listen listen on windows named pipe", - "url": "https://github.com/hapijs/hapi/issues/1127" - }, - { - "id": 21896611, - "labels": [], - "number": 1124, - "title": "Use ALCE for manifest loading.", - "url": "https://github.com/hapijs/hapi/pull/1124" - }, - { - "id": 21896047, - "labels": ["feature"], - "number": 1123, - "title": "add ability to listen on unix domain socket", - "url": "https://github.com/hapijs/hapi/pull/1123" - } - ], - "number": 66, - "url": "https://github.com/hapijs/hapi/milestone/66", - "version": "1.16.0" - }, - { - "date": "2013-10-30T19:52:38Z", - "id": 445937, - "issues": [ - { - "id": 21852859, - "labels": ["breaking changes"], - "number": 1122, - "title": "Turns multipart processing off by default", - "url": "https://github.com/hapijs/hapi/issues/1122" - }, - { - "id": 21751564, - "labels": ["feature"], - "number": 1119, - "title": "Would it be worth adding a pretty print option to all JSON payloads?", - "url": "https://github.com/hapijs/hapi/issues/1119" - }, - { - "id": 21637418, - "labels": [], - "number": 1116, - "title": "CORS origin bug fixes and enhancements", - "url": "https://github.com/hapijs/hapi/pull/1116" - }, - { - "id": 21355490, - "labels": ["feature"], - "number": 1114, - "title": "What is the best way to access request headers?", - "url": "https://github.com/hapijs/hapi/issues/1114" - }, - { - "id": 21352641, - "labels": [], - "number": 1113, - "title": "updates plugin.views Reference.md entry to a clear and working example", - "url": "https://github.com/hapijs/hapi/pull/1113" - }, - { - "id": 21278174, - "labels": ["feature"], - "number": 1112, - "title": "Too strict cookie parsing?", - "url": "https://github.com/hapijs/hapi/issues/1112" - }, - { - "id": 21175648, - "labels": ["feature"], - "number": 1111, - "title": "Allow safe CORS origins list", - "url": "https://github.com/hapijs/hapi/issues/1111" - }, - { - "id": 20897883, - "labels": [], - "number": 1103, - "title": "allow arrays of scopes on routes", - "url": "https://github.com/hapijs/hapi/pull/1103" - }, - { - "id": 20701782, - "labels": ["feature"], - "number": 1101, - "title": "Multipart configuration options (upload dir, hash)", - "url": "https://github.com/hapijs/hapi/issues/1101" - }, - { - "id": 20481032, - "labels": ["non issue"], - "number": 1094, - "title": "404 not being caught by onPreResponse function", - "url": "https://github.com/hapijs/hapi/issues/1094" - }, - { - "id": 20427815, - "labels": [], - "number": 1091, - "title": "Only set access-control-allow-origin if the origin header value matches (or '*' is allowed)", - "url": "https://github.com/hapijs/hapi/pull/1091" - } - ], - "number": 65, - "url": "https://github.com/hapijs/hapi/milestone/65", - "version": "1.15.0" - }, - { - "date": "2013-10-04T20:32:50Z", - "id": 443464, - "issues": [ - { - "id": 20537209, - "labels": ["feature"], - "number": 1098, - "title": "Add criteria support to CLI", - "url": "https://github.com/hapijs/hapi/issues/1098" - }, - { - "id": 20537088, - "labels": ["feature"], - "number": 1097, - "title": "Initial (internal) confidence integration", - "url": "https://github.com/hapijs/hapi/issues/1097" - }, - { - "id": 20430695, - "labels": ["bug", "breaking changes"], - "number": 1092, - "title": "Empty path parameter should have empty string value, not undefined", - "url": "https://github.com/hapijs/hapi/issues/1092" - }, - { - "id": 18613079, - "labels": ["feature"], - "number": 1028, - "title": "Expose requests content-type/mime & accept", - "url": "https://github.com/hapijs/hapi/issues/1028" - }, - { - "id": 18517380, - "labels": ["bug"], - "number": 1024, - "title": "Hapi.Composer.compose() requires \"plugins\" but won't warn if it's not there", - "url": "https://github.com/hapijs/hapi/issues/1024" - }, - { - "id": 17021555, - "labels": ["bug"], - "number": 995, - "title": "Block response.created() from methods other than POST and PUT", - "url": "https://github.com/hapijs/hapi/issues/995" - } - ], - "number": 64, - "url": "https://github.com/hapijs/hapi/milestone/64", - "version": "1.14.0" - }, - { - "date": "2013-10-02T14:55:11Z", - "id": 442719, - "issues": [ - { - "id": 20378290, - "labels": [], - "number": 1090, - "title": "Support partial path segment parameter", - "url": "https://github.com/hapijs/hapi/pull/1090" - }, - { - "id": 19304725, - "labels": ["bug"], - "number": 1061, - "title": "POST requests with Content-Type=text/plain", - "url": "https://github.com/hapijs/hapi/issues/1061" - }, - { - "id": 18055579, - "labels": ["bug"], - "number": 1012, - "title": "Escaped error responses", - "url": "https://github.com/hapijs/hapi/issues/1012" - }, - { - "id": 17313910, - "labels": ["feature"], - "number": 1000, - "title": "Routing using file extensions", - "url": "https://github.com/hapijs/hapi/issues/1000" - } - ], - "number": 63, - "url": "https://github.com/hapijs/hapi/milestone/63", - "version": "1.13.0" - }, - { - "date": "2013-10-01T19:06:45Z", - "id": 430275, - "issues": [ - { - "id": 20349590, - "labels": [], - "number": 1088, - "title": "Plugin dependencies", - "url": "https://github.com/hapijs/hapi/pull/1088" - }, - { - "id": 20312326, - "labels": ["feature", "breaking changes"], - "number": 1086, - "title": "Allow plugins to specify code executed once a plugin dependency has been loaded", - "url": "https://github.com/hapijs/hapi/issues/1086" - }, - { - "id": 20307351, - "labels": [], - "number": 1085, - "title": "Validation options", - "url": "https://github.com/hapijs/hapi/pull/1085" - }, - { - "id": 20291663, - "labels": ["feature", "breaking changes"], - "number": 1084, - "title": "Restructure validation route configuration", - "url": "https://github.com/hapijs/hapi/issues/1084" - }, - { - "id": 20246594, - "labels": ["bug"], - "number": 1083, - "title": "Normalize response headers to lowercase field name", - "url": "https://github.com/hapijs/hapi/issues/1083" - }, - { - "id": 20245709, - "labels": ["feature", "breaking changes"], - "number": 1081, - "title": "Migrate to Iron 1.0", - "url": "https://github.com/hapijs/hapi/issues/1081" - }, - { - "id": 20197853, - "labels": [], - "number": 1077, - "title": "Add compileMode to schema.js", - "url": "https://github.com/hapijs/hapi/pull/1077" - }, - { - "id": 20154805, - "labels": [], - "number": 1076, - "title": "Test for both formats of Content-Encoding header", - "url": "https://github.com/hapijs/hapi/pull/1076" - }, - { - "id": 20057723, - "labels": [], - "number": 1074, - "title": "Route-specific validation error handler", - "url": "https://github.com/hapijs/hapi/pull/1074" - }, - { - "id": 19221310, - "labels": ["feature"], - "number": 1055, - "title": "Migrate to new method of configuring joi", - "url": "https://github.com/hapijs/hapi/issues/1055" - }, - { - "id": 17880294, - "labels": ["feature"], - "number": 1009, - "title": "Validation fail response status code", - "url": "https://github.com/hapijs/hapi/issues/1009" - }, - { - "id": 17554861, - "labels": ["bug"], - "number": 1004, - "title": "validation fails when using Hapi.types.Object() at the root", - "url": "https://github.com/hapijs/hapi/issues/1004" - } - ], - "number": 62, - "url": "https://github.com/hapijs/hapi/milestone/62", - "version": "1.12.0" - }, - { - "date": "2013-09-18T00:41:06Z", - "id": 430256, - "issues": [ - { - "id": 19655273, - "labels": [], - "number": 1067, - "title": "Bug fix for loading ext auth scheme into multiple servers", - "url": "https://github.com/hapijs/hapi/pull/1067" - }, - { - "id": 19654484, - "labels": ["bug"], - "number": 1065, - "title": "plugin.auth fails to load the same ext into multiple servers", - "url": "https://github.com/hapijs/hapi/issues/1065" - } - ], - "number": 61, - "url": "https://github.com/hapijs/hapi/milestone/61", - "version": "1.11.1" - }, - { - "date": "2013-09-17T23:47:30Z", - "id": 423387, - "issues": [ - { - "id": 19577140, - "labels": [], - "number": 1064, - "title": "Helper cache drop interface", - "url": "https://github.com/hapijs/hapi/pull/1064" - }, - { - "id": 19567439, - "labels": ["feature"], - "number": 1063, - "title": "Provide interface to drop internal cache records for helpers", - "url": "https://github.com/hapijs/hapi/issues/1063" - } - ], - "number": 60, - "url": "https://github.com/hapijs/hapi/milestone/60", - "version": "1.11.0" - }, - { - "date": "2013-09-09T22:16:39Z", - "id": 420763, - "issues": [ - { - "id": 19225889, - "labels": [], - "number": 1058, - "title": "Closes #1056 and #1057", - "url": "https://github.com/hapijs/hapi/pull/1058" - }, - { - "id": 19224505, - "labels": ["bug"], - "number": 1057, - "title": "'/{p*}' is sorted ahead of '/{a}/b/{p*}'", - "url": "https://github.com/hapijs/hapi/issues/1057" - }, - { - "id": 19222980, - "labels": ["feature"], - "number": 1056, - "title": "Allow directory paths to include multiple params and use last for resource selection", - "url": "https://github.com/hapijs/hapi/issues/1056" - }, - { - "id": 19220706, - "labels": [], - "number": 1054, - "title": "Enhance prerequisites configuration options", - "url": "https://github.com/hapijs/hapi/pull/1054" - }, - { - "id": 18682883, - "labels": ["bug"], - "number": 1030, - "title": "Problems with routes", - "url": "https://github.com/hapijs/hapi/issues/1030" - } - ], - "number": 59, - "url": "https://github.com/hapijs/hapi/milestone/59", - "version": "1.10.0" - }, - { - "date": "2013-09-06T06:34:30Z", - "id": 415144, - "issues": [ - { - "id": 19090422, - "labels": ["bug"], - "number": 1050, - "title": "Memory leak due to missing stream destroy", - "url": "https://github.com/hapijs/hapi/issues/1050" - }, - { - "id": 18985237, - "labels": [], - "number": 1044, - "title": "Reverting changes to generic/stream responses", - "url": "https://github.com/hapijs/hapi/pull/1044" - } - ], - "number": 58, - "url": "https://github.com/hapijs/hapi/milestone/58", - "version": "1.9.7" - }, - { - "date": "2013-08-29T20:26:44Z", - "id": 414272, - "issues": [ - { - "id": 18745442, - "labels": [], - "number": 1037, - "title": "Stream responses emit response event", - "url": "https://github.com/hapijs/hapi/pull/1037" - }, - { - "id": 18745343, - "labels": ["bug"], - "number": 1036, - "title": "Stream responses don't emit response event", - "url": "https://github.com/hapijs/hapi/issues/1036" - } - ], - "number": 57, - "url": "https://github.com/hapijs/hapi/milestone/57", - "version": "1.9.6" - }, - { - "date": "2013-08-28T23:52:20Z", - "id": 413971, - "issues": [ - { - "id": 18692882, - "labels": [], - "number": 1034, - "title": "Upping shot dep version", - "url": "https://github.com/hapijs/hapi/pull/1034" - }, - { - "id": 18687228, - "labels": ["bug"], - "number": 1033, - "title": "Node 0.11 bug fixes", - "url": "https://github.com/hapijs/hapi/issues/1033" - }, - { - "id": 18686299, - "labels": [], - "number": 1032, - "title": "Updating boom version to 1.0.0", - "url": "https://github.com/hapijs/hapi/pull/1032" - }, - { - "id": 18380140, - "labels": [], - "number": 1019, - "title": "Depend on Joi v1.1.x", - "url": "https://github.com/hapijs/hapi/pull/1019" - } - ], - "number": 56, - "url": "https://github.com/hapijs/hapi/milestone/56", - "version": "1.9.5" - }, - { - "date": "2013-08-28T18:27:56Z", - "id": 402927, - "issues": [ - { - "id": 18632260, - "labels": [], - "number": 1029, - "title": "Using latest hoek and moved to AUTHORS file", - "url": "https://github.com/hapijs/hapi/pull/1029" - }, - { - "id": 18126861, - "labels": ["bug"], - "number": 1017, - "title": "Overrides Cache-Control in proxy even when no local policy is defined", - "url": "https://github.com/hapijs/hapi/issues/1017" - } - ], - "number": 55, - "url": "https://github.com/hapijs/hapi/milestone/55", - "version": "1.9.4" - }, - { - "date": "2013-08-15T20:07:46Z", - "id": 402895, - "issues": [ - { - "id": 18124646, - "labels": ["bug"], - "number": 1016, - "title": "Adding helper with cache to pack with multiple server crash", - "url": "https://github.com/hapijs/hapi/issues/1016" - } - ], - "number": 54, - "url": "https://github.com/hapijs/hapi/milestone/54", - "version": "1.9.3" - }, - { - "date": "2013-08-15T19:14:05Z", - "id": 402862, - "issues": [ - { - "id": 18121853, - "labels": ["bug"], - "number": 1015, - "title": "Undo #1014", - "url": "https://github.com/hapijs/hapi/issues/1015" - } - ], - "number": 53, - "url": "https://github.com/hapijs/hapi/milestone/53", - "version": "1.9.2" - }, - { - "date": "2013-08-15T18:40:43Z", - "id": 388963, - "issues": [ - { - "id": 18119379, - "labels": ["bug"], - "number": 1014, - "title": "plugin.helper should be selectable", - "url": "https://github.com/hapijs/hapi/issues/1014" - }, - { - "id": 17648127, - "labels": [], - "number": 1005, - "title": "Improve server constructor argument validation error reporting", - "url": "https://github.com/hapijs/hapi/pull/1005" - }, - { - "id": 17542176, - "labels": [], - "number": 1003, - "title": "Ensure request.response function exists before response event", - "url": "https://github.com/hapijs/hapi/pull/1003" - }, - { - "id": 17522108, - "labels": [], - "number": 1001, - "title": "Pack event handlers now support correct args", - "url": "https://github.com/hapijs/hapi/pull/1001" - } - ], - "number": 52, - "url": "https://github.com/hapijs/hapi/milestone/52", - "version": "1.9.1" - }, - { - "date": "2013-07-29T02:57:32Z", - "id": 378871, - "issues": [ - { - "id": 17074138, - "labels": [], - "number": 998, - "title": "Adding dtrace probes", - "url": "https://github.com/hapijs/hapi/pull/998" - }, - { - "id": 17021694, - "labels": [], - "number": 996, - "title": "Remove Directory and View from cacheable responses", - "url": "https://github.com/hapijs/hapi/pull/996" - }, - { - "id": 17009663, - "labels": [], - "number": 994, - "title": "Server level cache", - "url": "https://github.com/hapijs/hapi/pull/994" - }, - { - "id": 17009089, - "labels": [], - "number": 993, - "title": "Plugin context", - "url": "https://github.com/hapijs/hapi/pull/993" - }, - { - "id": 16994630, - "labels": ["feature"], - "number": 991, - "title": "Configurable shared context in plugins", - "url": "https://github.com/hapijs/hapi/issues/991" - }, - { - "id": 16948789, - "labels": ["bug"], - "number": 987, - "title": "View routes caching empty payload (with redis)", - "url": "https://github.com/hapijs/hapi/issues/987" - }, - { - "id": 16876515, - "labels": ["bug", "breaking changes"], - "number": 983, - "title": "Response method terms - encoding() vs charset()", - "url": "https://github.com/hapijs/hapi/issues/983" - }, - { - "id": 16841975, - "labels": ["feature"], - "number": 980, - "title": "Add interface to register local `require` function with plugin api", - "url": "https://github.com/hapijs/hapi/issues/980" - }, - { - "id": 16824474, - "labels": ["bug"], - "number": 979, - "title": "Confusing error message when configuring auth using default strategy when none configured", - "url": "https://github.com/hapijs/hapi/issues/979" - }, - { - "id": 16822298, - "labels": ["feature", "breaking changes"], - "number": 978, - "title": "Change plugin `ext` permission default to true", - "url": "https://github.com/hapijs/hapi/issues/978" - }, - { - "id": 16790264, - "labels": [], - "number": 976, - "title": "plugin.require support", - "url": "https://github.com/hapijs/hapi/pull/976" - }, - { - "id": 16788648, - "labels": ["feature"], - "number": 975, - "title": "Allow plugins to require other plugins", - "url": "https://github.com/hapijs/hapi/issues/975" - }, - { - "id": 16784105, - "labels": [], - "number": 974, - "title": "Pack start/stop events", - "url": "https://github.com/hapijs/hapi/pull/974" - }, - { - "id": 16780153, - "labels": ["feature"], - "number": 973, - "title": "Expose pack start/stop events", - "url": "https://github.com/hapijs/hapi/issues/973" - }, - { - "id": 16778570, - "labels": ["feature"], - "number": 972, - "title": "Add dtrace probes to hapi", - "url": "https://github.com/hapijs/hapi/issues/972" - }, - { - "id": 16648799, - "labels": ["feature"], - "number": 959, - "title": "Adding foundation for dtrace probe support", - "url": "https://github.com/hapijs/hapi/pull/959" - }, - { - "id": 16434637, - "labels": ["feature", "support"], - "number": 954, - "title": "Question: Is it OK to use _cache as general purpose cache?", - "url": "https://github.com/hapijs/hapi/issues/954" - } - ], - "number": 51, - "url": "https://github.com/hapijs/hapi/milestone/51", - "version": "1.9.0" - }, - { - "date": "2013-07-15T20:58:12Z", - "id": 369781, - "issues": [ - { - "id": 16768356, - "labels": ["bug"], - "number": 971, - "title": "Use instanceof Error + isBoom to replace instanceof Boom", - "url": "https://github.com/hapijs/hapi/issues/971" - }, - { - "id": 16758483, - "labels": [], - "number": 970, - "title": "Removing complexity-report", - "url": "https://github.com/hapijs/hapi/pull/970" - }, - { - "id": 16736292, - "labels": [], - "number": 968, - "title": "Changes to `plugin.hapi` and the `cookie` scheme", - "url": "https://github.com/hapijs/hapi/pull/968" - }, - { - "id": 16733320, - "labels": ["bug"], - "number": 967, - "title": "Authentication defaultMode allowed invalid values", - "url": "https://github.com/hapijs/hapi/issues/967" - }, - { - "id": 16732342, - "labels": ["feature"], - "number": 966, - "title": "Expose the hapi module on the request object", - "url": "https://github.com/hapijs/hapi/issues/966" - }, - { - "id": 16730614, - "labels": [], - "number": 965, - "title": "Change parameter name pack to plugin to resolve #963", - "url": "https://github.com/hapijs/hapi/pull/965" - }, - { - "id": 16723535, - "labels": ["documentation"], - "number": 963, - "title": "Question: should pack.register's register pack parameter should be renamed to plugin?", - "url": "https://github.com/hapijs/hapi/issues/963" - }, - { - "id": 16717205, - "labels": ["bug"], - "number": 962, - "title": "Server config schema does not allow single string labels", - "url": "https://github.com/hapijs/hapi/issues/962" - }, - { - "id": 16697016, - "labels": [], - "number": 960, - "title": "Updates to case sensitive routing", - "url": "https://github.com/hapijs/hapi/pull/960" - }, - { - "id": 16543408, - "labels": [], - "number": 958, - "title": "Path params are no longer lowercased in router", - "url": "https://github.com/hapijs/hapi/pull/958" - }, - { - "id": 16446692, - "labels": [], - "number": 955, - "title": "Update Reference.md plugin.lenght to plugin.length", - "url": "https://github.com/hapijs/hapi/pull/955" - }, - { - "id": 16412311, - "labels": ["bug"], - "number": 953, - "title": "Path Parameters case changed when setting isCaseSensitive to false", - "url": "https://github.com/hapijs/hapi/issues/953" - }, - { - "id": 16409444, - "labels": ["documentation"], - "number": 952, - "title": "Document the importance of using hapi.error over separate Boom module", - "url": "https://github.com/hapijs/hapi/issues/952" - }, - { - "id": 16335872, - "labels": [], - "number": 951, - "title": "use .isBoom instead of instanceof Boom", - "url": "https://github.com/hapijs/hapi/pull/951" - }, - { - "id": 16296472, - "labels": [], - "number": 949, - "title": "Error when hawk payload validation is required but the request contains no hash", - "url": "https://github.com/hapijs/hapi/pull/949" - }, - { - "id": 16247468, - "labels": [], - "number": 948, - "title": "reference multiparty instead of formidable", - "url": "https://github.com/hapijs/hapi/pull/948" - }, - { - "id": 16198337, - "labels": [], - "number": 946, - "title": "Updating example to be clearer", - "url": "https://github.com/hapijs/hapi/pull/946" - }, - { - "id": 16055954, - "labels": [], - "number": 944, - "title": "Found some small typos/formatting issues in Reference.md", - "url": "https://github.com/hapijs/hapi/pull/944" - }, - { - "id": 15932212, - "labels": ["bug"], - "number": 940, - "title": "Proxy response gets truncated", - "url": "https://github.com/hapijs/hapi/issues/940" - } - ], - "number": 50, - "url": "https://github.com/hapijs/hapi/milestone/50", - "version": "1.8.3" - }, - { - "date": "2013-06-26T22:26:19Z", - "id": 361215, - "issues": [ - { - "id": 16035187, - "labels": [], - "number": 943, - "title": "Updating version", - "url": "https://github.com/hapijs/hapi/pull/943" - }, - { - "id": 15984439, - "labels": [], - "number": 942, - "title": "Layouts work correctly in jade", - "url": "https://github.com/hapijs/hapi/pull/942" - }, - { - "id": 15932689, - "labels": [], - "number": 941, - "title": "No longer destroying request socket", - "url": "https://github.com/hapijs/hapi/pull/941" - }, - { - "id": 15929282, - "labels": [], - "number": 939, - "title": "JSON response body truncated", - "url": "https://github.com/hapijs/hapi/issues/939" - }, - { - "id": 15920195, - "labels": [], - "number": 938, - "title": "Fixed the code example to get Hapi's version", - "url": "https://github.com/hapijs/hapi/pull/938" - }, - { - "id": 15859629, - "labels": [], - "number": 936, - "title": "Allow omitting trailing slash when last segment is an optional parameter", - "url": "https://github.com/hapijs/hapi/pull/936" - }, - { - "id": 15839679, - "labels": ["bug"], - "number": 935, - "title": "Path matching should allow omitting trailing slash before an optional path parameter", - "url": "https://github.com/hapijs/hapi/issues/935" - }, - { - "id": 15536703, - "labels": ["bug", "documentation"], - "number": 926, - "title": "'layout' option seems broken when using jade as template engine", - "url": "https://github.com/hapijs/hapi/issues/926" - } - ], - "number": 49, - "url": "https://github.com/hapijs/hapi/milestone/49", - "version": "1.8.2" - }, - { - "date": "2013-06-17T22:15:43Z", - "id": 355471, - "issues": [ - { - "id": 15655093, - "labels": [], - "number": 933, - "title": "Updating version to 1.8.1", - "url": "https://github.com/hapijs/hapi/pull/933" - }, - { - "id": 15566281, - "labels": [], - "number": 928, - "title": "Removing listeners on domain when exiting", - "url": "https://github.com/hapijs/hapi/pull/928" - }, - { - "id": 15563888, - "labels": [], - "number": 927, - "title": "Removing global variable", - "url": "https://github.com/hapijs/hapi/pull/927" - } - ], - "number": 48, - "url": "https://github.com/hapijs/hapi/milestone/48", - "version": "1.8.1" - }, - { - "date": "2013-06-13T18:06:05Z", - "id": 352611, - "issues": [ - { - "id": 15519782, - "labels": ["bug"], - "number": 925, - "title": "Fixing edge case where bad path can cause issues with url.parse", - "url": "https://github.com/hapijs/hapi/pull/925" - }, - { - "id": 15446310, - "labels": [], - "number": 924, - "title": "Issue/922", - "url": "https://github.com/hapijs/hapi/pull/924" - }, - { - "id": 15369885, - "labels": ["bug"], - "number": 923, - "title": "remove connection event listeners when server stops", - "url": "https://github.com/hapijs/hapi/pull/923" - }, - { - "id": 15357669, - "labels": ["feature"], - "number": 922, - "title": "Handling directory routes that end both with and without a trailing slash", - "url": "https://github.com/hapijs/hapi/issues/922" - } - ], - "number": 47, - "url": "https://github.com/hapijs/hapi/milestone/47", - "version": "1.8.0" - }, - { - "date": "2013-06-08T02:47:12Z", - "id": 348530, - "issues": [ - { - "id": 15293997, - "labels": [], - "number": 920, - "title": "Upping version to 1.7.3", - "url": "https://github.com/hapijs/hapi/pull/920" - }, - { - "id": 15257104, - "labels": [], - "number": 919, - "title": "Client now handles downstreamRes close event", - "url": "https://github.com/hapijs/hapi/pull/919" - }, - { - "id": 15253118, - "labels": ["bug"], - "number": 918, - "title": "Handle potential edge cases in client errors", - "url": "https://github.com/hapijs/hapi/issues/918" - } - ], - "number": 46, - "url": "https://github.com/hapijs/hapi/milestone/46", - "version": "1.7.3" - }, - { - "date": "2013-06-04T21:25:19Z", - "id": 348504, - "issues": [ - { - "id": 15131368, - "labels": ["bug"], - "number": 915, - "title": "custom cache engine support", - "url": "https://github.com/hapijs/hapi/issues/915" - } - ], - "number": 45, - "url": "https://github.com/hapijs/hapi/milestone/45", - "version": "1.7.2" - }, - { - "date": "2013-06-04T20:59:48Z", - "id": 348230, - "issues": [ - { - "id": 15125665, - "labels": ["bug"], - "number": 913, - "title": "Remove duplicated listener", - "url": "https://github.com/hapijs/hapi/issues/913" - } - ], - "number": 44, - "url": "https://github.com/hapijs/hapi/milestone/44", - "version": "1.7.1" - }, - { - "date": "2013-06-04T06:05:14Z", - "id": 345973, - "issues": [ - { - "id": 15101781, - "labels": ["bug"], - "number": 912, - "title": "Fixing aborted causing duplicate res.ends issue with incoming request", - "url": "https://github.com/hapijs/hapi/pull/912" - }, - { - "id": 15078263, - "labels": ["feature"], - "number": 911, - "title": "Allow client.request calls without a callback (ignoring response)", - "url": "https://github.com/hapijs/hapi/issues/911" - }, - { - "id": 15078077, - "labels": ["bug"], - "number": 910, - "title": "Client does not destroy request on redirection error", - "url": "https://github.com/hapijs/hapi/issues/910" - }, - { - "id": 15008509, - "labels": [], - "number": 907, - "title": "Adding test", - "url": "https://github.com/hapijs/hapi/pull/907" - }, - { - "id": 13691939, - "labels": ["feature"], - "number": 795, - "title": "Request support for HEAD routes", - "url": "https://github.com/hapijs/hapi/issues/795" - } - ], - "number": 43, - "url": "https://github.com/hapijs/hapi/milestone/43", - "version": "1.7.0" - }, - { - "date": "2013-05-31T04:42:16Z", - "id": 345373, - "issues": [ - { - "id": 14975235, - "labels": [], - "number": 906, - "title": "Proxy requests are closed when server response already sent", - "url": "https://github.com/hapijs/hapi/pull/906" - } - ], - "number": 42, - "url": "https://github.com/hapijs/hapi/milestone/42", - "version": "1.6.2" - }, - { - "date": "2013-05-30T19:38:04Z", - "id": 344497, - "issues": [ - { - "id": 14956981, - "labels": [], - "number": 904, - "title": "Issue/902", - "url": "https://github.com/hapijs/hapi/pull/904" - }, - { - "id": 14954028, - "labels": [], - "number": 903, - "title": "Fixing issue where timeout occurs after socket close in client", - "url": "https://github.com/hapijs/hapi/pull/903" - }, - { - "id": 14947753, - "labels": ["bug"], - "number": 902, - "title": "Handle socket errors after done working with the socket", - "url": "https://github.com/hapijs/hapi/issues/902" - }, - { - "id": 14947631, - "labels": [], - "number": 901, - "title": "Performance tweaks", - "url": "https://github.com/hapijs/hapi/pull/901" - }, - { - "id": 14915626, - "labels": [], - "number": 897, - "title": "Hapi node_modules_path now supports symlinks", - "url": "https://github.com/hapijs/hapi/pull/897" - }, - { - "id": 14914250, - "labels": ["bug"], - "number": 896, - "title": "resolve the real path of node_modules_path ", - "url": "https://github.com/hapijs/hapi/issues/896" - } - ], - "number": 41, - "url": "https://github.com/hapijs/hapi/milestone/41", - "version": "1.6.1" - }, - { - "date": "2013-05-29T17:45:18Z", - "id": 344253, - "issues": [ - { - "id": 14898667, - "labels": ["feature"], - "number": 892, - "title": "Expose internal Client to plugins", - "url": "https://github.com/hapijs/hapi/issues/892" - }, - { - "id": 14898558, - "labels": [], - "number": 891, - "title": "Exposing rejectUnauthorized property on proxy", - "url": "https://github.com/hapijs/hapi/pull/891" - } - ], - "number": 40, - "url": "https://github.com/hapijs/hapi/milestone/40", - "version": "1.6.0" - }, - { - "date": "2013-05-28T15:06:36Z", - "id": 342297, - "issues": [ - { - "id": 14783701, - "labels": ["bug"], - "number": 889, - "title": "Plugin view engine required from hapi's module path, not plugin", - "url": "https://github.com/hapijs/hapi/issues/889" - }, - { - "id": 14782966, - "labels": ["bug", "breaking changes"], - "number": 887, - "title": "Default auth scheme only works when scheme is added with 'default' name", - "url": "https://github.com/hapijs/hapi/issues/887" - }, - { - "id": 14781472, - "labels": ["bug", "documentation"], - "number": 886, - "title": "Cookie auth -- unknown auth strategy: default", - "url": "https://github.com/hapijs/hapi/issues/886" - } - ], - "number": 39, - "url": "https://github.com/hapijs/hapi/milestone/39", - "version": "1.5.0" - }, - { - "date": "2013-05-25T06:21:23Z", - "id": 341436, - "issues": [ - { - "id": 14747252, - "labels": [], - "number": 885, - "title": "Fix plugin.path", - "url": "https://github.com/hapijs/hapi/pull/885" - }, - { - "id": 14742968, - "labels": [], - "number": 883, - "title": "Cleanup pack requirePath", - "url": "https://github.com/hapijs/hapi/pull/883" - }, - { - "id": 14600134, - "labels": ["bug"], - "number": 876, - "title": "Leading \".\"s should be removed before matching against domainLabelLenRegx in state.js", - "url": "https://github.com/hapijs/hapi/issues/876" - }, - { - "id": 14562178, - "labels": ["bug"], - "number": 873, - "title": "using a plugin with a package in node_modules doesn't work if cwd other than the main directory", - "url": "https://github.com/hapijs/hapi/issues/873" - }, - { - "id": 14553603, - "labels": ["test"], - "number": 872, - "title": "Test for invalid incoming path without leading '/'", - "url": "https://github.com/hapijs/hapi/issues/872" - }, - { - "id": 14536893, - "labels": ["bug"], - "number": 870, - "title": "Response treats objects as errors based on too trivial keys", - "url": "https://github.com/hapijs/hapi/issues/870" - }, - { - "id": 14508147, - "labels": ["bug"], - "number": 869, - "title": "Request._replyInterface called twice but does not share wasProcessed state", - "url": "https://github.com/hapijs/hapi/issues/869" - }, - { - "id": 14506936, - "labels": ["bug"], - "number": 868, - "title": "Potential leak when aborting reading a payload if max size reached", - "url": "https://github.com/hapijs/hapi/issues/868" - }, - { - "id": 14393867, - "labels": ["bug"], - "number": 857, - "title": "pack.path sometimes not ending in a '/'", - "url": "https://github.com/hapijs/hapi/issues/857" - } - ], - "number": 38, - "url": "https://github.com/hapijs/hapi/milestone/38", - "version": "1.4.0" - }, - { - "date": "2013-05-23T07:12:37Z", - "id": 334568, - "issues": [ - { - "id": 14658192, - "labels": [], - "number": 880, - "title": "Performance and hawk options", - "url": "https://github.com/hapijs/hapi/pull/880" - }, - { - "id": 14657855, - "labels": ["feature"], - "number": 879, - "title": "Support all Hawk and Bewit options", - "url": "https://github.com/hapijs/hapi/issues/879" - }, - { - "id": 14603116, - "labels": [], - "number": 878, - "title": "Adding Client request socket timeout", - "url": "https://github.com/hapijs/hapi/pull/878" - }, - { - "id": 14552850, - "labels": ["bug", "breaking changes"], - "number": 871, - "title": "* allowed in path but used as special character in route fingerprint", - "url": "https://github.com/hapijs/hapi/issues/871" - }, - { - "id": 14423416, - "labels": [], - "number": 863, - "title": "Absolute paths now work correctly with hapi command", - "url": "https://github.com/hapijs/hapi/pull/863" - }, - { - "id": 14419988, - "labels": [], - "number": 862, - "title": "Minor performance tweaks", - "url": "https://github.com/hapijs/hapi/pull/862" - }, - { - "id": 14417484, - "labels": ["bug"], - "number": 861, - "title": "hapi -p argument no longer supports absolute path to node_modules", - "url": "https://github.com/hapijs/hapi/issues/861" - }, - { - "id": 14416045, - "labels": [], - "number": 860, - "title": "Adding hapi bin test and fixing issue with no plugins", - "url": "https://github.com/hapijs/hapi/pull/860" - }, - { - "id": 14413828, - "labels": [], - "number": 859, - "title": "Fixing test", - "url": "https://github.com/hapijs/hapi/pull/859" - }, - { - "id": 14410150, - "labels": [], - "number": 858, - "title": "Added missing done() call in test", - "url": "https://github.com/hapijs/hapi/pull/858" - }, - { - "id": 14369233, - "labels": ["feature"], - "number": 856, - "title": "Remove _log() wrapper", - "url": "https://github.com/hapijs/hapi/issues/856" - } - ], - "number": 37, - "url": "https://github.com/hapijs/hapi/milestone/37", - "version": "1.3.0" - }, - { - "date": "2013-05-14T06:42:23Z", - "id": 331381, - "issues": [ - { - "id": 14291094, - "labels": [], - "number": 854, - "title": "Move to use multiparty", - "url": "https://github.com/hapijs/hapi/pull/854" - }, - { - "id": 14287008, - "labels": [], - "number": 853, - "title": "New internal proxy handler", - "url": "https://github.com/hapijs/hapi/pull/853" - }, - { - "id": 14286949, - "labels": ["breaking changes"], - "number": 852, - "title": "Replace internal proxy implementation", - "url": "https://github.com/hapijs/hapi/issues/852" - }, - { - "id": 14278106, - "labels": [], - "number": 851, - "title": "warning about formidable during npm install", - "url": "https://github.com/hapijs/hapi/issues/851" - }, - { - "id": 14277951, - "labels": [], - "number": 850, - "title": "Increasing allowed sockets to 10 for client", - "url": "https://github.com/hapijs/hapi/pull/850" - }, - { - "id": 14264441, - "labels": [], - "number": 848, - "title": "Template settings override fix", - "url": "https://github.com/hapijs/hapi/pull/848" - }, - { - "id": 14226768, - "labels": ["bug"], - "number": 847, - "title": "POST to routes with payload 'parse' doesn't work with NODE 0.10.0 and 0.10.1", - "url": "https://github.com/hapijs/hapi/issues/847" - }, - { - "id": 14218871, - "labels": ["feature"], - "number": 846, - "title": "Request: View configuration to autoload helepers", - "url": "https://github.com/hapijs/hapi/issues/846" - }, - { - "id": 14218303, - "labels": ["bug"], - "number": 845, - "title": "Generic response fails to account for all possible res events", - "url": "https://github.com/hapijs/hapi/issues/845" - }, - { - "id": 14218297, - "labels": ["bug"], - "number": 844, - "title": "Proxy to outside site fails due to request's old stream api and node 0.10 wrap()", - "url": "https://github.com/hapijs/hapi/issues/844" - }, - { - "id": 14218291, - "labels": ["feature"], - "number": 843, - "title": "Allow setting custom headers via proxy mapUri", - "url": "https://github.com/hapijs/hapi/issues/843" - } - ], - "number": 36, - "url": "https://github.com/hapijs/hapi/milestone/36", - "version": "1.2.0" - }, - { - "date": "2013-05-10T16:08:56Z", - "id": 322747, - "issues": [ - { - "id": 14181729, - "labels": [], - "number": 839, - "title": "Cleanup listeners", - "url": "https://github.com/hapijs/hapi/pull/839" - }, - { - "id": 14180378, - "labels": [], - "number": 838, - "title": "Issue/808", - "url": "https://github.com/hapijs/hapi/pull/838" - }, - { - "id": 14180223, - "labels": [], - "number": 837, - "title": "Issue/812", - "url": "https://github.com/hapijs/hapi/pull/837" - }, - { - "id": 14128171, - "labels": [], - "number": 835, - "title": "`Pack`: Automatically resolve the `requirePath` if provided", - "url": "https://github.com/hapijs/hapi/pull/835" - }, - { - "id": 14081904, - "labels": ["feature"], - "number": 834, - "title": "`Pack` throws an `AssertionError` if the `requirePath` is not absolute", - "url": "https://github.com/hapijs/hapi/issues/834" - }, - { - "id": 14053750, - "labels": [], - "number": 833, - "title": "closes #832", - "url": "https://github.com/hapijs/hapi/pull/833" - }, - { - "id": 14053084, - "labels": ["feature"], - "number": 832, - "title": "Allow route.payload config to be an object with `mode`", - "url": "https://github.com/hapijs/hapi/issues/832" - }, - { - "id": 14053027, - "labels": [], - "number": 831, - "title": "Closes #830", - "url": "https://github.com/hapijs/hapi/pull/831" - }, - { - "id": 14052257, - "labels": ["feature"], - "number": 830, - "title": "Add payload 'try' parsing mode", - "url": "https://github.com/hapijs/hapi/issues/830" - }, - { - "id": 14037819, - "labels": [], - "number": 828, - "title": "Add HttpOnly support to cookie auth", - "url": "https://github.com/hapijs/hapi/pull/828" - }, - { - "id": 14037161, - "labels": [], - "number": 827, - "title": "request debug printout format and condition", - "url": "https://github.com/hapijs/hapi/pull/827" - }, - { - "id": 14017910, - "labels": [], - "number": 824, - "title": "Issue/821", - "url": "https://github.com/hapijs/hapi/pull/824" - }, - { - "id": 13978845, - "labels": ["feature"], - "number": 821, - "title": "Allow to render templates asynchronously", - "url": "https://github.com/hapijs/hapi/issues/821" - }, - { - "id": 13977385, - "labels": [], - "number": 820, - "title": "Clarified the format of payload in server.inject in the Reference doc", - "url": "https://github.com/hapijs/hapi/pull/820" - }, - { - "id": 13916251, - "labels": ["feature"], - "number": 812, - "title": "Allow specifying the supported content-type of each route", - "url": "https://github.com/hapijs/hapi/issues/812" - }, - { - "id": 13910507, - "labels": ["bug"], - "number": 809, - "title": "Error Stack Trace is not printed to the console", - "url": "https://github.com/hapijs/hapi/issues/809" - }, - { - "id": 13902664, - "labels": ["feature"], - "number": 808, - "title": "Add an override config to route.payload", - "url": "https://github.com/hapijs/hapi/issues/808" - }, - { - "id": 13900493, - "labels": ["feature"], - "number": 807, - "title": "Allow HttpOnly Flag for authentication cookies", - "url": "https://github.com/hapijs/hapi/issues/807" - }, - { - "id": 13796504, - "labels": ["feature"], - "number": 801, - "title": "Switch view from using sync file ready to async", - "url": "https://github.com/hapijs/hapi/issues/801" - } - ], - "number": 32, - "url": "https://github.com/hapijs/hapi/milestone/32", - "version": "1.1.0" - }, - { - "date": "2013-05-06T18:44:24Z", - "id": 328000, - "issues": [ - { - "id": 14014550, - "labels": [], - "number": 823, - "title": "Issue/822", - "url": "https://github.com/hapijs/hapi/pull/823" - }, - { - "id": 13986233, - "labels": ["bug"], - "number": 822, - "title": "JSONP doesn't seem to be working", - "url": "https://github.com/hapijs/hapi/issues/822" - }, - { - "id": 13976756, - "labels": [], - "number": 818, - "title": "Tiny composer documentation fix", - "url": "https://github.com/hapijs/hapi/pull/818" - }, - { - "id": 13971839, - "labels": [], - "number": 817, - "title": "Payload bugfix for PATCH method", - "url": "https://github.com/hapijs/hapi/pull/817" - }, - { - "id": 13958241, - "labels": [], - "number": 814, - "title": "Fixed jade compile issues and updated tests to verify fix.", - "url": "https://github.com/hapijs/hapi/pull/814" - }, - { - "id": 13850387, - "labels": ["bug"], - "number": 804, - "title": "Remove restriction on params in path for static file handler", - "url": "https://github.com/hapijs/hapi/issues/804" - } - ], - "number": 35, - "url": "https://github.com/hapijs/hapi/milestone/35", - "version": "1.0.3" - }, - { - "date": "2013-05-04T16:51:51Z", - "id": 326097, - "issues": [ - { - "id": 13962934, - "labels": [], - "number": 815, - "title": "Using TLS settings with Buffer", - "url": "https://github.com/hapijs/hapi/issues/815" - }, - { - "id": 13924088, - "labels": ["bug"], - "number": 813, - "title": "text/* content-type always echo back the received content", - "url": "https://github.com/hapijs/hapi/issues/813" - } - ], - "number": 34, - "url": "https://github.com/hapijs/hapi/milestone/34", - "version": "1.0.2" - }, - { - "date": "2013-05-02T22:35:03Z", - "id": 325928, - "issues": [ - { - "id": 13913740, - "labels": ["bug"], - "number": 811, - "title": "Does not work with formidable 1.0.14", - "url": "https://github.com/hapijs/hapi/issues/811" - } - ], - "number": 33, - "url": "https://github.com/hapijs/hapi/milestone/33", - "version": "1.0.1" - }, - { - "date": "2013-04-30T16:50:51Z", - "id": 288288, - "issues": [ - { - "id": 13709114, - "labels": ["feature"], - "number": 796, - "title": "Allow unencoded double quote and backslash in the cookie value", - "url": "https://github.com/hapijs/hapi/issues/796" - }, - { - "id": 13676023, - "labels": ["feature"], - "number": 793, - "title": "Use new assert with passed parameters instead of concat string", - "url": "https://github.com/hapijs/hapi/issues/793" - }, - { - "id": 13675336, - "labels": ["non issue"], - "number": 792, - "title": "Allow validation of any type, not just objects (except errors, still ignored)", - "url": "https://github.com/hapijs/hapi/issues/792" - }, - { - "id": 13674433, - "labels": ["bug", "test"], - "number": 791, - "title": "Test fails: Auth Hawk includes authorization header in response when the response is a stream", - "url": "https://github.com/hapijs/hapi/issues/791" - }, - { - "id": 13614406, - "labels": ["bug"], - "number": 789, - "title": "Streams not properly being closed for static files when browser gets cache hit", - "url": "https://github.com/hapijs/hapi/issues/789" - }, - { - "id": 13603940, - "labels": ["documentation"], - "number": 788, - "title": "Need more detailed documentation for \"next\" callback for event handlers", - "url": "https://github.com/hapijs/hapi/issues/788" - }, - { - "id": 13602050, - "labels": ["feature"], - "number": 787, - "title": "Expose Plugin File Path", - "url": "https://github.com/hapijs/hapi/issues/787" - }, - { - "id": 13497160, - "labels": ["bug"], - "number": 786, - "title": "View handlers uses `request.querystring` instead of `request.query`", - "url": "https://github.com/hapijs/hapi/issues/786" - }, - { - "id": 13445014, - "labels": ["feature"], - "number": 784, - "title": "Change server helper options.generateKey to receive the same arguments as the helper method", - "url": "https://github.com/hapijs/hapi/issues/784" - }, - { - "id": 13438493, - "labels": ["bug"], - "number": 782, - "title": "Payload parsing should be based on request method, not path method", - "url": "https://github.com/hapijs/hapi/issues/782" - }, - { - "id": 13430971, - "labels": ["bug"], - "number": 781, - "title": "Do not set request.state[name] when value is invalid regardless of failAction", - "url": "https://github.com/hapijs/hapi/issues/781" - }, - { - "id": 13423395, - "labels": ["feature"], - "number": 780, - "title": "Relative path redirection should have vhost support", - "url": "https://github.com/hapijs/hapi/issues/780" - }, - { - "id": 13375783, - "labels": ["feature"], - "number": 779, - "title": "Add server config `location` for Location header prefix", - "url": "https://github.com/hapijs/hapi/issues/779" - }, - { - "id": 13354112, - "labels": ["feature", "breaking changes"], - "number": 776, - "title": "Streamline request.reply()", - "url": "https://github.com/hapijs/hapi/issues/776" - }, - { - "id": 13353381, - "labels": ["feature"], - "number": 775, - "title": "Log cookie errors when failAction set to 'error'", - "url": "https://github.com/hapijs/hapi/issues/775" - }, - { - "id": 13286017, - "labels": ["bug"], - "number": 771, - "title": "Multipart upload issue", - "url": "https://github.com/hapijs/hapi/issues/771" - }, - { - "id": 13233764, - "labels": ["documentation"], - "number": 769, - "title": "View handler example", - "url": "https://github.com/hapijs/hapi/issues/769" - }, - { - "id": 13233600, - "labels": ["documentation"], - "number": 768, - "title": "Directory handler example", - "url": "https://github.com/hapijs/hapi/issues/768" - }, - { - "id": 13212806, - "labels": ["documentation"], - "number": 767, - "title": "Verify every example works with 1.0", - "url": "https://github.com/hapijs/hapi/issues/767" - }, - { - "id": 13204237, - "labels": ["feature"], - "number": 765, - "title": "Refactor views manager configuration", - "url": "https://github.com/hapijs/hapi/issues/765" - }, - { - "id": 13163765, - "labels": ["breaking changes"], - "number": 761, - "title": "Hapi.Types is undefined", - "url": "https://github.com/hapijs/hapi/issues/761" - }, - { - "id": 13135275, - "labels": [], - "number": 759, - "title": "Feature/misc", - "url": "https://github.com/hapijs/hapi/pull/759" - }, - { - "id": 13100931, - "labels": ["bug", "documentation"], - "number": 758, - "title": "cookie authentication example fails with 1.0.0", - "url": "https://github.com/hapijs/hapi/issues/758" - }, - { - "id": 13072454, - "labels": [], - "number": 755, - "title": "Views now render without child path", - "url": "https://github.com/hapijs/hapi/pull/755" - }, - { - "id": 13052383, - "labels": ["bug"], - "number": 754, - "title": "Allow server config to contain uri and not override it if set", - "url": "https://github.com/hapijs/hapi/issues/754" - }, - { - "id": 13046661, - "labels": ["feature"], - "number": 752, - "title": "Shared config for plugins", - "url": "https://github.com/hapijs/hapi/issues/752" - }, - { - "id": 13045948, - "labels": ["bug"], - "number": 751, - "title": "Cleanup Unmonitored error", - "url": "https://github.com/hapijs/hapi/issues/751" - }, - { - "id": 13014068, - "labels": ["bug"], - "number": 749, - "title": "Debug stack trace", - "url": "https://github.com/hapijs/hapi/issues/749" - }, - { - "id": 12954193, - "labels": ["support"], - "number": 748, - "title": "request.reply.redirect going to '0.0.0.0'", - "url": "https://github.com/hapijs/hapi/issues/748" - }, - { - "id": 12928940, - "labels": [], - "number": 745, - "title": "Basic Authentication callback with no username/password returns 500", - "url": "https://github.com/hapijs/hapi/issues/745" - }, - { - "id": 12920612, - "labels": ["documentation"], - "number": 744, - "title": "Basic Authentication", - "url": "https://github.com/hapijs/hapi/issues/744" - }, - { - "id": 12905405, - "labels": ["feature"], - "number": 742, - "title": "Remove built-in Oz support", - "url": "https://github.com/hapijs/hapi/issues/742" - }, - { - "id": 12884522, - "labels": ["feature"], - "number": 741, - "title": "Remove Raw response type", - "url": "https://github.com/hapijs/hapi/issues/741" - }, - { - "id": 12862942, - "labels": [], - "number": 739, - "title": "Adding server.stop support for destroying connections after a timeout", - "url": "https://github.com/hapijs/hapi/pull/739" - }, - { - "id": 12861082, - "labels": [], - "number": 738, - "title": "Support for Access-Control-Expose-Headers in the CORS options", - "url": "https://github.com/hapijs/hapi/pull/738" - }, - { - "id": 12835349, - "labels": [], - "number": 736, - "title": "Node v0.10", - "url": "https://github.com/hapijs/hapi/pull/736" - }, - { - "id": 12817700, - "labels": ["breaking changes"], - "number": 735, - "title": "1.0.0 Breaking Changes", - "url": "https://github.com/hapijs/hapi/issues/735" - }, - { - "id": 11859746, - "labels": ["feature"], - "number": 651, - "title": "node 0.10", - "url": "https://github.com/hapijs/hapi/issues/651" - }, - { - "id": 11397131, - "labels": ["feature"], - "number": 582, - "title": "Require.js support", - "url": "https://github.com/hapijs/hapi/issues/582" - } - ], - "number": 26, - "url": "https://github.com/hapijs/hapi/milestone/26", - "version": "1.0.0" - }, - { - "date": "2013-04-03T07:45:24Z", - "id": 285258, - "issues": [ - { - "id": 12635355, - "labels": ["feature"], - "number": 728, - "title": "Hawk 0.11", - "url": "https://github.com/hapijs/hapi/issues/728" - }, - { - "id": 12634593, - "labels": [], - "number": 727, - "title": "Fix hawk response header edge cases", - "url": "https://github.com/hapijs/hapi/pull/727" - }, - { - "id": 12624628, - "labels": [], - "number": 726, - "title": "Misc features", - "url": "https://github.com/hapijs/hapi/pull/726" - }, - { - "id": 12621256, - "labels": [], - "number": 725, - "title": "Debug enhancements", - "url": "https://github.com/hapijs/hapi/pull/725" - }, - { - "id": 12617454, - "labels": [], - "number": 724, - "title": "Route validation is now using payload instead of schema", - "url": "https://github.com/hapijs/hapi/pull/724" - }, - { - "id": 12615604, - "labels": [], - "number": 721, - "title": "Rename the route validate.schema to validate.payload", - "url": "https://github.com/hapijs/hapi/issues/721" - }, - { - "id": 12613611, - "labels": ["bug"], - "number": 720, - "title": "Auth.responseHeader not called if error returned pre handler", - "url": "https://github.com/hapijs/hapi/issues/720" - }, - { - "id": 12543066, - "labels": ["feature"], - "number": 718, - "title": "Automatically set a cookie if none present", - "url": "https://github.com/hapijs/hapi/issues/718" - }, - { - "id": 12520802, - "labels": [], - "number": 716, - "title": "Errors when preparing a response now emit internalError correctly", - "url": "https://github.com/hapijs/hapi/pull/716" - }, - { - "id": 12467968, - "labels": [], - "number": 715, - "title": "Auth api refactor", - "url": "https://github.com/hapijs/hapi/pull/715" - }, - { - "id": 12466389, - "labels": [], - "number": 714, - "title": "Adding remote address and referrer information to request.info", - "url": "https://github.com/hapijs/hapi/pull/714" - }, - { - "id": 12459303, - "labels": ["bug"], - "number": 713, - "title": "internalError event not emitted on view error.", - "url": "https://github.com/hapijs/hapi/issues/713" - }, - { - "id": 12387120, - "labels": ["feature"], - "number": 711, - "title": "Add environment variable support when using composer", - "url": "https://github.com/hapijs/hapi/issues/711" - }, - { - "id": 12325809, - "labels": ["bug"], - "number": 707, - "title": "internalError event returns error handler stack trace not thrown trace", - "url": "https://github.com/hapijs/hapi/issues/707" - }, - { - "id": 12317704, - "labels": ["bug"], - "number": 706, - "title": "Hawk's Authorization Response Header", - "url": "https://github.com/hapijs/hapi/issues/706" - }, - { - "id": 12299900, - "labels": ["non issue"], - "number": 705, - "title": "Hawk's timestamp using Hapi", - "url": "https://github.com/hapijs/hapi/issues/705" - }, - { - "id": 12279230, - "labels": ["support"], - "number": 703, - "title": "taking a look at http data posted before 400 response", - "url": "https://github.com/hapijs/hapi/issues/703" - }, - { - "id": 12262195, - "labels": ["feature"], - "number": 702, - "title": "Client IP Address", - "url": "https://github.com/hapijs/hapi/issues/702" - }, - { - "id": 12261218, - "labels": ["documentation", "support"], - "number": 701, - "title": "A newbie question about Cookie Authentication example", - "url": "https://github.com/hapijs/hapi/issues/701" - }, - { - "id": 12243568, - "labels": [], - "number": 700, - "title": "Adding security tests and fixing security bugs", - "url": "https://github.com/hapijs/hapi/pull/700" - }, - { - "id": 12214582, - "labels": ["feature"], - "number": 698, - "title": "Reformat errors ability", - "url": "https://github.com/hapijs/hapi/issues/698" - }, - { - "id": 12214430, - "labels": ["feature"], - "number": 697, - "title": "Protect all error responses from echo attacks", - "url": "https://github.com/hapijs/hapi/issues/697" - }, - { - "id": 12214293, - "labels": ["feature"], - "number": 696, - "title": "Provide easier debugging defaults", - "url": "https://github.com/hapijs/hapi/issues/696" - }, - { - "id": 12214014, - "labels": ["feature"], - "number": 694, - "title": "Normalize handler signature (always bind this, and pass same args)", - "url": "https://github.com/hapijs/hapi/issues/694" - }, - { - "id": 12211394, - "labels": ["bug"], - "number": 693, - "title": "file handler includes internal information in the response", - "url": "https://github.com/hapijs/hapi/issues/693" - }, - { - "id": 12211081, - "labels": ["bug"], - "number": 692, - "title": "Missing handler error should provide more debug information", - "url": "https://github.com/hapijs/hapi/issues/692" - }, - { - "id": 12153633, - "labels": [], - "number": 686, - "title": "Pack auth api", - "url": "https://github.com/hapijs/hapi/pull/686" - }, - { - "id": 12126279, - "labels": ["documentation"], - "number": 685, - "title": "How to use State and Cookie Authentication?", - "url": "https://github.com/hapijs/hapi/issues/685" - }, - { - "id": 12117075, - "labels": ["feature"], - "number": 684, - "title": "Enable plugin registration of auth schemes", - "url": "https://github.com/hapijs/hapi/issues/684" - }, - { - "id": 12116333, - "labels": [], - "number": 683, - "title": "Pack and cache API refactor", - "url": "https://github.com/hapijs/hapi/pull/683" - }, - { - "id": 12006207, - "labels": ["breaking changes"], - "number": 673, - "title": "0.16.0 Breaking Changes", - "url": "https://github.com/hapijs/hapi/issues/673" - }, - { - "id": 11889554, - "labels": ["bug", "support"], - "number": 656, - "title": "Support for virtual hosts", - "url": "https://github.com/hapijs/hapi/issues/656" - }, - { - "id": 11491876, - "labels": ["feature"], - "number": 605, - "title": "Plugin-level cache setup", - "url": "https://github.com/hapijs/hapi/issues/605" - }, - { - "id": 11397040, - "labels": ["feature"], - "number": 578, - "title": "Graceful Restart", - "url": "https://github.com/hapijs/hapi/issues/578" - } - ], - "number": 24, - "url": "https://github.com/hapijs/hapi/milestone/24", - "version": "0.16.0" - }, - { - "date": "2013-03-29T20:46:00Z", - "id": 299322, - "issues": [ - { - "id": 12617208, - "labels": ["bug"], - "number": 723, - "title": "Global autoValue cookie overwrites other cookies", - "url": "https://github.com/hapijs/hapi/issues/723" - }, - { - "id": 12617033, - "labels": ["bug"], - "number": 722, - "title": "Proxy shares cookies across different sessions", - "url": "https://github.com/hapijs/hapi/issues/722" - } - ], - "number": 31, - "url": "https://github.com/hapijs/hapi/milestone/31", - "version": "0.15.8" - }, - { - "date": "2013-03-28T02:15:43Z", - "id": 298149, - "issues": [ - { - "id": 12543039, - "labels": [], - "number": 717, - "title": "Auto cookie value", - "url": "https://github.com/hapijs/hapi/pull/717" - } - ], - "number": 30, - "url": "https://github.com/hapijs/hapi/milestone/30", - "version": "0.15.7" - }, - { - "date": "2013-03-19T05:16:24Z", - "id": 291137, - "issues": [ - { - "id": 12156548, - "labels": [], - "number": 687, - "title": "Proxy is double encoding gziped responses", - "url": "https://github.com/hapijs/hapi/issues/687" - } - ], - "number": 29, - "url": "https://github.com/hapijs/hapi/milestone/29", - "version": "0.15.6" - }, - { - "date": "2013-03-15T23:15:47Z", - "id": 289574, - "issues": [ - { - "id": 12085246, - "labels": [], - "number": 682, - "title": "Bypass node http bug in writeHead", - "url": "https://github.com/hapijs/hapi/pull/682" - }, - { - "id": 12083581, - "labels": ["bug"], - "number": 681, - "title": "CORS headers need to override proxy CORS headers", - "url": "https://github.com/hapijs/hapi/issues/681" - }, - { - "id": 12075076, - "labels": ["non issue"], - "number": 679, - "title": "Add test for proxy with passThrough and server caching", - "url": "https://github.com/hapijs/hapi/issues/679" - }, - { - "id": 12074622, - "labels": [], - "number": 678, - "title": "Updating tutorials and adding a plugins list doc", - "url": "https://github.com/hapijs/hapi/pull/678" - }, - { - "id": 12030722, - "labels": [], - "number": 674, - "title": "Adding missing branch tests", - "url": "https://github.com/hapijs/hapi/pull/674" - } - ], - "number": 28, - "url": "https://github.com/hapijs/hapi/milestone/28", - "version": "0.15.4" - }, - { - "date": "2013-03-15T07:41:16Z", - "id": 289031, - "issues": [ - { - "id": 12052793, - "labels": [], - "number": 677, - "title": "Fix ext() with function array bug", - "url": "https://github.com/hapijs/hapi/pull/677" - } - ], - "number": 27, - "url": "https://github.com/hapijs/hapi/milestone/27", - "version": "0.15.3" - }, - { - "date": "2013-03-14T05:16:42Z", - "id": 287419, - "issues": [ - { - "id": 11999714, - "labels": ["feature"], - "number": 672, - "title": "Emit 'internalError' on 500 responses", - "url": "https://github.com/hapijs/hapi/issues/672" - }, - { - "id": 11999707, - "labels": ["feature"], - "number": 671, - "title": "Emit 'internalError' on 500 responses", - "url": "https://github.com/hapijs/hapi/issues/671" - }, - { - "id": 11999635, - "labels": [], - "number": 670, - "title": "internalError event", - "url": "https://github.com/hapijs/hapi/pull/670" - }, - { - "id": 11992474, - "labels": [], - "number": 669, - "title": "Optimize prerequisites and protect", - "url": "https://github.com/hapijs/hapi/pull/669" - }, - { - "id": 11992462, - "labels": ["feature"], - "number": 668, - "title": "Run prerequisites inside a domain", - "url": "https://github.com/hapijs/hapi/issues/668" - }, - { - "id": 11989535, - "labels": ["feature"], - "number": 667, - "title": "Ensure all assertions inside request handling result in 500 response", - "url": "https://github.com/hapijs/hapi/issues/667" - }, - { - "id": 11989497, - "labels": ["feature"], - "number": 666, - "title": "Asserts throw instead of exit", - "url": "https://github.com/hapijs/hapi/issues/666" - }, - { - "id": 11987039, - "labels": ["breaking changes"], - "number": 665, - "title": "0.15.2 Breaking Changes", - "url": "https://github.com/hapijs/hapi/issues/665" - }, - { - "id": 11770720, - "labels": ["feature"], - "number": 644, - "title": "Log but ignore cookie errors", - "url": "https://github.com/hapijs/hapi/issues/644" - } - ], - "number": 25, - "url": "https://github.com/hapijs/hapi/milestone/25", - "version": "0.15.2" - }, - { - "date": "2013-03-13T06:13:06Z", - "id": 284695, - "issues": [ - { - "id": 11961231, - "labels": [], - "number": 663, - "title": "Full plugin deps", - "url": "https://github.com/hapijs/hapi/pull/663" - }, - { - "id": 11957496, - "labels": [], - "number": 662, - "title": "Plugin deps", - "url": "https://github.com/hapijs/hapi/pull/662" - }, - { - "id": 11944990, - "labels": [], - "number": 659, - "title": "handler interface api styles", - "url": "https://github.com/hapijs/hapi/pull/659" - }, - { - "id": 11892690, - "labels": ["feature"], - "number": 657, - "title": "Route prerequisite detection for route handler request object.", - "url": "https://github.com/hapijs/hapi/issues/657" - }, - { - "id": 11863568, - "labels": [], - "number": 653, - "title": "Add request defensive protection", - "url": "https://github.com/hapijs/hapi/pull/653" - }, - { - "id": 11860425, - "labels": ["feature"], - "number": 652, - "title": "Plugin dependencies", - "url": "https://github.com/hapijs/hapi/issues/652" - }, - { - "id": 11854961, - "labels": ["documentation"], - "number": 650, - "title": "Document plugin API", - "url": "https://github.com/hapijs/hapi/issues/650" - }, - { - "id": 11849858, - "labels": [], - "number": 649, - "title": "Migrate to lab (from mocha)", - "url": "https://github.com/hapijs/hapi/pull/649" - }, - { - "id": 11796135, - "labels": ["feature", "test"], - "number": 646, - "title": "Replace mocha with lab", - "url": "https://github.com/hapijs/hapi/issues/646" - }, - { - "id": 11723205, - "labels": [], - "number": 642, - "title": "Adding hawk response auth header", - "url": "https://github.com/hapijs/hapi/pull/642" - }, - { - "id": 11718430, - "labels": [], - "number": 641, - "title": "Question: generic internal error handler", - "url": "https://github.com/hapijs/hapi/issues/641" - }, - { - "id": 11609162, - "labels": ["feature"], - "number": 623, - "title": "Hawk 0.10 server response authentication", - "url": "https://github.com/hapijs/hapi/issues/623" - }, - { - "id": 9811425, - "labels": ["feature"], - "number": 361, - "title": "Node domains", - "url": "https://github.com/hapijs/hapi/issues/361" - } - ], - "number": 23, - "url": "https://github.com/hapijs/hapi/milestone/23", - "version": "0.15.1" - }, - { - "date": "2013-03-10T17:27:19Z", - "id": 276291, - "issues": [ - { - "id": 11651412, - "labels": [], - "number": 638, - "title": "Event tags", - "url": "https://github.com/hapijs/hapi/pull/638" - }, - { - "id": 11648641, - "labels": ["feature", "support"], - "number": 637, - "title": "Parsing the request form-encoded payload using qs", - "url": "https://github.com/hapijs/hapi/issues/637" - }, - { - "id": 11645713, - "labels": ["feature"], - "number": 636, - "title": "Add event tags object in callback", - "url": "https://github.com/hapijs/hapi/issues/636" - }, - { - "id": 11645418, - "labels": [], - "number": 635, - "title": "Cleanup", - "url": "https://github.com/hapijs/hapi/pull/635" - }, - { - "id": 11644070, - "labels": [], - "number": 634, - "title": "Domains", - "url": "https://github.com/hapijs/hapi/pull/634" - }, - { - "id": 11640098, - "labels": [], - "number": 633, - "title": "pack interface cleanup", - "url": "https://github.com/hapijs/hapi/pull/633" - }, - { - "id": 11640082, - "labels": [], - "number": 632, - "title": "Adding example of cookie failAction", - "url": "https://github.com/hapijs/hapi/pull/632" - }, - { - "id": 11633228, - "labels": [], - "number": 630, - "title": "shot 0.1.0, Buffer response type, encoding", - "url": "https://github.com/hapijs/hapi/pull/630" - }, - { - "id": 11632843, - "labels": ["feature"], - "number": 628, - "title": "Support text/* encoding for incoming payloads", - "url": "https://github.com/hapijs/hapi/issues/628" - }, - { - "id": 11632828, - "labels": ["bug"], - "number": 627, - "title": "Allow unknown content-type when not parsing", - "url": "https://github.com/hapijs/hapi/issues/627" - }, - { - "id": 11632770, - "labels": ["feature"], - "number": 626, - "title": "shot 0.1.0", - "url": "https://github.com/hapijs/hapi/issues/626" - }, - { - "id": 11632744, - "labels": ["feature"], - "number": 625, - "title": "Buffer response type", - "url": "https://github.com/hapijs/hapi/issues/625" - }, - { - "id": 11600107, - "labels": ["documentation"], - "number": 622, - "title": "Document response object header method", - "url": "https://github.com/hapijs/hapi/issues/622" - }, - { - "id": 11596102, - "labels": ["feature"], - "number": 621, - "title": "Setting charset to UTF-8", - "url": "https://github.com/hapijs/hapi/issues/621" - }, - { - "id": 11587790, - "labels": ["feature"], - "number": 619, - "title": "hawk 0.10, payload cleanup, text/* parse support", - "url": "https://github.com/hapijs/hapi/pull/619" - }, - { - "id": 11587784, - "labels": ["feature"], - "number": 618, - "title": "Support parsing text/* mime types", - "url": "https://github.com/hapijs/hapi/issues/618" - }, - { - "id": 11573997, - "labels": [], - "number": 617, - "title": "Upgrade to Hawk 0.9.0", - "url": "https://github.com/hapijs/hapi/pull/617" - }, - { - "id": 11573032, - "labels": [], - "number": 616, - "title": "Cookie Max-Age is in seconds, not msec", - "url": "https://github.com/hapijs/hapi/pull/616" - }, - { - "id": 11572423, - "labels": [], - "number": 615, - "title": "Using path.join where possible", - "url": "https://github.com/hapijs/hapi/pull/615" - }, - { - "id": 11568653, - "labels": ["bug"], - "number": 614, - "title": "Cookie MaxAge set incorrectly", - "url": "https://github.com/hapijs/hapi/issues/614" - }, - { - "id": 11567096, - "labels": [], - "number": 613, - "title": "Fix proxy mapUri query bug, allow pack.api to specify key", - "url": "https://github.com/hapijs/hapi/pull/613" - }, - { - "id": 11560132, - "labels": [], - "number": 612, - "title": "Remove monitor", - "url": "https://github.com/hapijs/hapi/pull/612" - }, - { - "id": 11554936, - "labels": [], - "number": 611, - "title": "Adding vhost tests", - "url": "https://github.com/hapijs/hapi/pull/611" - }, - { - "id": 11551794, - "labels": [], - "number": 610, - "title": "Cleaning up test and stream response", - "url": "https://github.com/hapijs/hapi/pull/610" - }, - { - "id": 11534694, - "labels": [], - "number": 609, - "title": "Virtual hosts support", - "url": "https://github.com/hapijs/hapi/pull/609" - }, - { - "id": 11534140, - "labels": ["test"], - "number": 608, - "title": "Random test fails: Response Stream returns a deflated stream reply without a content-length header when accept-encoding is deflate", - "url": "https://github.com/hapijs/hapi/issues/608" - }, - { - "id": 11523270, - "labels": [], - "number": 607, - "title": "Adding basic crumb CSRF information to reference guide ", - "url": "https://github.com/hapijs/hapi/pull/607" - }, - { - "id": 11513175, - "labels": [], - "number": 606, - "title": "Handling request and response errors", - "url": "https://github.com/hapijs/hapi/pull/606" - }, - { - "id": 11491866, - "labels": ["feature"], - "number": 604, - "title": "Move good log utils back in, turn rest (monitor) to plugin", - "url": "https://github.com/hapijs/hapi/issues/604" - }, - { - "id": 11491814, - "labels": ["feature"], - "number": 603, - "title": "Move batch to a plugin", - "url": "https://github.com/hapijs/hapi/issues/603" - }, - { - "id": 11491760, - "labels": [], - "number": 602, - "title": "Relative paths", - "url": "https://github.com/hapijs/hapi/pull/602" - }, - { - "id": 11490642, - "labels": ["feature"], - "number": 601, - "title": "Use Path.join where possible", - "url": "https://github.com/hapijs/hapi/issues/601" - }, - { - "id": 11486006, - "labels": ["breaking changes"], - "number": 600, - "title": "0.15.0 Breaking Changes", - "url": "https://github.com/hapijs/hapi/issues/600" - }, - { - "id": 11483571, - "labels": ["bug", "documentation"], - "number": 599, - "title": "proxy with mapUri, example", - "url": "https://github.com/hapijs/hapi/issues/599" - }, - { - "id": 11479019, - "labels": ["feature"], - "number": 598, - "title": "Make resources references in a given plugin relative to that plugin", - "url": "https://github.com/hapijs/hapi/issues/598" - }, - { - "id": 11477288, - "labels": [], - "number": 597, - "title": "Create grunt template for scaffolding hapi plugin development", - "url": "https://github.com/hapijs/hapi/issues/597" - }, - { - "id": 11475115, - "labels": [], - "number": 596, - "title": "Adding request payload section", - "url": "https://github.com/hapijs/hapi/pull/596" - }, - { - "id": 11473553, - "labels": [], - "number": 595, - "title": "Fixing gzip stream test to use simple stream", - "url": "https://github.com/hapijs/hapi/pull/595" - }, - { - "id": 11467348, - "labels": [], - "number": 594, - "title": "Adding deflate support to stream response", - "url": "https://github.com/hapijs/hapi/pull/594" - }, - { - "id": 11462976, - "labels": [], - "number": 593, - "title": "Adding graceful shutdown from QUIT signal event", - "url": "https://github.com/hapijs/hapi/pull/593" - }, - { - "id": 11446630, - "labels": [], - "number": 592, - "title": "refactor router", - "url": "https://github.com/hapijs/hapi/pull/592" - }, - { - "id": 11442426, - "labels": [], - "number": 591, - "title": "Fixing test to be isolated", - "url": "https://github.com/hapijs/hapi/pull/591" - }, - { - "id": 11434541, - "labels": ["bug"], - "number": 589, - "title": "Sending a gzipped proxy response now works correctly", - "url": "https://github.com/hapijs/hapi/pull/589" - }, - { - "id": 11426358, - "labels": ["feature"], - "number": 588, - "title": "Support an array of directories in order of priority", - "url": "https://github.com/hapijs/hapi/issues/588" - }, - { - "id": 11418660, - "labels": [], - "number": 585, - "title": "Server.stop now stops gracefully", - "url": "https://github.com/hapijs/hapi/pull/585" - }, - { - "id": 11397197, - "labels": ["feature"], - "number": 583, - "title": "CSRF support", - "url": "https://github.com/hapijs/hapi/issues/583" - }, - { - "id": 11397112, - "labels": ["feature"], - "number": 581, - "title": "Enhanced HTML Form support for webdevs", - "url": "https://github.com/hapijs/hapi/issues/581" - }, - { - "id": 11397090, - "labels": ["feature"], - "number": 580, - "title": "Command line / ENV param to send Boom.Internal calls to (stdout || stderr)", - "url": "https://github.com/hapijs/hapi/issues/580" - }, - { - "id": 11397064, - "labels": ["feature"], - "number": 579, - "title": "Proper Request.flash support in Blammo/yar", - "url": "https://github.com/hapijs/hapi/issues/579" - }, - { - "id": 11229442, - "labels": ["documentation"], - "number": 566, - "title": "Better documentation for Cookie and Session handling.", - "url": "https://github.com/hapijs/hapi/issues/566" - }, - { - "id": 11222468, - "labels": ["feature"], - "number": 565, - "title": "Graceful shutdown", - "url": "https://github.com/hapijs/hapi/issues/565" - }, - { - "id": 11004338, - "labels": ["documentation"], - "number": 534, - "title": "Document multipart/form-data", - "url": "https://github.com/hapijs/hapi/issues/534" - }, - { - "id": 10762845, - "labels": ["documentation"], - "number": 495, - "title": "Document new 'try' auth mode", - "url": "https://github.com/hapijs/hapi/issues/495" - }, - { - "id": 10513914, - "labels": ["feature"], - "number": 437, - "title": "Support passport.js", - "url": "https://github.com/hapijs/hapi/issues/437" - } - ], - "number": 22, - "url": "https://github.com/hapijs/hapi/milestone/22", - "version": "0.15.0" - }, - { - "date": "2013-02-26T18:10:43Z", - "id": 271778, - "issues": [ - { - "id": 11420026, - "labels": [], - "number": 587, - "title": "Composer config options", - "url": "https://github.com/hapijs/hapi/pull/587" - }, - { - "id": 11390008, - "labels": [], - "number": 577, - "title": "Beef up file etag tests", - "url": "https://github.com/hapijs/hapi/pull/577" - }, - { - "id": 11270882, - "labels": ["bug"], - "number": 569, - "title": "Minor: Is 'description' still a valid attribute of the 'config' object when doing route configuration?", - "url": "https://github.com/hapijs/hapi/issues/569" - }, - { - "id": 11214424, - "labels": ["bug"], - "number": 562, - "title": "getRouteSourceFilePath doesn't work correctly on windows", - "url": "https://github.com/hapijs/hapi/issues/562" - }, - { - "id": 11016173, - "labels": ["feature"], - "number": 538, - "title": "Show a color error on config snippet when invalid", - "url": "https://github.com/hapijs/hapi/issues/538" - }, - { - "id": 11004577, - "labels": ["feature"], - "number": 536, - "title": "Support other encoding methods (deflate)", - "url": "https://github.com/hapijs/hapi/issues/536" - }, - { - "id": 9907684, - "labels": ["feature"], - "number": 378, - "title": "Hawk bewit support as a new authentication scheme", - "url": "https://github.com/hapijs/hapi/issues/378" - } - ], - "number": 21, - "url": "https://github.com/hapijs/hapi/milestone/21", - "version": "0.14.2" - }, - { - "date": "2013-02-20T21:59:12Z", - "id": 259099, - "issues": [ - { - "id": 11216800, - "labels": [], - "number": 563, - "title": "Using memory instead of redis for test", - "url": "https://github.com/hapijs/hapi/pull/563" - }, - { - "id": 11213907, - "labels": [], - "number": 561, - "title": "Composer", - "url": "https://github.com/hapijs/hapi/pull/561" - }, - { - "id": 11164697, - "labels": ["feature"], - "number": 554, - "title": "Support node server socket timeout override", - "url": "https://github.com/hapijs/hapi/issues/554" - }, - { - "id": 11162871, - "labels": [], - "number": 553, - "title": "Pack server event and socket timeout override", - "url": "https://github.com/hapijs/hapi/pull/553" - }, - { - "id": 11115188, - "labels": ["documentation"], - "number": 549, - "title": "\"Hello static server\" sample does not working on windows ", - "url": "https://github.com/hapijs/hapi/issues/549" - }, - { - "id": 11044908, - "labels": ["bug"], - "number": 543, - "title": "Fix scoping bug when using multiple helper prerequisites", - "url": "https://github.com/hapijs/hapi/pull/543" - }, - { - "id": 11015884, - "labels": [], - "number": 537, - "title": "Update docs/Reference.md", - "url": "https://github.com/hapijs/hapi/pull/537" - }, - { - "id": 11004550, - "labels": ["feature"], - "number": 535, - "title": "Optimize Generic gzip to reduce memory copies of payload.join()", - "url": "https://github.com/hapijs/hapi/issues/535" - }, - { - "id": 11004282, - "labels": [], - "number": 533, - "title": "Add make for generating complexity report", - "url": "https://github.com/hapijs/hapi/issues/533" - }, - { - "id": 10983041, - "labels": ["feature"], - "number": 532, - "title": "Validate route config schema", - "url": "https://github.com/hapijs/hapi/issues/532" - }, - { - "id": 10982908, - "labels": [], - "number": 531, - "title": "JSONP", - "url": "https://github.com/hapijs/hapi/pull/531" - }, - { - "id": 10967966, - "labels": ["documentation"], - "number": 529, - "title": "favicon example", - "url": "https://github.com/hapijs/hapi/issues/529" - }, - { - "id": 10963613, - "labels": ["feature"], - "number": 527, - "title": "Support Buffer response", - "url": "https://github.com/hapijs/hapi/issues/527" - }, - { - "id": 10886272, - "labels": [], - "number": 523, - "title": "Set CORS origin header to incoming request origin if allowed", - "url": "https://github.com/hapijs/hapi/pull/523" - }, - { - "id": 10880177, - "labels": [], - "number": 522, - "title": "rename helmet to tv", - "url": "https://github.com/hapijs/hapi/pull/522" - }, - { - "id": 10858782, - "labels": ["test"], - "number": 519, - "title": "Add coverage for 304 response logic", - "url": "https://github.com/hapijs/hapi/issues/519" - }, - { - "id": 10818434, - "labels": ["feature"], - "number": 516, - "title": "Auth scheme request extension interface", - "url": "https://github.com/hapijs/hapi/issues/516" - }, - { - "id": 10815415, - "labels": ["feature"], - "number": 515, - "title": "Option to automatically clear invalid cookies", - "url": "https://github.com/hapijs/hapi/issues/515" - }, - { - "id": 10814003, - "labels": ["bug"], - "number": 514, - "title": "Not found (404) handler method is case sensitive", - "url": "https://github.com/hapijs/hapi/issues/514" - }, - { - "id": 10813559, - "labels": ["feature"], - "number": 513, - "title": "Add server.api and request.api for storing application-specific state", - "url": "https://github.com/hapijs/hapi/issues/513" - }, - { - "id": 10812437, - "labels": [], - "number": 512, - "title": "Direct use of Boom (0.3.0)", - "url": "https://github.com/hapijs/hapi/pull/512" - }, - { - "id": 10771861, - "labels": ["bug"], - "number": 507, - "title": "Fix incorrect use of applyToDefaults in server constructor", - "url": "https://github.com/hapijs/hapi/issues/507" - }, - { - "id": 10771826, - "labels": ["feature"], - "number": 506, - "title": "Add route.config.plugins for plugin-specific config", - "url": "https://github.com/hapijs/hapi/issues/506" - }, - { - "id": 10771804, - "labels": ["feature"], - "number": 505, - "title": "Allow Location header with custom URI schemes", - "url": "https://github.com/hapijs/hapi/issues/505" - }, - { - "id": 10771770, - "labels": ["feature"], - "number": 504, - "title": "Refactor responses to make it easier to create external responses or manipulate", - "url": "https://github.com/hapijs/hapi/issues/504" - }, - { - "id": 10771719, - "labels": ["feature"], - "number": 503, - "title": "Expose request private properties", - "url": "https://github.com/hapijs/hapi/issues/503" - }, - { - "id": 10771678, - "labels": ["feature"], - "number": 502, - "title": "Remove server config format options", - "url": "https://github.com/hapijs/hapi/issues/502" - }, - { - "id": 10771660, - "labels": [], - "number": 501, - "title": "Response refactor, bug fixes", - "url": "https://github.com/hapijs/hapi/pull/501" - }, - { - "id": 10771487, - "labels": ["bug"], - "number": 500, - "title": "Cookie parsing fails if encoding set to 'none'", - "url": "https://github.com/hapijs/hapi/issues/500" - }, - { - "id": 10770317, - "labels": ["bug", "test"], - "number": 499, - "title": "Random test fails: Server Timeout doesn't return an error when server is responding when the timeout occurs", - "url": "https://github.com/hapijs/hapi/issues/499" - }, - { - "id": 10769009, - "labels": [], - "number": 498, - "title": "Adding code coverage support using blanket", - "url": "https://github.com/hapijs/hapi/pull/498" - }, - { - "id": 10768879, - "labels": ["documentation"], - "number": 497, - "title": "Document policy regarding undocumented features", - "url": "https://github.com/hapijs/hapi/issues/497" - }, - { - "id": 10768732, - "labels": ["feature"], - "number": 496, - "title": "Distributable cache for files", - "url": "https://github.com/hapijs/hapi/pull/496" - }, - { - "id": 10748617, - "labels": [], - "number": 494, - "title": "fix typo from issue/491", - "url": "https://github.com/hapijs/hapi/pull/494" - }, - { - "id": 10746995, - "labels": [], - "number": 493, - "title": "Fixing test that would fail periodically", - "url": "https://github.com/hapijs/hapi/pull/493" - }, - { - "id": 10735494, - "labels": ["bug", "documentation"], - "number": 491, - "title": "Example code is wrong", - "url": "https://github.com/hapijs/hapi/issues/491" - }, - { - "id": 10682356, - "labels": ["non issue"], - "number": 489, - "title": "Setting ttl(0) on cookie with definition with non zero ttl", - "url": "https://github.com/hapijs/hapi/issues/489" - }, - { - "id": 10681479, - "labels": ["bug"], - "number": 488, - "title": "Allow setting empty cookie", - "url": "https://github.com/hapijs/hapi/issues/488" - }, - { - "id": 10669275, - "labels": ["bug", "test"], - "number": 486, - "title": "Fails sometimes: Payload stream mode doesn't set the request payload when streaming data in and the connection is interrupted", - "url": "https://github.com/hapijs/hapi/issues/486" - }, - { - "id": 10668953, - "labels": ["feature"], - "number": 485, - "title": "Add authentication 'try' mode", - "url": "https://github.com/hapijs/hapi/issues/485" - }, - { - "id": 10664100, - "labels": ["feature"], - "number": 483, - "title": "CORS support for multiple origins", - "url": "https://github.com/hapijs/hapi/issues/483" - }, - { - "id": 10662096, - "labels": ["feature"], - "number": 482, - "title": "Parse cookies before authentication", - "url": "https://github.com/hapijs/hapi/pull/482" - }, - { - "id": 10659959, - "labels": [], - "number": 481, - "title": "Adding log tag filtering information to readme", - "url": "https://github.com/hapijs/hapi/pull/481" - }, - { - "id": 10658820, - "labels": [], - "number": 480, - "title": "Cleaning up this. use", - "url": "https://github.com/hapijs/hapi/pull/480" - }, - { - "id": 10641472, - "labels": ["non issue"], - "number": 479, - "title": "Review every 'this' to make sure it points to the right context", - "url": "https://github.com/hapijs/hapi/issues/479" - }, - { - "id": 10641416, - "labels": [], - "number": 478, - "title": "Cleanup ext options and error handling", - "url": "https://github.com/hapijs/hapi/pull/478" - }, - { - "id": 10641407, - "labels": ["feature"], - "number": 477, - "title": "Return error if received from onRequest", - "url": "https://github.com/hapijs/hapi/issues/477" - }, - { - "id": 10640578, - "labels": ["breaking changes"], - "number": 476, - "title": "0.14.0 Breaking Changes", - "url": "https://github.com/hapijs/hapi/issues/476" - }, - { - "id": 10634425, - "labels": [], - "number": 475, - "title": "Simplify path regex", - "url": "https://github.com/hapijs/hapi/pull/475" - }, - { - "id": 10612724, - "labels": ["documentation"], - "number": 459, - "title": "Add socket.io example", - "url": "https://github.com/hapijs/hapi/issues/459" - }, - { - "id": 10593638, - "labels": ["feature"], - "number": 451, - "title": "JSONP support", - "url": "https://github.com/hapijs/hapi/issues/451" - }, - { - "id": 10577100, - "labels": ["feature"], - "number": 441, - "title": "Configuration strict mode checking for any unknown config options", - "url": "https://github.com/hapijs/hapi/issues/441" - }, - { - "id": 10547272, - "labels": [], - "number": 438, - "title": "Adding support for payload authentication validation", - "url": "https://github.com/hapijs/hapi/pull/438" - }, - { - "id": 10408675, - "labels": ["feature"], - "number": 428, - "title": "Session authentication strategy", - "url": "https://github.com/hapijs/hapi/issues/428" - }, - { - "id": 10133592, - "labels": ["test"], - "number": 403, - "title": "Try out some new coverage tools", - "url": "https://github.com/hapijs/hapi/issues/403" - }, - { - "id": 9907691, - "labels": ["feature"], - "number": 379, - "title": "Hawk payload validation settings", - "url": "https://github.com/hapijs/hapi/issues/379" - }, - { - "id": 8381503, - "labels": ["documentation"], - "number": 243, - "title": "Rework Readme into tutorial and reference guides", - "url": "https://github.com/hapijs/hapi/issues/243" - } - ], - "number": 18, - "url": "https://github.com/hapijs/hapi/milestone/18", - "version": "0.14.0" - }, - { - "date": "2013-02-05T00:42:58Z", - "id": 259928, - "issues": [ - { - "id": 10633004, - "labels": [], - "number": 474, - "title": "0.13.2", - "url": "https://github.com/hapijs/hapi/pull/474" - }, - { - "id": 10632604, - "labels": [], - "number": 472, - "title": "Fix matching of wildcard path param with trailing /", - "url": "https://github.com/hapijs/hapi/pull/472" - }, - { - "id": 10632583, - "labels": ["bug"], - "number": 471, - "title": "/{p*} doesn't match /path/", - "url": "https://github.com/hapijs/hapi/issues/471" - }, - { - "id": 10624610, - "labels": [], - "number": 466, - "title": "Directory listing at top level folders now link correctly", - "url": "https://github.com/hapijs/hapi/pull/466" - }, - { - "id": 10621136, - "labels": ["bug"], - "number": 465, - "title": "directory list using the directory handler produces wrong URLs", - "url": "https://github.com/hapijs/hapi/issues/465" - }, - { - "id": 10620959, - "labels": ["bug"], - "number": 464, - "title": "index option for directory module doesn't work on subdirs", - "url": "https://github.com/hapijs/hapi/issues/464" - }, - { - "id": 10619747, - "labels": [], - "number": 463, - "title": "Typo: req.session.used -> req.session.user", - "url": "https://github.com/hapijs/hapi/pull/463" - } - ], - "number": 20, - "url": "https://github.com/hapijs/hapi/milestone/20", - "version": "0.13.2" - }, - { - "date": "2013-02-04T21:30:43Z", - "id": 259797, - "issues": [ - { - "id": 10626477, - "labels": ["feature", "breaking changes"], - "number": 467, - "title": "0.13.1 Change pack package.json version location", - "url": "https://github.com/hapijs/hapi/issues/467" - } - ], - "number": 19, - "url": "https://github.com/hapijs/hapi/milestone/19", - "version": "0.13.1" - }, - { - "date": "2013-02-04T17:43:39Z", - "id": 246812, - "issues": [ - { - "id": 10598072, - "labels": ["feature"], - "number": 457, - "title": "Remove server creation log messages", - "url": "https://github.com/hapijs/hapi/issues/457" - }, - { - "id": 10598026, - "labels": ["feature"], - "number": 456, - "title": "Bypass cache logic when not using cache around handler", - "url": "https://github.com/hapijs/hapi/issues/456" - }, - { - "id": 10597980, - "labels": ["bug"], - "number": 455, - "title": "Reintroduce the removed request.reply.close() method", - "url": "https://github.com/hapijs/hapi/issues/455" - }, - { - "id": 10597955, - "labels": ["feature"], - "number": 454, - "title": "Support wildcard HTTP method routing", - "url": "https://github.com/hapijs/hapi/issues/454" - }, - { - "id": 10597837, - "labels": ["test"], - "number": 452, - "title": "Test server format.error config option", - "url": "https://github.com/hapijs/hapi/issues/452" - }, - { - "id": 10593088, - "labels": [], - "number": 450, - "title": "typo", - "url": "https://github.com/hapijs/hapi/pull/450" - }, - { - "id": 10583216, - "labels": [], - "number": 448, - "title": "Fixed typos", - "url": "https://github.com/hapijs/hapi/pull/448" - }, - { - "id": 10582001, - "labels": ["feature"], - "number": 447, - "title": "Replace config.ext with Server.ext()", - "url": "https://github.com/hapijs/hapi/issues/447" - }, - { - "id": 10577329, - "labels": ["feature"], - "number": 446, - "title": "Replace setNotFound with wildcard method support", - "url": "https://github.com/hapijs/hapi/issues/446" - }, - { - "id": 10577323, - "labels": ["feature"], - "number": 445, - "title": "Streamline Server API", - "url": "https://github.com/hapijs/hapi/issues/445" - }, - { - "id": 10577315, - "labels": ["feature"], - "number": 444, - "title": "Server Packs", - "url": "https://github.com/hapijs/hapi/issues/444" - }, - { - "id": 10577303, - "labels": ["documentation"], - "number": 443, - "title": "Add a link to find breaking changes by release", - "url": "https://github.com/hapijs/hapi/issues/443" - }, - { - "id": 10576584, - "labels": ["breaking changes"], - "number": 440, - "title": "0.13.0 Breaking Changes", - "url": "https://github.com/hapijs/hapi/issues/440" - } - ], - "number": 17, - "url": "https://github.com/hapijs/hapi/milestone/17", - "version": "0.13.0" - }, - { - "date": "2013-02-02T21:45:38Z", - "id": 240363, - "issues": [ - { - "id": 10577219, - "labels": ["breaking changes"], - "number": 442, - "title": "0.12.0 Breaking Changes", - "url": "https://github.com/hapijs/hapi/issues/442" - }, - { - "id": 10509088, - "labels": [], - "number": 435, - "title": "Prerequisite helper shortcut interface", - "url": "https://github.com/hapijs/hapi/pull/435" - }, - { - "id": 10504945, - "labels": [], - "number": 434, - "title": "Bound handler to request, bump to 0.12.0", - "url": "https://github.com/hapijs/hapi/pull/434" - }, - { - "id": 10469960, - "labels": ["bug"], - "number": 431, - "title": "Response validation fails on response errors", - "url": "https://github.com/hapijs/hapi/issues/431" - }, - { - "id": 10407521, - "labels": [], - "number": 427, - "title": "CORS cleanup and Monitor defaults", - "url": "https://github.com/hapijs/hapi/pull/427" - }, - { - "id": 10407494, - "labels": ["feature", "bug"], - "number": 426, - "title": "CORS off by default, using catch-all instead of synthetic route", - "url": "https://github.com/hapijs/hapi/issues/426" - }, - { - "id": 10406658, - "labels": [], - "number": 425, - "title": "Route sorting rewrite", - "url": "https://github.com/hapijs/hapi/pull/425" - }, - { - "id": 10368914, - "labels": ["feature"], - "number": 422, - "title": "Allow raw (direct) responses to bail if header fails", - "url": "https://github.com/hapijs/hapi/issues/422" - }, - { - "id": 10368808, - "labels": ["bug"], - "number": 421, - "title": "onPostRoute called before response is sent", - "url": "https://github.com/hapijs/hapi/issues/421" - }, - { - "id": 10336265, - "labels": [], - "number": 420, - "title": "Goodies", - "url": "https://github.com/hapijs/hapi/pull/420" - }, - { - "id": 10321965, - "labels": [], - "number": 416, - "title": "Auth cleanup", - "url": "https://github.com/hapijs/hapi/pull/416" - }, - { - "id": 10221236, - "labels": ["non issue"], - "number": 409, - "title": "Error: listen EADDRNOTAVAIL when starting hapi server with foreman", - "url": "https://github.com/hapijs/hapi/issues/409" - }, - { - "id": 10202709, - "labels": [], - "number": 407, - "title": "Adding support for basic auth password hashing", - "url": "https://github.com/hapijs/hapi/pull/407" - }, - { - "id": 10183708, - "labels": [], - "number": 406, - "title": "Update auth dependencies", - "url": "https://github.com/hapijs/hapi/pull/406" - }, - { - "id": 10173996, - "labels": ["feature"], - "number": 405, - "title": "For basic auth run password through hashPassword function first", - "url": "https://github.com/hapijs/hapi/issues/405" - }, - { - "id": 10132740, - "labels": [], - "number": 402, - "title": "Use fixed time password comparison", - "url": "https://github.com/hapijs/hapi/pull/402" - }, - { - "id": 10112190, - "labels": [], - "number": 401, - "title": "Enable more than one jade template file to be used in hapi.", - "url": "https://github.com/hapijs/hapi/pull/401" - }, - { - "id": 10044635, - "labels": ["feature"], - "number": 397, - "title": "Arrange routes in descending order of specificity", - "url": "https://github.com/hapijs/hapi/issues/397" - }, - { - "id": 10043273, - "labels": ["feature", "documentation"], - "number": 396, - "title": "Accept cache mode 'client+server' as 'server+client'", - "url": "https://github.com/hapijs/hapi/issues/396" - }, - { - "id": 9949170, - "labels": ["documentation"], - "number": 387, - "title": "Create contributing guidelines", - "url": "https://github.com/hapijs/hapi/issues/387" - }, - { - "id": 9907623, - "labels": ["documentation"], - "number": 377, - "title": "Document and add examples for the authentication interface", - "url": "https://github.com/hapijs/hapi/issues/377" - }, - { - "id": 9907311, - "labels": ["test"], - "number": 376, - "title": "Switch all tests that listen on a port to use automatically allocated port", - "url": "https://github.com/hapijs/hapi/issues/376" - }, - { - "id": 9871188, - "labels": ["test"], - "number": 374, - "title": "Test Content-Length vs. actual payload size mismatch behaviour", - "url": "https://github.com/hapijs/hapi/issues/374" - }, - { - "id": 9852723, - "labels": ["feature"], - "number": 373, - "title": "Add support for private cache-control flag", - "url": "https://github.com/hapijs/hapi/issues/373" - }, - { - "id": 9827077, - "labels": ["non issue"], - "number": 367, - "title": "Potential headers duplication when mixing sources due to case", - "url": "https://github.com/hapijs/hapi/issues/367" - }, - { - "id": 9817959, - "labels": [], - "number": 363, - "title": "Adding server + client timeout feature", - "url": "https://github.com/hapijs/hapi/pull/363" - }, - { - "id": 9810548, - "labels": ["feature"], - "number": 360, - "title": "Timeout server response if taking too long with 503 response", - "url": "https://github.com/hapijs/hapi/issues/360" - }, - { - "id": 9810375, - "labels": ["feature"], - "number": 359, - "title": "Timeout client connections taking too long and return 408", - "url": "https://github.com/hapijs/hapi/issues/359" - }, - { - "id": 9790755, - "labels": ["feature"], - "number": 358, - "title": "Support other view engines, including multiple engines per server", - "url": "https://github.com/hapijs/hapi/issues/358" - }, - { - "id": 9790716, - "labels": ["feature"], - "number": 357, - "title": "Make Views cache usage configurable (per Manager)", - "url": "https://github.com/hapijs/hapi/issues/357" - }, - { - "id": 9756419, - "labels": ["feature"], - "number": 347, - "title": "Signed and encrypted state support", - "url": "https://github.com/hapijs/hapi/issues/347" - }, - { - "id": 9226652, - "labels": ["bug"], - "number": 325, - "title": "Console output appears even when not configured", - "url": "https://github.com/hapijs/hapi/issues/325" - }, - { - "id": 8993987, - "labels": ["feature"], - "number": 307, - "title": "Support multiple authentication strategies per route with preferences", - "url": "https://github.com/hapijs/hapi/issues/307" - }, - { - "id": 8380854, - "labels": ["test"], - "number": 239, - "title": "Test regular and stream payload transmission while request closes", - "url": "https://github.com/hapijs/hapi/issues/239" - } - ], - "number": 14, - "url": "https://github.com/hapijs/hapi/milestone/14", - "version": "0.12.0" - }, - { - "date": "2013-01-12T06:45:16Z", - "id": 241941, - "issues": [ - { - "id": 9832971, - "labels": ["feature"], - "number": 370, - "title": "Support 'Access-Control-Allow-Credentials'", - "url": "https://github.com/hapijs/hapi/issues/370" - } - ], - "number": 16, - "url": "https://github.com/hapijs/hapi/milestone/16", - "version": "0.11.2" - }, - { - "date": "2013-01-10T03:08:40Z", - "id": 241853, - "issues": [ - { - "id": 9827017, - "labels": ["bug"], - "number": 366, - "title": "Stream response not calling Headers.cors, location, or cache", - "url": "https://github.com/hapijs/hapi/issues/366" - }, - { - "id": 9827006, - "labels": ["bug"], - "number": 365, - "title": "Stream response always passing proxy headers through", - "url": "https://github.com/hapijs/hapi/issues/365" - }, - { - "id": 9826996, - "labels": ["bug"], - "number": 364, - "title": "Proxy handler doesn't set default value for passThrough settings", - "url": "https://github.com/hapijs/hapi/issues/364" - } - ], - "number": 15, - "url": "https://github.com/hapijs/hapi/milestone/15", - "version": "0.11.1" - }, - { - "date": "2013-01-08T16:28:19Z", - "id": 231334, - "issues": [ - { - "id": 9022795, - "labels": ["feature"], - "number": 310, - "title": "Cross-platform monitor", - "url": "https://github.com/hapijs/hapi/issues/310" - }, - { - "id": 8460774, - "labels": ["feature"], - "number": 251, - "title": "Support Content-Disposition header in File response", - "url": "https://github.com/hapijs/hapi/issues/251" - }, - { - "id": 8381270, - "labels": ["feature"], - "number": 242, - "title": "Cookies support", - "url": "https://github.com/hapijs/hapi/issues/242" - }, - { - "id": 8336789, - "labels": ["feature"], - "number": 235, - "title": "View response", - "url": "https://github.com/hapijs/hapi/issues/235" - }, - { - "id": 7486591, - "labels": ["feature"], - "number": 169, - "title": "Add response validation settings", - "url": "https://github.com/hapijs/hapi/issues/169" - } - ], - "number": 13, - "url": "https://github.com/hapijs/hapi/milestone/13", - "version": "0.11.0" - }, - { - "date": "2012-12-18T00:28:34Z", - "id": 215150, - "issues": [ - { - "id": 9344212, - "labels": [], + { + "date": "2026-05-06T10:37:52Z", + "id": 15814860, + "issues": [ + { + "id": 4390656018, + "labels": ["dependency"], + "number": 4577, + "title": "chore: bump dependencies", + "url": "https://github.com/hapijs/hapi/pull/4577" + } + ], + "number": 330, + "url": "https://github.com/hapijs/hapi/milestone/330", + "version": "21.4.9" + }, + { + "date": "2026-04-02T08:29:10Z", + "id": 15394908, + "issues": [ + { + "id": 4192791984, + "labels": ["dependency"], + "number": 4568, + "title": "chore: bump deps", + "url": "https://github.com/hapijs/hapi/pull/4568" + } + ], "number": 329, - "title": "Add redirection response", - "url": "https://github.com/hapijs/hapi/pull/329" - }, - { - "id": 9337006, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/329", + "version": "21.4.8" + }, + { + "date": "2026-03-06T15:06:47Z", + "id": 15044404, + "issues": [ + { + "id": 3596269821, + "labels": ["bug"], + "number": 4559, + "title": "fix: 🐛 request.url getter fails when using IPv6 and HTTP2 [#4560]", + "url": "https://github.com/hapijs/hapi/pull/4559" + } + ], + "number": 328, + "url": "https://github.com/hapijs/hapi/milestone/328", + "version": "21.4.7" + }, + { + "date": "2026-02-19T15:27:38Z", + "id": 14867959, + "issues": [ + { + "id": 3963188372, + "labels": ["bug"], + "number": 4564, + "title": "Fix invalid hostname parsing for ipv6 formatted host header", + "url": "https://github.com/hapijs/hapi/pull/4564" + } + ], + "number": 327, + "url": "https://github.com/hapijs/hapi/milestone/327", + "version": "21.4.6" + }, + { + "date": "2026-02-18T09:16:35Z", + "id": 14851983, + "issues": [ + { + "id": 3935299430, + "labels": ["types"], + "number": 4562, + "title": "fix: auth typings and reduced type ambiguity", + "url": "https://github.com/hapijs/hapi/pull/4562" + }, + { + "id": 3699293418, + "labels": ["bug", "types"], + "number": 4561, + "title": "Possible typing regression between v21.3.12 and v21.4.4", + "url": "https://github.com/hapijs/hapi/issues/4561" + } + ], "number": 326, - "title": "Adding support for hapi-log", - "url": "https://github.com/hapijs/hapi/pull/326" - }, - { - "id": 9109322, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/326", + "version": "21.4.5" + }, + { + "date": "2025-11-06T09:44:01Z", + "id": 14063008, + "issues": [ + { + "id": 3594936305, + "labels": ["dependency"], + "number": 4557, + "title": "chore: update deps", + "url": "https://github.com/hapijs/hapi/pull/4557" + } + ], + "number": 325, + "url": "https://github.com/hapijs/hapi/milestone/325", + "version": "21.4.4" + }, + { + "date": "2025-08-13T22:38:47Z", + "id": 13483109, + "issues": [ + { + "id": 3320078866, + "labels": ["dependency"], + "number": 4553, + "title": "chore: bump dependencies", + "url": "https://github.com/hapijs/hapi/pull/4553" + }, + { + "id": 3307877922, + "labels": ["bug"], + "number": 4552, + "title": "Handle stream.destroy() called before stream end", + "url": "https://github.com/hapijs/hapi/pull/4552" + } + ], + "number": 324, + "url": "https://github.com/hapijs/hapi/milestone/324", + "version": "21.4.3" + }, + { + "date": "2025-08-04T21:03:50Z", + "id": 13425858, + "issues": [ + { + "id": 3278416153, + "labels": ["types"], + "number": 4550, + "title": "Correct type for state object", + "url": "https://github.com/hapijs/hapi/pull/4550" + } + ], + "number": 323, + "url": "https://github.com/hapijs/hapi/milestone/323", + "version": "21.4.2" + }, + { + "date": "2025-08-04T21:03:47Z", + "id": 13425358, + "issues": [], "number": 322, - "title": "Docs handler refactor", - "url": "https://github.com/hapijs/hapi/pull/322" - }, - { - "id": 9098340, - "labels": ["feature", "bug"], + "url": "https://github.com/hapijs/hapi/milestone/322", + "version": "21.4.1" + }, + { + "date": "2025-03-01T09:19:22Z", + "id": 12416956, + "issues": [ + { + "id": 2888275535, + "labels": ["feature"], + "number": 4545, + "title": "feat: add support for cookie partition", + "url": "https://github.com/hapijs/hapi/pull/4545" + }, + { + "id": 2833249091, + "labels": ["documentation"], + "number": 4543, + "title": "Update event tags in documentation", + "url": "https://github.com/hapijs/hapi/pull/4543" + }, + { + "id": 2830659617, + "labels": ["documentation"], + "number": 4542, + "title": "`request` `closed` `error` tags", + "url": "https://github.com/hapijs/hapi/issues/4542" + }, + { + "id": 2798202691, + "labels": ["types"], + "number": 4540, + "title": "fix: 🐛 less ambigious plugin types", + "url": "https://github.com/hapijs/hapi/pull/4540" + }, + { + "id": 2797454967, + "labels": ["types"], + "number": 4538, + "title": "fix: 🐛 typings around server.decorate", + "url": "https://github.com/hapijs/hapi/pull/4538" + }, + { + "id": 2458516313, + "labels": ["types"], + "number": 4523, + "title": "fix: 🐛 accurate auth typings", + "url": "https://github.com/hapijs/hapi/pull/4523" + }, + { + "id": 2385170427, + "labels": ["types"], + "number": 4515, + "title": "fix: 🐛 allow typed server methods access cache methods", + "url": "https://github.com/hapijs/hapi/pull/4515" + } + ], + "number": 321, + "url": "https://github.com/hapijs/hapi/milestone/321", + "version": "21.4.0" + }, + { + "date": "2024-10-24T22:12:20Z", + "id": 11793186, + "issues": [ + { + "id": 2612646913, + "labels": ["dependency"], + "number": 4533, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/hapi/pull/4533" + } + ], + "number": 320, + "url": "https://github.com/hapijs/hapi/milestone/320", + "version": "21.3.12" + }, + { + "date": "2024-10-24T10:20:18Z", + "id": 11789672, + "issues": [ + { + "id": 2611116175, + "labels": ["bug", "dependency"], + "number": 4532, + "title": "chore: bump all modules to their latest compatible version", + "url": "https://github.com/hapijs/hapi/pull/4532" + }, + { + "id": 2598115584, + "labels": ["bug"], + "number": 4531, + "title": "Asserts (and probably other Bounce.isSystem) loose stack trace", + "url": "https://github.com/hapijs/hapi/issues/4531" + }, + { + "id": 2563857067, + "labels": ["bug"], + "number": 4530, + "title": "Don't destroy incoming requests during the stopping phase", + "url": "https://github.com/hapijs/hapi/pull/4530" + }, + { + "id": 2188202189, + "labels": ["bug"], + "number": 4488, + "title": "Improve expect 100-continue handling", + "url": "https://github.com/hapijs/hapi/pull/4488" + } + ], "number": 319, - "title": "Doc configuration should let you set the auth mode", - "url": "https://github.com/hapijs/hapi/issues/319" - }, - { - "id": 9063207, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/319", + "version": "21.3.11" + }, + { + "date": "2024-10-24T10:00:52Z", + "id": 11174648, + "issues": [ + { + "id": 2342567423, + "labels": [], + "number": 4507, + "title": "fix: 🐛 route payload options missing types", + "url": "https://github.com/hapijs/hapi/pull/4507" + }, + { + "id": 2250307089, + "labels": ["bug"], + "number": 4501, + "title": "Missing maxParts type in route.d.ts", + "url": "https://github.com/hapijs/hapi/issues/4501" + } + ], + "number": 318, + "url": "https://github.com/hapijs/hapi/milestone/318", + "version": "21.3.10" + }, + { + "date": "2024-04-09T14:38:28Z", + "id": 10795745, + "issues": [ + { + "id": 2233039569, + "labels": ["types"], + "number": 4496, + "title": "types: allow server.match to receive lowercased methods", + "url": "https://github.com/hapijs/hapi/pull/4496" + } + ], + "number": 317, + "url": "https://github.com/hapijs/hapi/milestone/317", + "version": "21.3.9" + }, + { + "date": "2024-04-03T20:56:12Z", + "id": 10771382, + "issues": [ + { + "id": 2199898301, + "labels": ["types"], + "number": 4493, + "title": "Cleanup http methods typings", + "url": "https://github.com/hapijs/hapi/pull/4493" + }, + { + "id": 2198705655, + "labels": ["bug", "types"], + "number": 4492, + "title": "HTTP_METHODS_PARTIAL_LOWERCASE is missing `head`", + "url": "https://github.com/hapijs/hapi/issues/4492" + } + ], + "number": 316, + "url": "https://github.com/hapijs/hapi/milestone/316", + "version": "21.3.8" + }, + { + "date": "2024-03-19T21:21:08Z", + "id": 10706545, + "issues": [ + { + "id": 2191895162, + "labels": ["types"], + "number": 4490, + "title": "Make content encoder and options explicitly typed and extensible", + "url": "https://github.com/hapijs/hapi/pull/4490" + } + ], + "number": 315, + "url": "https://github.com/hapijs/hapi/milestone/315", + "version": "21.3.7" + }, + { + "date": "2024-03-13T19:06:46Z", + "id": 10679232, + "issues": [ + { + "id": 2184245566, + "labels": ["types"], + "number": 4486, + "title": "Revert \"fix(types): enhance reusability of pres\"", + "url": "https://github.com/hapijs/hapi/pull/4486" + } + ], "number": 314, - "title": "Multiple auth schemes", - "url": "https://github.com/hapijs/hapi/pull/314" - }, - { - "id": 8996009, - "labels": ["test"], + "url": "https://github.com/hapijs/hapi/milestone/314", + "version": "21.3.6" + }, + { + "date": "2024-03-13T14:43:47Z", + "id": 10679003, + "issues": [ + { + "id": 1981224067, + "labels": ["bug"], + "number": 4471, + "title": "Don't return error response when clientError is a pipelined HPE_INVALID_METHOD", + "url": "https://github.com/hapijs/hapi/pull/4471" + }, + { + "id": 1287142739, + "labels": ["support"], + "number": 4363, + "title": "Server crash: Error: Unknown error", + "url": "https://github.com/hapijs/hapi/issues/4363" + } + ], + "number": 313, + "url": "https://github.com/hapijs/hapi/milestone/313", + "version": "21.3.5" + }, + { + "date": "2024-03-13T14:12:21Z", + "id": 10678791, + "issues": [ + { + "id": 1966382755, + "labels": ["types"], + "number": 4470, + "title": "fix(types): enhance reusability of pres", + "url": "https://github.com/hapijs/hapi/pull/4470" + } + ], + "number": 312, + "url": "https://github.com/hapijs/hapi/milestone/312", + "version": "21.3.4" + }, + { + "date": "2024-01-29T15:50:24Z", + "id": 10481936, + "issues": [ + { + "id": 1994584710, + "labels": ["test"], + "number": 4473, + "title": "Node 20 fixes", + "url": "https://github.com/hapijs/hapi/pull/4473" + }, + { + "id": 1910456280, + "labels": ["types"], + "number": 4460, + "title": "FIX add compressed to ResponseObject type", + "url": "https://github.com/hapijs/hapi/pull/4460" + }, + { + "id": 1666532340, + "labels": ["bug"], + "number": 4446, + "title": "failAction loses stacktrace context", + "url": "https://github.com/hapijs/hapi/pull/4446" + } + ], + "number": 311, + "url": "https://github.com/hapijs/hapi/milestone/311", + "version": "21.3.3" + }, + { + "date": "2023-04-24T22:12:03Z", + "id": 9322811, + "issues": [ + { + "id": 1682086035, + "labels": ["types"], + "number": 4449, + "title": "chore: use new statehood types", + "url": "https://github.com/hapijs/hapi/pull/4449" + } + ], + "number": 310, + "url": "https://github.com/hapijs/hapi/milestone/310", + "version": "21.3.2" + }, + { + "date": "2023-04-24T22:12:01Z", + "id": 9178630, + "issues": [ + { + "id": 1532907327, + "labels": ["types"], + "number": 4413, + "title": "Pass ServerApplicationState to server extensions", + "url": "https://github.com/hapijs/hapi/pull/4413" + } + ], "number": 309, - "title": "Bring monitor/* to 100% test coverage", - "url": "https://github.com/hapijs/hapi/issues/309" - }, - { - "id": 8977589, - "labels": ["non issue"], + "url": "https://github.com/hapijs/hapi/milestone/309", + "version": "21.3.1" + }, + { + "date": "2023-02-14T15:13:19Z", + "id": 9043375, + "issues": [ + { + "id": 1584340103, + "labels": ["feature", "breaking changes", "security"], + "number": 4425, + "title": "Add option to limit maxParts in multipart payloads", + "url": "https://github.com/hapijs/hapi/issues/4425" + } + ], + "number": 308, + "url": "https://github.com/hapijs/hapi/milestone/308", + "version": "21.3.0" + }, + { + "date": "2023-02-11T21:16:25Z", + "id": 9033331, + "issues": [ + { + "id": 1551780353, + "labels": ["dependency"], + "number": 4417, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/hapi/pull/4417" + } + ], + "number": 306, + "url": "https://github.com/hapijs/hapi/milestone/306", + "version": "21.2.2" + }, + { + "date": "2023-01-30T03:18:04Z", + "id": 8979568, + "issues": [ + { + "id": 1556845431, + "labels": ["documentation"], + "number": 4422, + "title": "Update README.md", + "url": "https://github.com/hapijs/hapi/pull/4422" + }, + { + "id": 1556836877, + "labels": ["documentation"], + "number": 4421, + "title": "adding colin to tsc members", + "url": "https://github.com/hapijs/hapi/pull/4421" + }, + { + "id": 1535371119, + "labels": ["bug", "types"], + "number": 4415, + "title": "Correct the ResponseObject type", + "url": "https://github.com/hapijs/hapi/pull/4415" + } + ], + "number": 304, + "url": "https://github.com/hapijs/hapi/milestone/304", + "version": "21.2.1" + }, + { + "date": "2023-01-30T03:17:24Z", + "id": 8852308, + "issues": [ + { + "id": 1501387887, + "labels": ["types"], + "number": 4407, + "title": "Add type for preflight status code in cors options", + "url": "https://github.com/hapijs/hapi/pull/4407" + }, + { + "id": 1471495026, + "labels": ["types"], + "number": 4402, + "title": "Updates to TypeScript definitions", + "url": "https://github.com/hapijs/hapi/pull/4402" + }, + { + "id": 1471419675, + "labels": ["types"], + "number": 4401, + "title": "update types for xss", + "url": "https://github.com/hapijs/hapi/pull/4401" + }, + { + "id": 1456697860, + "labels": ["feature", "types"], + "number": 4400, + "title": "Enhance plugin types", + "url": "https://github.com/hapijs/hapi/pull/4400" + } + ], "number": 303, - "title": "Handle %-encoding of '/' in route and request paths", - "url": "https://github.com/hapijs/hapi/issues/303" - }, - { - "id": 8977567, - "labels": ["bug"], + "url": "https://github.com/hapijs/hapi/milestone/303", + "version": "21.2.0" + }, + { + "date": "2022-12-01T03:25:20Z", + "id": 8625485, + "issues": [ + { + "id": 1455871530, + "labels": ["types"], + "number": 4398, + "title": "Move TypeScript definition from DT (as-is)", + "url": "https://github.com/hapijs/hapi/pull/4398" + }, + { + "id": 1451850183, + "labels": ["bug"], + "number": 4396, + "title": "Fix handling of no remoteAddress available", + "url": "https://github.com/hapijs/hapi/pull/4396" + }, + { + "id": 1446874565, + "labels": ["bug"], + "number": 4391, + "title": "Fix node version requirement", + "url": "https://github.com/hapijs/hapi/pull/4391" + } + ], "number": 302, - "title": "Consider object key name sizes in calculating object memory usage in memory cache", - "url": "https://github.com/hapijs/hapi/issues/302" - }, - { - "id": 8622590, - "labels": ["feature"], - "number": 270, - "title": "Multiple auth scheme support", - "url": "https://github.com/hapijs/hapi/issues/270" - }, - { - "id": 8460857, - "labels": [], - "number": 253, - "title": "Support redirection responses", - "url": "https://github.com/hapijs/hapi/issues/253" - } - ], - "number": 9, - "url": "https://github.com/hapijs/hapi/milestone/9", - "version": "0.10.0" - }, - { - "date": "2012-12-07T16:44:55Z", - "id": 225156, - "issues": [ - { - "id": 9081212, - "labels": [], - "number": 317, - "title": "Test helpers, mongo auth test", - "url": "https://github.com/hapijs/hapi/pull/317" - }, - { - "id": 9057571, - "labels": [], - "number": 312, - "title": "Misc cleanup", - "url": "https://github.com/hapijs/hapi/pull/312" - } - ], - "number": 12, - "url": "https://github.com/hapijs/hapi/milestone/12", - "version": "0.9.3" - }, - { - "date": "2012-12-04T17:09:06Z", - "id": 216264, - "issues": [ - { - "id": 8989869, - "labels": [], - "number": 305, - "title": "Hidden files can now optionally be served", - "url": "https://github.com/hapijs/hapi/pull/305" - }, - { - "id": 8969880, - "labels": [], - "number": 301, - "title": "Merge, payload tests", - "url": "https://github.com/hapijs/hapi/pull/301" - }, - { - "id": 8967377, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/302", + "version": "21.1.0" + }, + { + "date": "2022-11-07T15:13:45Z", + "id": 7886228, + "issues": [ + { + "id": 1438447866, + "labels": ["breaking changes", "release notes"], + "number": 4386, + "title": "21.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/4386" + }, + { + "id": 1301204143, + "labels": ["feature", "test", "breaking changes"], + "number": 4366, + "title": "Allow matching prereleases when validating plugin version requirements", + "url": "https://github.com/hapijs/hapi/pull/4366" + }, + { + "id": 1277363215, + "labels": ["breaking changes", "dependency"], + "number": 4361, + "title": "Upgrade production deps for hapi v21 and node v18", + "url": "https://github.com/hapijs/hapi/pull/4361" + }, + { + "id": 1268905186, + "labels": ["feature", "breaking changes"], + "number": 4357, + "title": "Change default host to be IPv6-friendly", + "url": "https://github.com/hapijs/hapi/pull/4357" + }, + { + "id": 1219680097, + "labels": ["feature", "breaking changes", "security"], + "number": 4352, + "title": "Change XSS header default to '0'", + "url": "https://github.com/hapijs/hapi/pull/4352" + }, + { + "id": 1215337588, + "labels": ["feature", "breaking changes"], + "number": 4351, + "title": "Change default CORS preflight status code w/ configuration", + "url": "https://github.com/hapijs/hapi/pull/4351" + }, + { + "id": 1215276830, + "labels": ["feature"], + "number": 4350, + "title": "Make default error available in validation failAction", + "url": "https://github.com/hapijs/hapi/pull/4350" + }, + { + "id": 1213946258, + "labels": ["breaking changes"], + "number": 4349, + "title": "Enforce that response streams are always Stream.Readable", + "url": "https://github.com/hapijs/hapi/pull/4349" + }, + { + "id": 1213909239, + "labels": ["breaking changes"], + "number": 4348, + "title": "Ignore return value from generateResponse() prepare method", + "url": "https://github.com/hapijs/hapi/pull/4348" + }, + { + "id": 1206660180, + "labels": ["breaking changes"], + "number": 4346, + "title": "Drop node v12 support", + "url": "https://github.com/hapijs/hapi/pull/4346" + }, + { + "id": 1004965611, + "labels": ["feature"], + "number": 4288, + "title": "Add support for event loop utilization based load limit", + "url": "https://github.com/hapijs/hapi/issues/4288" + }, + { + "id": 949684926, + "labels": ["feature", "breaking changes"], + "number": 4271, + "title": "Remove JSONP support", + "url": "https://github.com/hapijs/hapi/pull/4271" + }, + { + "id": 805826506, + "labels": ["feature"], + "number": 4229, + "title": "failAction: detailedError to log, defaultError to response", + "url": "https://github.com/hapijs/hapi/issues/4229" + } + ], + "number": 300, + "url": "https://github.com/hapijs/hapi/milestone/300", + "version": "21.0.0" + }, + { + "date": "2023-02-14T15:13:24Z", + "id": 9043374, + "issues": [], + "number": 307, + "url": "https://github.com/hapijs/hapi/milestone/307", + "version": "20.3.0" + }, + { + "date": "2022-04-20T02:52:44Z", + "id": 7235812, + "issues": [ + { + "id": 1209079957, + "labels": ["security", "dependency"], + "number": 4347, + "title": "Update hapijs/statehood to 7.0.4 from 7.0.3 ", + "url": "https://github.com/hapijs/hapi/issues/4347" + }, + { + "id": 1203207298, + "labels": ["bug", "dependency"], + "number": 4345, + "title": "Fix memory leaks from teamwork long standing notes", + "url": "https://github.com/hapijs/hapi/pull/4345" + }, + { + "id": 1048207023, + "labels": ["test"], + "number": 4314, + "title": "Fix tests for node v17", + "url": "https://github.com/hapijs/hapi/pull/4314" + }, + { + "id": 1022417306, + "labels": ["documentation"], + "number": 4302, + "title": "Soft deprecate returning a new object from generateResponse()", + "url": "https://github.com/hapijs/hapi/pull/4302" + } + ], "number": 299, - "title": "Fix issue with case-insensitive route conflic", - "url": "https://github.com/hapijs/hapi/pull/299" - }, - { - "id": 8966903, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/299", + "version": "20.2.2" + }, + { + "date": "2021-10-09T01:03:48Z", + "id": 7173879, + "issues": [ + { + "id": 1016426381, + "labels": ["bug"], + "number": 4295, + "title": "Revised request / inject abort handling", + "url": "https://github.com/hapijs/hapi/pull/4295" + }, + { + "id": 1015593391, + "labels": ["bug"], + "number": 4294, + "title": "Server crashes if a requested aborted during sending a response. ", + "url": "https://github.com/hapijs/hapi/issues/4294" + }, + { + "id": 1004968924, + "labels": ["documentation"], + "number": 4289, + "title": "Update server load default options on documentation", + "url": "https://github.com/hapijs/hapi/pull/4289" + }, + { + "id": 1003686490, + "labels": ["bug"], + "number": 4286, + "title": "Initialize server settings defaults", + "url": "https://github.com/hapijs/hapi/pull/4286" + } + ], "number": 298, - "title": "Prevent use of encoded non-reserved characters in path", - "url": "https://github.com/hapijs/hapi/pull/298" - }, - { - "id": 8963982, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/298", + "version": "20.2.1" + }, + { + "date": "2021-09-21T07:06:30Z", + "id": 6896845, + "issues": [ + { + "id": 994210993, + "labels": ["test"], + "number": 4283, + "title": "Fix tests for node@16 error format change", + "url": "https://github.com/hapijs/hapi/pull/4283" + }, + { + "id": 988569219, + "labels": ["bug", "documentation"], + "number": 4281, + "title": "Fix handling of auth scheme/strategy realms", + "url": "https://github.com/hapijs/hapi/pull/4281" + }, + { + "id": 974330764, + "labels": ["feature"], + "number": 4274, + "title": "Add optional payload authentication skip on credentials injection", + "url": "https://github.com/hapijs/hapi/pull/4274" + } + ], "number": 297, - "title": "Refactor request path normalization", - "url": "https://github.com/hapijs/hapi/pull/297" - }, - { - "id": 8963822, - "labels": ["bug"], + "url": "https://github.com/hapijs/hapi/milestone/297", + "version": "20.2.0" + }, + { + "date": "2021-06-28T22:01:30Z", + "id": 6842765, + "issues": [ + { + "id": 927880587, + "labels": ["bug"], + "number": 4264, + "title": "Fix req end during response transmission", + "url": "https://github.com/hapijs/hapi/pull/4264" + }, + { + "id": 924650596, + "labels": ["bug"], + "number": 4262, + "title": "Streaming uploads cause truncated responses in node 16", + "url": "https://github.com/hapijs/hapi/issues/4262" + } + ], "number": 296, - "title": "Fix route path fingerprint when using cases-insensitive paths", - "url": "https://github.com/hapijs/hapi/issues/296" - }, - { - "id": 8959691, - "labels": ["bug"], + "url": "https://github.com/hapijs/hapi/milestone/296", + "version": "20.1.5" + }, + { + "date": "2021-06-10T13:17:41Z", + "id": 6744255, + "issues": [ + { + "id": 911747544, + "labels": ["bug"], + "number": 4257, + "title": "Add response lifecycle tracking and checks", + "url": "https://github.com/hapijs/hapi/pull/4257" + }, + { + "id": 911692576, + "labels": ["bug"], + "number": 4256, + "title": "inert + hapi may be leaking file descriptors", + "url": "https://github.com/hapijs/hapi/issues/4256" + } + ], "number": 295, - "title": "Prevent directory from showing or serving hidden files (configurable)", - "url": "https://github.com/hapijs/hapi/issues/295" - }, - { - "id": 8926906, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/295", + "version": "20.1.4" + }, + { + "date": "2021-05-10T14:52:40Z", + "id": 6573706, + "issues": [ + { + "id": 881287608, + "labels": ["dependency"], + "number": 4250, + "title": "Update to mimos v6", + "url": "https://github.com/hapijs/hapi/pull/4250" + } + ], "number": 294, - "title": "Refactor responses, auth, payload", - "url": "https://github.com/hapijs/hapi/pull/294" - }, - { - "id": 8926876, - "labels": ["bug"], + "url": "https://github.com/hapijs/hapi/milestone/294", + "version": "20.1.3" + }, + { + "date": "2021-03-20T22:46:32Z", + "id": 6549943, + "issues": [ + { + "id": 836880460, + "labels": ["test"], + "number": 4239, + "title": "Fix abort test timing to be consistent from node v12 through v16", + "url": "https://github.com/hapijs/hapi/pull/4239" + }, + { + "id": 808623493, + "labels": ["dependency"], + "number": 4231, + "title": "Update dependencies version range", + "url": "https://github.com/hapijs/hapi/pull/4231" + }, + { + "id": 792463127, + "labels": ["feature"], + "number": 4225, + "title": "Future-proof hapi for node v16, rely on res close rather than req", + "url": "https://github.com/hapijs/hapi/pull/4225" + }, + { + "id": 607041996, + "labels": ["feature", "test"], + "number": 4095, + "title": "Rely on stream.destroy() whenever available", + "url": "https://github.com/hapijs/hapi/pull/4095" + } + ], "number": 293, - "title": "Fix multipart parsing", - "url": "https://github.com/hapijs/hapi/issues/293" - }, - { - "id": 8847533, - "labels": ["documentation"], + "url": "https://github.com/hapijs/hapi/milestone/293", + "version": "20.1.2" + }, + { + "date": "2021-03-16T02:11:37Z", + "id": 6351878, + "issues": [ + { + "id": 820738659, + "labels": ["bug"], + "number": 4234, + "title": "Allow for res to have already closed during transmission", + "url": "https://github.com/hapijs/hapi/pull/4234" + } + ], + "number": 291, + "url": "https://github.com/hapijs/hapi/milestone/291", + "version": "20.1.1" + }, + { + "date": "2021-01-25T23:56:24Z", + "id": 6140724, + "issues": [ + { + "id": 788709584, + "labels": ["test"], + "number": 4221, + "title": "Fix tests for citgm", + "url": "https://github.com/hapijs/hapi/pull/4221" + }, + { + "id": 786420823, + "labels": ["feature"], + "number": 4219, + "title": "Add policy event", + "url": "https://github.com/hapijs/hapi/pull/4219" + }, + { + "id": 757033446, + "labels": ["feature"], + "number": 4203, + "title": "Add closing event", + "url": "https://github.com/hapijs/hapi/pull/4203" + }, + { + "id": 746996061, + "labels": ["feature"], + "number": 4194, + "title": "Add a 'closing' event", + "url": "https://github.com/hapijs/hapi/issues/4194" + }, + { + "id": 637484382, + "labels": ["feature"], + "number": 4104, + "title": "Track cache policies", + "url": "https://github.com/hapijs/hapi/issues/4104" + } + ], "number": 290, - "title": "Improve batch example to include a request", - "url": "https://github.com/hapijs/hapi/issues/290" - }, - { - "id": 8833994, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/290", + "version": "20.1.0" + }, + { + "date": "2020-11-23T20:58:34Z", + "id": 6092827, + "issues": [ + { + "id": 743487288, + "labels": ["bug"], + "number": 4191, + "title": "Preserve original response status on error after write, fix status message", + "url": "https://github.com/hapijs/hapi/pull/4191" + }, + { + "id": 738320654, + "labels": ["bug"], + "number": 4182, + "title": "server.inject does not reflect actual HTTP response in case of stream error", + "url": "https://github.com/hapijs/hapi/issues/4182" + } + ], "number": 289, - "title": "Add a unique request id for each incoming request", - "url": "https://github.com/hapijs/hapi/issues/289" - }, - { - "id": 8820322, - "labels": ["bug"], + "url": "https://github.com/hapijs/hapi/milestone/289", + "version": "20.0.3" + }, + { + "date": "2020-11-11T03:44:29Z", + "id": 5911847, + "issues": [ + { + "id": 710405673, + "labels": ["dependency"], + "number": 4167, + "title": "upgrade to labv24", + "url": "https://github.com/hapijs/hapi/pull/4167" + }, + { + "id": 596304098, + "labels": ["bug"], + "number": 4089, + "title": "[default-scope] Accept default scope as a valid route scope", + "url": "https://github.com/hapijs/hapi/pull/4089" + }, + { + "id": 592597963, + "labels": ["bug"], + "number": 4083, + "title": "Default auth scope not compatible with route auth scope", + "url": "https://github.com/hapijs/hapi/issues/4083" + } + ], + "number": 288, + "url": "https://github.com/hapijs/hapi/milestone/288", + "version": "20.0.2" + }, + { + "date": "2020-09-24T02:24:20Z", + "id": 5864349, + "issues": [ + { + "id": 707328668, + "labels": ["bug"], + "number": 4162, + "title": "Use response instead of request when marshalling", + "url": "https://github.com/hapijs/hapi/pull/4162" + }, + { + "id": 707193771, + "labels": ["bug"], + "number": 4161, + "title": "fix: check if _isPayloadSupported is set", + "url": "https://github.com/hapijs/hapi/pull/4161" + }, + { + "id": 698106080, + "labels": ["dependency"], + "number": 4156, + "title": "update handlebars dependency version", + "url": "https://github.com/hapijs/hapi/pull/4156" + } + ], "number": 287, - "title": "Forbid using %encoded in route path of unreserved characters", - "url": "https://github.com/hapijs/hapi/issues/287" - }, - { - "id": 8646639, - "labels": ["feature"], + "url": "https://github.com/hapijs/hapi/milestone/287", + "version": "20.0.1" + }, + { + "date": "2020-08-11T19:57:02Z", + "id": 5662393, + "issues": [ + { + "id": 676451335, + "labels": ["test"], + "number": 4140, + "title": "update to travis templates", + "url": "https://github.com/hapijs/hapi/pull/4140" + }, + { + "id": 676416952, + "labels": ["dependency"], + "number": 4139, + "title": "update most out of date dependencies", + "url": "https://github.com/hapijs/hapi/pull/4139" + }, + { + "id": 676238578, + "labels": ["breaking changes", "release notes"], + "number": 4138, + "title": "20.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/4138" + }, + { + "id": 673660011, + "labels": ["bug"], + "number": 4134, + "title": "headers: avoid sending null content-type", + "url": "https://github.com/hapijs/hapi/pull/4134" + }, + { + "id": 673580727, + "labels": ["support"], + "number": 4133, + "title": "Content-type header is null when empty response is returned", + "url": "https://github.com/hapijs/hapi/issues/4133" + }, + { + "id": 673067097, + "labels": [], + "number": 4132, + "title": "README needs this change to parse the slogan for site", + "url": "https://github.com/hapijs/hapi/pull/4132" + }, + { + "id": 669487919, + "labels": [], + "number": 4130, + "title": "fixed teamwork version", + "url": "https://github.com/hapijs/hapi/pull/4130" + }, + { + "id": 664810668, + "labels": [], + "number": 4123, + "title": "Removing the route timeout validation", + "url": "https://github.com/hapijs/hapi/pull/4123" + }, + { + "id": 664772019, + "labels": ["support"], + "number": 4122, + "title": "Payload timeout must be shorter than socket timeout", + "url": "https://github.com/hapijs/hapi/issues/4122" + }, + { + "id": 663084957, + "labels": ["feature"], + "number": 4117, + "title": "Implement `isInjected` read-only request property to indicate request…", + "url": "https://github.com/hapijs/hapi/pull/4117" + }, + { + "id": 662285944, + "labels": ["feature"], + "number": 4116, + "title": "Improved injected request detection", + "url": "https://github.com/hapijs/hapi/issues/4116" + }, + { + "id": 658456116, + "labels": ["bug", "dependency"], + "number": 4115, + "title": "Replace joi with validate", + "url": "https://github.com/hapijs/hapi/pull/4115" + }, + { + "id": 655972076, + "labels": ["breaking changes"], + "number": 4113, + "title": "The future of the hapi project", + "url": "https://github.com/hapijs/hapi/issues/4113" + } + ], + "number": 286, + "url": "https://github.com/hapijs/hapi/milestone/286", + "version": "20.0.0" + }, + { + "date": "2020-07-17T19:34:46Z", + "id": 5103598, + "issues": [ + { + "id": 585448329, + "labels": ["feature"], + "number": 4077, + "title": "Decorate response object", + "url": "https://github.com/hapijs/hapi/issues/4077" + }, + { + "id": 581838954, + "labels": ["feature"], + "number": 4073, + "title": "Add new ext onPostResponse", + "url": "https://github.com/hapijs/hapi/pull/4073" + }, + { + "id": 580787811, + "labels": ["bug"], + "number": 4072, + "title": "Response Event For Aborted Requests Has Status Code Of 200", + "url": "https://github.com/hapijs/hapi/issues/4072" + }, + { + "id": 565633437, + "labels": ["feature"], + "number": 4051, + "title": "Expose (likely?) Content-Type on response object", + "url": "https://github.com/hapijs/hapi/issues/4051" + }, + { + "id": 560704390, + "labels": ["feature", "dependency"], + "number": 4041, + "title": "How to access catbox client instances through the framework?", + "url": "https://github.com/hapijs/hapi/issues/4041" + } + ], + "number": 278, + "url": "https://github.com/hapijs/hapi/milestone/278", + "version": "19.2.0" + }, + { + "date": "2020-02-13T19:15:37Z", + "id": 5068413, + "issues": [ + { + "id": 562414219, + "labels": ["dependency"], + "number": 4043, + "title": "Update deps", + "url": "https://github.com/hapijs/hapi/issues/4043" + }, + { + "id": 551956671, + "labels": ["bug"], + "number": 4027, + "title": "Problem with settings global request.payload.multipart to true in Hapi v19", + "url": "https://github.com/hapijs/hapi/issues/4027" + } + ], + "number": 277, + "url": "https://github.com/hapijs/hapi/milestone/277", + "version": "19.1.1" + }, + { + "date": "2020-02-03T21:33:54Z", + "id": 5010095, + "issues": [ + { + "id": 555581366, + "labels": ["feature", "bug", "$"], + "number": 4034, + "title": "request.info.remoteAddress / request.info.remotePort undefined after connection closed (request aborted)", + "url": "https://github.com/hapijs/hapi/issues/4034" + } + ], + "number": 276, + "url": "https://github.com/hapijs/hapi/milestone/276", + "version": "19.1.0" + }, + { + "date": "2020-01-16T10:18:43Z", + "id": 4998942, + "issues": [ + { + "id": 550708113, + "labels": ["dependency"], + "number": 4026, + "title": "Update deps", + "url": "https://github.com/hapijs/hapi/issues/4026" + } + ], + "number": 275, + "url": "https://github.com/hapijs/hapi/milestone/275", + "version": "19.0.5" + }, + { + "date": "2020-01-13T11:42:05Z", + "id": 4997925, + "issues": [ + { + "id": 548875661, + "labels": ["bug"], + "number": 4022, + "title": "Revert #4021", + "url": "https://github.com/hapijs/hapi/issues/4022" + } + ], "number": 274, - "title": "Add Hawk authentication support", - "url": "https://github.com/hapijs/hapi/issues/274" - }, - { - "id": 8622923, - "labels": ["bug"], + "url": "https://github.com/hapijs/hapi/milestone/274", + "version": "19.0.4" + }, + { + "date": "2020-01-13T02:32:28Z", + "id": 4995121, + "issues": [ + { + "id": 548671468, + "labels": ["bug"], + "number": 4021, + "title": "Retain '' result in inject in 204 response", + "url": "https://github.com/hapijs/hapi/issues/4021" + } + ], + "number": 273, + "url": "https://github.com/hapijs/hapi/milestone/273", + "version": "19.0.3" + }, + { + "date": "2020-01-10T17:57:52Z", + "id": 4993606, + "issues": [ + { + "id": 548208534, + "labels": ["bug"], + "number": 4020, + "title": "support JSON.stringify() of request.info", + "url": "https://github.com/hapijs/hapi/pull/4020" + }, + { + "id": 548191803, + "labels": ["bug"], + "number": 4019, + "title": "Feature request: custom toJSON() method for request.info", + "url": "https://github.com/hapijs/hapi/issues/4019" + } + ], "number": 272, - "title": "Normalize %-encoded paths to match incoming requests", - "url": "https://github.com/hapijs/hapi/issues/272" - }, - { - "id": 8622911, - "labels": ["feature"], + "url": "https://github.com/hapijs/hapi/milestone/272", + "version": "19.0.2" + }, + { + "date": "2020-01-10T07:18:36Z", + "id": 4992717, + "issues": [ + { + "id": 547908379, + "labels": ["bug"], + "number": 4018, + "title": "Override request.url in setUrl()", + "url": "https://github.com/hapijs/hapi/issues/4018" + } + ], "number": 271, - "title": "Strict cache mode", - "url": "https://github.com/hapijs/hapi/issues/271" - }, - { - "id": 8461126, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/271", + "version": "19.0.1" + }, + { + "date": "2020-01-10T04:22:19Z", + "id": 3986310, + "issues": [ + { + "id": 547835143, + "labels": ["breaking changes", "release notes"], + "number": 4017, + "title": "19.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/4017" + }, + { + "id": 545883662, + "labels": ["feature", "breaking changes"], + "number": 4015, + "title": "Do not override request.payload if set manually in onRequest", + "url": "https://github.com/hapijs/hapi/issues/4015" + }, + { + "id": 543282951, + "labels": ["non issue", "breaking changes"], + "number": 4013, + "title": "Use private class fields", + "url": "https://github.com/hapijs/hapi/issues/4013" + }, + { + "id": 543067316, + "labels": ["breaking changes", "dependency"], + "number": 4012, + "title": "Drop node 10", + "url": "https://github.com/hapijs/hapi/issues/4012" + }, + { + "id": 542899039, + "labels": ["breaking changes"], + "number": 4011, + "title": "Change scoped plugins name handling", + "url": "https://github.com/hapijs/hapi/issues/4011" + }, + { + "id": 530179476, + "labels": ["feature", "breaking changes"], + "number": 4006, + "title": "server.validator()", + "url": "https://github.com/hapijs/hapi/issues/4006" + }, + { + "id": 523646484, + "labels": ["feature"], + "number": 4002, + "title": "fix(auth): properly populate request.auth on failed auth", + "url": "https://github.com/hapijs/hapi/pull/4002" + }, + { + "id": 523087610, + "labels": ["feature"], + "number": 4000, + "title": "auth scheme artifacts are dropped when mode is not 'try'", + "url": "https://github.com/hapijs/hapi/issues/4000" + }, + { + "id": 521851456, + "labels": ["bug"], + "number": 3996, + "title": "Decorate requests with symbols with apply=true", + "url": "https://github.com/hapijs/hapi/pull/3996" + }, + { + "id": 519291194, + "labels": ["bug"], + "number": 3995, + "title": "Fix ? in fragment part", + "url": "https://github.com/hapijs/hapi/issues/3995" + }, + { + "id": 506349283, + "labels": ["feature"], + "number": 3987, + "title": "Support SameSite=None for cookies", + "url": "https://github.com/hapijs/hapi/issues/3987" + }, + { + "id": 493703905, + "labels": ["breaking changes"], + "number": 3977, + "title": "Remove request queue (options.load.concurrent)", + "url": "https://github.com/hapijs/hapi/issues/3977" + }, + { + "id": 493682963, + "labels": ["breaking changes", "dependency"], + "number": 3976, + "title": "Update hapijs/joi to 16.0.1 from 15.1.1", + "url": "https://github.com/hapijs/hapi/issues/3976" + }, + { + "id": 406010887, + "labels": ["breaking changes"], + "number": 3920, + "title": "Change routes.payload.multipart to false by default", + "url": "https://github.com/hapijs/hapi/issues/3920" + }, + { + "id": 406010848, + "labels": ["breaking changes"], + "number": 3919, + "title": "Change emptyStatusCode to 204 by default", + "url": "https://github.com/hapijs/hapi/issues/3919" + }, + { + "id": 401021205, + "labels": ["breaking changes"], + "number": 3910, + "title": "Drop support for node v8", + "url": "https://github.com/hapijs/hapi/issues/3910" + } + ], "number": 254, - "title": "Cleanup handling of response headers / options", - "url": "https://github.com/hapijs/hapi/issues/254" - }, - { - "id": 8381181, - "labels": ["feature"], - "number": 241, - "title": "Add static files support", - "url": "https://github.com/hapijs/hapi/issues/241" - } - ], - "number": 10, - "url": "https://github.com/hapijs/hapi/milestone/10", - "version": "0.9.2" - }, - { - "date": "2012-11-26T21:06:22Z", - "id": 212534, - "issues": [ - { - "id": 8683439, - "labels": [], - "number": 277, - "title": "Changed matching rule of {param*}, Oz tests", - "url": "https://github.com/hapijs/hapi/pull/277" - }, - { - "id": 8667112, - "labels": [], - "number": 275, - "title": "Prevent basic routes collision", - "url": "https://github.com/hapijs/hapi/pull/275" - }, - { - "id": 8562306, - "labels": [], - "number": 268, - "title": "Tests, extension auth schemes", - "url": "https://github.com/hapijs/hapi/pull/268" - }, - { - "id": 8515879, - "labels": ["documentation"], - "number": 265, - "title": "Document new path option {param*n}", - "url": "https://github.com/hapijs/hapi/issues/265" - }, - { - "id": 8514263, - "labels": ["test"], + "url": "https://github.com/hapijs/hapi/milestone/254", + "version": "19.0.0" + }, + { + "date": "2020-07-05T01:17:51Z", + "id": 5103747, + "issues": [ + { + "id": 650981414, + "labels": ["dependency", "lts", "commercial"], + "number": 4110, + "title": "Update deps", + "url": "https://github.com/hapijs/hapi/issues/4110" + } + ], + "number": 279, + "url": "https://github.com/hapijs/hapi/milestone/279", + "version": "18.4.2" + }, + { + "date": "2020-02-13T20:05:31Z", + "id": 4659692, + "issues": [ + { + "id": 564920093, + "labels": ["dependency"], + "number": 4046, + "title": "Update deps", + "url": "https://github.com/hapijs/hapi/issues/4046" + } + ], + "number": 270, + "url": "https://github.com/hapijs/hapi/milestone/270", + "version": "18.4.1" + }, + { + "date": "2019-09-15T06:08:17Z", + "id": 4574367, + "issues": [ + { + "id": 493682823, + "labels": ["feature"], + "number": 3975, + "title": "Support joi v16", + "url": "https://github.com/hapijs/hapi/issues/3975" + }, + { + "id": 493519002, + "labels": ["bug"], + "number": 3974, + "title": "Handle errors thrown during error response transmit", + "url": "https://github.com/hapijs/hapi/issues/3974" + }, + { + "id": 483096912, + "labels": ["bug"], + "number": 3971, + "title": "Fix some corner case client errors", + "url": "https://github.com/hapijs/hapi/pull/3971" + }, + { + "id": 480393373, + "labels": ["bug"], + "number": 3965, + "title": "Multiple leading slashes in path causes hostname to be parsed incorrectly", + "url": "https://github.com/hapijs/hapi/issues/3965" + }, + { + "id": 478527618, + "labels": ["feature"], + "number": 3964, + "title": "Custom \"content-encoding\" without vary header", + "url": "https://github.com/hapijs/hapi/issues/3964" + }, + { + "id": 456957218, + "labels": ["feature"], + "number": 3956, + "title": "ETags behind gateway that compresses responses", + "url": "https://github.com/hapijs/hapi/issues/3956" + }, + { + "id": 437865210, + "labels": ["feature"], + "number": 3946, + "title": "Add support for Chrome Apps and WebExtensions", + "url": "https://github.com/hapijs/hapi/pull/3946" + } + ], + "number": 269, + "url": "https://github.com/hapijs/hapi/milestone/269", + "version": "18.4.0" + }, + { + "date": "2019-08-15T07:17:27Z", + "id": 4244788, + "issues": [ + { + "id": 481027155, + "labels": ["dependency", "commercial"], + "number": 3968, + "title": "v18.3.2", + "url": "https://github.com/hapijs/hapi/pull/3968" + }, + { + "id": 480907613, + "labels": ["dependency"], + "number": 3967, + "title": "Update deps", + "url": "https://github.com/hapijs/hapi/issues/3967" + } + ], + "number": 267, + "url": "https://github.com/hapijs/hapi/milestone/267", + "version": "18.3.2" + }, + { + "date": "2019-04-19T21:02:42Z", + "id": 4244770, + "issues": [ + { + "id": 432381565, + "labels": ["bug"], + "number": 3943, + "title": "Revise list of hop-by-hop headers", + "url": "https://github.com/hapijs/hapi/issues/3943" + } + ], + "number": 266, + "url": "https://github.com/hapijs/hapi/milestone/266", + "version": "18.3.1" + }, + { + "date": "2019-04-19T20:46:32Z", + "id": 4196302, + "issues": [ + { + "id": 435299676, + "labels": ["feature"], + "number": 3945, + "title": "Support ext method timeout", + "url": "https://github.com/hapijs/hapi/issues/3945" + }, + { + "id": 432446813, + "labels": ["bug"], + "number": 3944, + "title": "server.stop timeout does not apply to onPreStop extension point", + "url": "https://github.com/hapijs/hapi/issues/3944" + } + ], "number": 264, - "title": "Bring all individual file test coverage to over 90%", - "url": "https://github.com/hapijs/hapi/issues/264" - }, - { - "id": 8514246, - "labels": ["test"], - "number": 263, - "title": "Add tests to /test/unit/route.js", - "url": "https://github.com/hapijs/hapi/issues/263" - }, - { - "id": 8514154, - "labels": [], - "number": 262, - "title": "Support /path/{param*} syntax", - "url": "https://github.com/hapijs/hapi/pull/262" - }, - { - "id": 8487843, - "labels": ["feature"], + "url": "https://github.com/hapijs/hapi/milestone/264", + "version": "18.3.0" + }, + { + "date": "2019-04-03T05:07:42Z", + "id": 4029951, + "issues": [ + { + "id": 428483685, + "labels": ["breaking changes", "dependency"], + "number": 3941, + "title": "Change module namespace", + "url": "https://github.com/hapijs/hapi/issues/3941" + } + ], + "number": 259, + "url": "https://github.com/hapijs/hapi/milestone/259", + "version": "18.2.0" + }, + { + "date": "2019-02-04T21:52:56Z", + "id": 4019216, + "issues": [ + { + "id": 406529637, + "labels": ["security", "dependency"], + "number": 3922, + "title": "Update hapijs/bourne to 1.1.1 from 1.0.0", + "url": "https://github.com/hapijs/hapi/issues/3922" + }, + { + "id": 405436446, + "labels": ["feature"], + "number": 3917, + "title": "Expose bourne options", + "url": "https://github.com/hapijs/hapi/issues/3917" + } + ], + "number": 257, + "url": "https://github.com/hapijs/hapi/milestone/257", + "version": "18.1.0" + }, + { + "date": "2019-01-31T20:14:38Z", + "id": 3985320, + "issues": [ + { + "id": 405413941, + "labels": ["security", "dependency"], + "number": 3914, + "title": "Update hapijs/statehood to 6.0.9 from 6.0.8", + "url": "https://github.com/hapijs/hapi/issues/3914" + }, + { + "id": 405413100, + "labels": ["security", "dependency"], + "number": 3912, + "title": "Update hapijs/subtext to 6.0.12 from 6.0.11", + "url": "https://github.com/hapijs/hapi/issues/3912" + }, + { + "id": 400873054, + "labels": ["bug"], + "number": 3909, + "title": "Route validation should throw AssertionError", + "url": "https://github.com/hapijs/hapi/issues/3909" + } + ], + "number": 253, + "url": "https://github.com/hapijs/hapi/milestone/253", + "version": "18.0.1" + }, + { + "date": "2019-01-18T20:13:41Z", + "id": 3799452, + "issues": [ + { + "id": 400861491, + "labels": ["dependency"], + "number": 3908, + "title": "Update hapijs/vise to 3.0.2 from 3.0.1", + "url": "https://github.com/hapijs/hapi/issues/3908" + }, + { + "id": 400861176, + "labels": ["dependency"], + "number": 3907, + "title": "Update hapijs/teamwork to 3.0.3 from 3.0.2", + "url": "https://github.com/hapijs/hapi/issues/3907" + }, + { + "id": 400860098, + "labels": ["dependency"], + "number": 3906, + "title": "Update hapijs/joi to 14.3.1 from 14.0.4", + "url": "https://github.com/hapijs/hapi/issues/3906" + }, + { + "id": 400859400, + "labels": ["dependency"], + "number": 3905, + "title": "Update hapijs/boom to 7.3.0 from 7.2.2", + "url": "https://github.com/hapijs/hapi/issues/3905" + }, + { + "id": 400854809, + "labels": ["dependency"], + "number": 3904, + "title": "Update hapijs/catbox to 10.0.6 from 10.0.5", + "url": "https://github.com/hapijs/hapi/issues/3904" + }, + { + "id": 397933436, + "labels": ["feature", "breaking changes"], + "number": 3901, + "title": "Change request.info.responded to indicate success and add request.info.completed", + "url": "https://github.com/hapijs/hapi/issues/3901" + }, + { + "id": 397741918, + "labels": ["test"], + "number": 3900, + "title": "fix(transmit test): add missing await on team.work", + "url": "https://github.com/hapijs/hapi/pull/3900" + }, + { + "id": 397041052, + "labels": ["bug"], + "number": 3898, + "title": "Error tag incorrectly set (node 11)", + "url": "https://github.com/hapijs/hapi/issues/3898" + }, + { + "id": 396489738, + "labels": ["feature", "breaking changes"], + "number": 3897, + "title": "Return credentials and artifacts from server.auth.test()", + "url": "https://github.com/hapijs/hapi/pull/3897" + }, + { + "id": 385852996, + "labels": ["bug"], + "number": 3891, + "title": "No Content-Type header when returning a stream", + "url": "https://github.com/hapijs/hapi/issues/3891" + }, + { + "id": 383960863, + "labels": ["breaking changes"], + "number": 3887, + "title": "Change inject auth to object and require strategy name", + "url": "https://github.com/hapijs/hapi/issues/3887" + }, + { + "id": 383382588, + "labels": ["bug"], + "number": 3884, + "title": "\"Cannot set headers after they are sent to the client\" after returning h.abandon", + "url": "https://github.com/hapijs/hapi/issues/3884" + }, + { + "id": 382422877, + "labels": ["feature"], + "number": 3882, + "title": "Add validation for cookies (alt impl)", + "url": "https://github.com/hapijs/hapi/pull/3882" + }, + { + "id": 381865396, + "labels": ["bug"], + "number": 3879, + "title": "Set cookie autoValue only when no value received", + "url": "https://github.com/hapijs/hapi/pull/3879" + }, + { + "id": 380990479, + "labels": ["bug", "breaking changes"], + "number": 3878, + "title": "Aborted requests show status code 200 in response event", + "url": "https://github.com/hapijs/hapi/issues/3878" + }, + { + "id": 379977612, + "labels": ["breaking changes"], + "number": 3876, + "title": "Rework cache provisioning apis", + "url": "https://github.com/hapijs/hapi/issues/3876" + }, + { + "id": 379490579, + "labels": ["dependency"], + "number": 3875, + "title": "Update hapijs/bounce to 1.2.3 from 1.2.2", + "url": "https://github.com/hapijs/hapi/issues/3875" + }, + { + "id": 379490535, + "labels": ["dependency"], + "number": 3874, + "title": "Update hapijs/hoek to 6.1.2 from 6.0.2", + "url": "https://github.com/hapijs/hapi/issues/3874" + }, + { + "id": 379490416, + "labels": ["feature", "dependency"], + "number": 3873, + "title": "Update hapijs/podium to 3.2.0 from 3.1.4", + "url": "https://github.com/hapijs/hapi/issues/3873" + }, + { + "id": 377743660, + "labels": ["breaking changes", "release notes"], + "number": 3871, + "title": "18.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/3871" + }, + { + "id": 377742280, + "labels": ["breaking changes", "dependency"], + "number": 3870, + "title": "Update hapijs/catbox-memory to 4.0.1 from 3.1.3", + "url": "https://github.com/hapijs/hapi/issues/3870" + }, + { + "id": 372419276, + "labels": ["feature"], + "number": 3832, + "title": "Feature: built in cookie validation", + "url": "https://github.com/hapijs/hapi/issues/3832" + }, + { + "id": 370841329, + "labels": ["bug"], + "number": 3831, + "title": "State autoValue function overwrites existing cookie value", + "url": "https://github.com/hapijs/hapi/issues/3831" + }, + { + "id": 358974954, + "labels": ["feature", "breaking changes"], + "number": 3822, + "title": "Use WHATWG URL for request.url", + "url": "https://github.com/hapijs/hapi/pull/3822" + } + ], + "number": 251, + "url": "https://github.com/hapijs/hapi/milestone/251", + "version": "18.0.0" + }, + { + "date": "2021-02-01T23:45:11Z", + "id": 6380194, + "issues": [ + { + "id": 798799262, + "labels": ["bug", "commercial"], + "number": 4226, + "title": "v17 fails to include response payload in POST requests", + "url": "https://github.com/hapijs/hapi/issues/4226" + } + ], + "number": 292, + "url": "https://github.com/hapijs/hapi/milestone/292", + "version": "17.9.4" + }, + { + "date": "2020-07-05T00:39:14Z", + "id": 5103767, + "issues": [ + { + "id": 650977275, + "labels": ["dependency", "lts", "commercial"], + "number": 4109, + "title": "Update deps", + "url": "https://github.com/hapijs/hapi/issues/4109" + } + ], + "number": 280, + "url": "https://github.com/hapijs/hapi/milestone/280", + "version": "17.9.3" + }, + { + "date": "2020-02-13T20:12:34Z", + "id": 4218799, + "issues": [ + { + "id": 564922743, + "labels": ["dependency"], + "number": 4047, + "title": "Update deps", + "url": "https://github.com/hapijs/hapi/issues/4047" + }, + { + "id": 550103341, + "labels": ["dependency", "commercial"], + "number": 4025, + "title": "Update deps", + "url": "https://github.com/hapijs/hapi/issues/4025" + } + ], + "number": 265, + "url": "https://github.com/hapijs/hapi/milestone/265", + "version": "17.9.2" + }, + { + "date": "2019-04-10T20:34:14Z", + "id": 4152715, + "issues": [ + { + "id": 431700943, + "labels": ["dependency"], + "number": 3942, + "title": "Change module namespace v17", + "url": "https://github.com/hapijs/hapi/issues/3942" + } + ], + "number": 261, + "url": "https://github.com/hapijs/hapi/milestone/261", + "version": "17.9.0" + }, + { + "date": "2019-03-19T01:22:04Z", + "id": 4152709, + "issues": [ + { + "id": 399998487, + "labels": ["bug", "lts"], + "number": 3903, + "title": "Handle signals in onRequest. Closes #3884", + "url": "https://github.com/hapijs/hapi/pull/3903" + } + ], "number": 260, - "title": "Extension auth schemes", - "url": "https://github.com/hapijs/hapi/issues/260" - }, - { - "id": 8482725, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/260", + "version": "17.8.5" + }, + { + "date": "2019-02-04T21:36:13Z", + "id": 4029950, + "issues": [ + { + "id": 406528694, + "labels": ["security", "dependency", "lts"], + "number": 3921, + "title": "Update hapijs/bourne to 1.1.1 from 1.0.0", + "url": "https://github.com/hapijs/hapi/issues/3921" + } + ], "number": 258, - "title": "Adding support for etag and last-modified headers", - "url": "https://github.com/hapijs/hapi/pull/258" - }, - { - "id": 8481013, - "labels": ["bug"], + "url": "https://github.com/hapijs/hapi/milestone/258", + "version": "17.8.4" + }, + { + "date": "2019-01-31T20:11:34Z", + "id": 4019213, + "issues": [ + { + "id": 405417304, + "labels": ["bug"], + "number": 3915, + "title": "Shrinkwrap typo", + "url": "https://github.com/hapijs/hapi/issues/3915" + } + ], "number": 256, - "title": "Don't cache responses other than 200", - "url": "https://github.com/hapijs/hapi/issues/256" - }, - { - "id": 8479480, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/256", + "version": "17.8.3" + }, + { + "date": "2019-01-31T20:02:39Z", + "id": 4019205, + "issues": [ + { + "id": 405413798, + "labels": ["security", "dependency", "lts"], + "number": 3913, + "title": "Update hapijs/statehood to 6.0.9 from 6.0.8", + "url": "https://github.com/hapijs/hapi/issues/3913" + }, + { + "id": 405412982, + "labels": ["security", "dependency", "lts"], + "number": 3911, + "title": "Update hapijs/subtext to 6.0.12 from 6.0.11", + "url": "https://github.com/hapijs/hapi/issues/3911" + } + ], "number": 255, - "title": "Adding support for gzip responses", - "url": "https://github.com/hapijs/hapi/pull/255" - }, - { - "id": 8255183, - "labels": ["feature"], - "number": 232, - "title": "Support sending gzip responses", - "url": "https://github.com/hapijs/hapi/issues/232" - } - ], - "number": 8, - "url": "https://github.com/hapijs/hapi/milestone/8", - "version": "0.9.1" - }, - { - "date": "2012-11-19T18:59:32Z", - "id": 192937, - "issues": [ - { - "id": 8453819, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/255", + "version": "17.8.2" + }, + { + "date": "2018-11-23T04:19:19Z", + "id": 3842042, + "issues": [ + { + "id": 383700007, + "labels": ["bug"], + "number": 3886, + "title": "Protect against invalid strategy name in server.auth.verify()", + "url": "https://github.com/hapijs/hapi/issues/3886" + } + ], + "number": 252, + "url": "https://github.com/hapijs/hapi/milestone/252", + "version": "17.8.1" + }, + { + "date": "2018-11-23T04:18:03Z", + "id": 3798512, + "issues": [ + { + "id": 383651244, + "labels": ["feature"], + "number": 3885, + "title": "Support credentials verficiation", + "url": "https://github.com/hapijs/hapi/issues/3885" + } + ], "number": 250, - "title": "Direct response support", - "url": "https://github.com/hapijs/hapi/pull/250" - }, - { - "id": 8397828, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/250", + "version": "17.8.0" + }, + { + "date": "2018-11-06T00:50:16Z", + "id": 3792422, + "issues": [ + { + "id": 377646691, + "labels": ["feature"], + "number": 3867, + "title": "Specify node, hapi, and plugin version requirements", + "url": "https://github.com/hapijs/hapi/issues/3867" + } + ], + "number": 247, + "url": "https://github.com/hapijs/hapi/milestone/247", + "version": "17.7.0" + }, + { + "date": "2018-11-03T04:32:26Z", + "id": 3791381, + "issues": [ + { + "id": 377022260, + "labels": ["non issue", "dependency"], + "number": 3863, + "title": "Remove engines", + "url": "https://github.com/hapijs/hapi/issues/3863" + } + ], "number": 245, - "title": "Basic auth", - "url": "https://github.com/hapijs/hapi/pull/245" - }, - { - "id": 8380862, - "labels": ["feature"], + "url": "https://github.com/hapijs/hapi/milestone/245", + "version": "17.6.4" + }, + { + "date": "2018-11-02T17:56:40Z", + "id": 3789281, + "issues": [ + { + "id": 376909914, + "labels": ["bug", "dependency"], + "number": 3860, + "title": "Update hapijs/subtext to 6.0.10 from 6.0.9", + "url": "https://github.com/hapijs/hapi/issues/3860" + } + ], + "number": 244, + "url": "https://github.com/hapijs/hapi/milestone/244", + "version": "17.6.3" + }, + { + "date": "2018-11-01T22:31:07Z", + "id": 3789276, + "issues": [ + { + "id": 376596055, + "labels": ["bug"], + "number": 3857, + "title": "Include shrinkwrap file in dist", + "url": "https://github.com/hapijs/hapi/issues/3857" + } + ], + "number": 243, + "url": "https://github.com/hapijs/hapi/milestone/243", + "version": "17.6.2" + }, + { + "date": "2018-11-01T22:26:51Z", + "id": 3685590, + "issues": [ + { + "id": 376584071, + "labels": ["dependency"], + "number": 3856, + "title": "Update hapijs/vise to 3.0.1 from 3.0.0", + "url": "https://github.com/hapijs/hapi/issues/3856" + }, + { + "id": 376583905, + "labels": ["dependency"], + "number": 3855, + "title": "Update hapijs/topo to 3.0.2 from 3.0.1", + "url": "https://github.com/hapijs/hapi/issues/3855" + }, + { + "id": 376583780, + "labels": ["dependency"], + "number": 3854, + "title": "Update hapijs/subtext to 6.0.9 from 6.0.7", + "url": "https://github.com/hapijs/hapi/issues/3854" + }, + { + "id": 376583667, + "labels": ["dependency"], + "number": 3853, + "title": "Update hapijs/statehood to 6.0.7 from 6.0.6", + "url": "https://github.com/hapijs/hapi/issues/3853" + }, + { + "id": 376583509, + "labels": ["dependency"], + "number": 3852, + "title": "Update hapijs/shot to 4.0.6 from 4.0.5", + "url": "https://github.com/hapijs/hapi/issues/3852" + }, + { + "id": 376583359, + "labels": ["dependency"], + "number": 3851, + "title": "Update hapijs/podium to 3.1.4 from 3.1.2", + "url": "https://github.com/hapijs/hapi/issues/3851" + }, + { + "id": 376583194, + "labels": ["dependency"], + "number": 3850, + "title": "Update jshttp/mime-db to 1.37.0 from 1.35.0", + "url": "https://github.com/hapijs/hapi/issues/3850" + }, + { + "id": 376583035, + "labels": ["dependency"], + "number": 3849, + "title": "Update hapijs/nigel to 3.0.3 from 3.0.1", + "url": "https://github.com/hapijs/hapi/issues/3849" + }, + { + "id": 376582886, + "labels": ["dependency"], + "number": 3848, + "title": "Update hapijs/mimos to 4.0.1 from 4.0.0", + "url": "https://github.com/hapijs/hapi/issues/3848" + }, + { + "id": 376582734, + "labels": ["dependency"], + "number": 3847, + "title": "Update hapijs/joi to 14.0.3 from 13.5.2", + "url": "https://github.com/hapijs/hapi/issues/3847" + }, + { + "id": 376582583, + "labels": ["dependency"], + "number": 3846, + "title": "Update hueniverse/iron to 5.0.5 from 5.0.3", + "url": "https://github.com/hapijs/hapi/issues/3846" + }, + { + "id": 376582457, + "labels": ["dependency"], + "number": 3845, + "title": "Update hapijs/heavy to 6.1.1 from 6.1.0", + "url": "https://github.com/hapijs/hapi/issues/3845" + }, + { + "id": 376582272, + "labels": ["dependency"], + "number": 3844, + "title": "Update hapijs/catbox-memory to 3.1.3 from 3.1.2", + "url": "https://github.com/hapijs/hapi/issues/3844" + }, + { + "id": 376582106, + "labels": ["dependency"], + "number": 3843, + "title": "Update hapijs/catbox to 10.0.4 from 10.0.3", + "url": "https://github.com/hapijs/hapi/issues/3843" + }, + { + "id": 376549405, + "labels": ["dependency"], + "number": 3842, + "title": "Update hapijs/call to 5.0.2 from 5.0.1", + "url": "https://github.com/hapijs/hapi/issues/3842" + }, + { + "id": 376549237, + "labels": ["dependency"], + "number": 3841, + "title": "Update hapijs/bounce to 1.2.1 from 1.2.0", + "url": "https://github.com/hapijs/hapi/issues/3841" + }, + { + "id": 376549028, + "labels": ["dependency"], + "number": 3840, + "title": "Update hapijs/boom to 7.2.1 from 7.2.0", + "url": "https://github.com/hapijs/hapi/issues/3840" + }, + { + "id": 376548775, + "labels": ["dependency"], + "number": 3839, + "title": "Update hapijs/b64 to 4.1.1 from 4.0.0", + "url": "https://github.com/hapijs/hapi/issues/3839" + }, + { + "id": 376548573, + "labels": ["dependency"], + "number": 3838, + "title": "Update hapijs/ammo to 3.0.2 from 3.0.1", + "url": "https://github.com/hapijs/hapi/issues/3838" + }, + { + "id": 376548360, + "labels": ["dependency"], + "number": 3837, + "title": "Update hapijs/accept to 3.1.2 from 3.0.2", + "url": "https://github.com/hapijs/hapi/issues/3837" + }, + { + "id": 375808720, + "labels": ["dependency"], + "number": 3836, + "title": "Update hapijs/wreck to 14.1.2 from 14.0.2", + "url": "https://github.com/hapijs/hapi/issues/3836" + }, + { + "id": 375803857, + "labels": ["dependency"], + "number": 3835, + "title": "Update hapijs/pez to 4.0.4 from 4.0.2", + "url": "https://github.com/hapijs/hapi/issues/3835" + }, + { + "id": 375803040, + "labels": ["dependency"], + "number": 3834, + "title": "Update hapijs/nigel to 3.0.3 from 3.0.1", + "url": "https://github.com/hapijs/hapi/issues/3834" + } + ], + "number": 242, + "url": "https://github.com/hapijs/hapi/milestone/242", + "version": "17.6.1" + }, + { + "date": "2018-09-25T07:56:15Z", + "id": 3680113, + "issues": [ + { + "id": 363451748, + "labels": ["feature"], + "number": 3827, + "title": "Expose request active status", + "url": "https://github.com/hapijs/hapi/issues/3827" + }, + { + "id": 363096298, + "labels": ["dependency"], + "number": 3826, + "title": "Update hapijs/catbox to 10.0.3 from 10.0.2", + "url": "https://github.com/hapijs/hapi/issues/3826" + } + ], + "number": 241, + "url": "https://github.com/hapijs/hapi/milestone/241", + "version": "17.6.0" + }, + { + "date": "2018-09-23T06:01:40Z", + "id": 3603223, + "issues": [ + { + "id": 358068763, + "labels": ["bug"], + "number": 3821, + "title": "onPreResponse not called when error returned/rethrown from failAction of error resp validation", + "url": "https://github.com/hapijs/hapi/issues/3821" + } + ], "number": 240, - "title": "Basic auth scheme", - "url": "https://github.com/hapijs/hapi/issues/240" - }, - { - "id": 8380831, - "labels": ["documentation"], + "url": "https://github.com/hapijs/hapi/milestone/240", + "version": "17.5.5" + }, + { + "date": "2018-08-28T07:39:24Z", + "id": 3603222, + "issues": [ + { + "id": 350962289, + "labels": ["bug"], + "number": 3813, + "title": "redirecting in onRequest throws Cannot read property 'isOriginMatch' of null", + "url": "https://github.com/hapijs/hapi/issues/3813" + } + ], + "number": 239, + "url": "https://github.com/hapijs/hapi/milestone/239", + "version": "17.5.4" + }, + { + "date": "2018-08-28T07:39:26Z", + "id": 3446720, + "issues": [ + { + "id": 346810689, + "labels": ["dependency"], + "number": 3808, + "title": "Update jshttp/mime-db to 1.35.0 from 1.33.0", + "url": "https://github.com/hapijs/hapi/issues/3808" + }, + { + "id": 346810427, + "labels": ["dependency"], + "number": 3807, + "title": "Update hapijs/joi to 13.5.2 from 13.2.0", + "url": "https://github.com/hapijs/hapi/issues/3807" + }, + { + "id": 324054757, + "labels": ["bug"], + "number": 3792, + "title": "Global cors and security options not respected in 404", + "url": "https://github.com/hapijs/hapi/issues/3792" + }, + { + "id": 316972095, + "labels": ["bug", "breaking changes"], + "number": 3782, + "title": "Content type on empty string payloads", + "url": "https://github.com/hapijs/hapi/issues/3782" + }, + { + "id": 289454520, + "labels": ["bug"], + "number": 3728, + "title": "request.response should be null when response failed to transmit", + "url": "https://github.com/hapijs/hapi/issues/3728" + } + ], "number": 238, - "title": "Document new request.reply interface", - "url": "https://github.com/hapijs/hapi/issues/238" - }, - { - "id": 8380779, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/238", + "version": "17.5.3" + }, + { + "date": "2018-06-24T04:17:45Z", + "id": 3389333, + "issues": [ + { + "id": 335149527, + "labels": ["security", "dependency"], + "number": 3801, + "title": "Update hapijs/cryptiles to 4.1.2 from 4.1.1", + "url": "https://github.com/hapijs/hapi/issues/3801" + } + ], "number": 237, - "title": "Response refactor", - "url": "https://github.com/hapijs/hapi/pull/237" - }, - { - "id": 8333581, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/237", + "version": "17.5.2" + }, + { + "date": "2018-05-31T05:27:06Z", + "id": 3362139, + "issues": [ + { + "id": 327573293, + "labels": ["bug"], + "number": 3796, + "title": "do not attach request decorations to a shared prototype, alternative approach.", + "url": "https://github.com/hapijs/hapi/pull/3796" + }, + { + "id": 283802053, + "labels": ["bug"], + "number": 3718, + "title": "Request decorations leak across server instances in same process", + "url": "https://github.com/hapijs/hapi/issues/3718" + } + ], + "number": 236, + "url": "https://github.com/hapijs/hapi/milestone/236", + "version": "17.5.1" + }, + { + "date": "2018-05-21T17:55:07Z", + "id": 3306375, + "issues": [ + { + "id": 322480992, + "labels": ["feature"], + "number": 3791, + "title": "support symbol properties in server.decorate()", + "url": "https://github.com/hapijs/hapi/pull/3791" + } + ], + "number": 235, + "url": "https://github.com/hapijs/hapi/milestone/235", + "version": "17.5.0" + }, + { + "date": "2018-04-29T00:45:55Z", + "id": 3236186, + "issues": [ + { + "id": 318677104, + "labels": ["dependency"], + "number": 3786, + "title": "Update hapijs/joi to 13.2.0 from 13.1.2", + "url": "https://github.com/hapijs/hapi/issues/3786" + }, + { + "id": 318676930, + "labels": ["dependency"], + "number": 3785, + "title": "Update hapijs/ammo to 3.0.1 from 3.0.0", + "url": "https://github.com/hapijs/hapi/issues/3785" + }, + { + "id": 318676906, + "labels": ["dependency"], + "number": 3784, + "title": "Update arb/big-time to 2.0.1 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/3784" + }, + { + "id": 311817806, + "labels": ["feature", "security"], + "number": 3775, + "title": "Add support for Referrer-Policy header", + "url": "https://github.com/hapijs/hapi/pull/3775" + } + ], "number": 234, - "title": "Oz", - "url": "https://github.com/hapijs/hapi/pull/234" - }, - { - "id": 8308501, - "labels": ["feature"], + "url": "https://github.com/hapijs/hapi/milestone/234", + "version": "17.4.0" + }, + { + "date": "2018-04-02T19:18:27Z", + "id": 3231906, + "issues": [ + { + "id": 308287329, + "labels": ["bug"], + "number": 3766, + "title": "Add PATCH to `created` status, better error msg", + "url": "https://github.com/hapijs/hapi/pull/3766" + }, + { + "id": 306425810, + "labels": ["bug"], + "number": 3765, + "title": "Respect a response status schema of true", + "url": "https://github.com/hapijs/hapi/pull/3765" + } + ], "number": 233, - "title": "Partial/streaming responses", - "url": "https://github.com/hapijs/hapi/issues/233" - }, - { - "id": 8186075, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/233", + "version": "17.3.1" + }, + { + "date": "2018-03-31T00:32:19Z", + "id": 3192321, + "issues": [ + { + "id": 310197007, + "labels": ["dependency"], + "number": 3772, + "title": "Update hapijs/catbox-memory to 3.1.2 from 3.1.1", + "url": "https://github.com/hapijs/hapi/issues/3772" + }, + { + "id": 310196644, + "labels": ["dependency"], + "number": 3771, + "title": "Update hapijs/nigel to 3.0.1 from 3.0.2", + "url": "https://github.com/hapijs/hapi/issues/3771" + }, + { + "id": 310196376, + "labels": ["dependency"], + "number": 3770, + "title": "Update hapijs/pez to 4.0.2 from 4.0.1", + "url": "https://github.com/hapijs/hapi/issues/3770" + }, + { + "id": 310196206, + "labels": ["dependency"], + "number": 3769, + "title": "Update hapijs/statehood to 6.0.6 from 6.0.5", + "url": "https://github.com/hapijs/hapi/issues/3769" + }, + { + "id": 310195218, + "labels": ["dependency"], + "number": 3768, + "title": "Update hapijs/content to 4.0.5 from 4.0.4", + "url": "https://github.com/hapijs/hapi/issues/3768" + }, + { + "id": 310164402, + "labels": ["feature"], + "number": 3767, + "title": "server.control()", + "url": "https://github.com/hapijs/hapi/issues/3767" + } + ], + "number": 232, + "url": "https://github.com/hapijs/hapi/milestone/232", + "version": "17.3.0" + }, + { + "date": "2018-03-16T05:38:30Z", + "id": 3168274, + "issues": [ + { + "id": 305808087, + "labels": ["bug"], + "number": 3760, + "title": "Fix checksums", + "url": "https://github.com/hapijs/hapi/issues/3760" + } + ], + "number": 231, + "url": "https://github.com/hapijs/hapi/milestone/231", + "version": "17.2.3" + }, + { + "date": "2018-03-07T09:17:22Z", + "id": 3153088, + "issues": [ + { + "id": 303018989, + "labels": ["bug"], + "number": 3758, + "title": "Request log with function data sends incorrect data", + "url": "https://github.com/hapijs/hapi/issues/3758" + }, + { + "id": 298112216, + "labels": ["bug"], + "number": 3741, + "title": "Replace new Buffer()", + "url": "https://github.com/hapijs/hapi/pull/3741" + } + ], + "number": 230, + "url": "https://github.com/hapijs/hapi/milestone/230", + "version": "17.2.2" + }, + { + "date": "2018-03-01T09:46:04Z", + "id": 2992397, + "issues": [ + { + "id": 301333655, + "labels": ["dependency"], + "number": 3756, + "title": "Update hapijs/shot to 4.0.5 from 4.0.3", + "url": "https://github.com/hapijs/hapi/issues/3756" + }, + { + "id": 301333114, + "labels": ["dependency"], + "number": 3755, + "title": "Update hapijs/joi to 13.1.2 from 13.0.1", + "url": "https://github.com/hapijs/hapi/issues/3755" + }, + { + "id": 301332841, + "labels": ["dependency"], + "number": 3754, + "title": "Update jshttp/mime-db to 1.33.0 from 1.31.0", + "url": "https://github.com/hapijs/hapi/issues/3754" + }, + { + "id": 301332535, + "labels": ["dependency"], + "number": 3753, + "title": "Update hapijs/hoek to 5.0.3 from 5.0.2", + "url": "https://github.com/hapijs/hapi/issues/3753" + }, + { + "id": 301331991, + "labels": ["dependency"], + "number": 3752, + "title": "Update hapijs/content to 4.0.4 from 4.0.3", + "url": "https://github.com/hapijs/hapi/issues/3752" + }, + { + "id": 301331607, + "labels": ["dependency"], + "number": 3751, + "title": "Update hueniverse/bounce to 1.2.0 from 1.0.3", + "url": "https://github.com/hapijs/hapi/issues/3751" + }, + { + "id": 301331282, + "labels": ["dependency"], + "number": 3750, + "title": "Update hapijs/boom to 7.2.0 from 7.1.1", + "url": "https://github.com/hapijs/hapi/issues/3750" + }, + { + "id": 283694730, + "labels": ["bug", "breaking changes"], + "number": 3717, + "title": "Prefer user added encoding over built-in", + "url": "https://github.com/hapijs/hapi/pull/3717" + }, + { + "id": 277813873, + "labels": ["bug", "breaking changes"], + "number": 3701, + "title": "Enable registered encoders to have higher priority than built-in", + "url": "https://github.com/hapijs/hapi/issues/3701" + } + ], "number": 229, - "title": "Initial 0.9.0", - "url": "https://github.com/hapijs/hapi/pull/229" - }, - { - "id": 7486546, - "labels": ["feature"], - "number": 168, - "title": "Move query and schema into a single validation config", - "url": "https://github.com/hapijs/hapi/issues/168" - }, - { - "id": 7474069, - "labels": ["feature"], - "number": 167, - "title": "Replace OAuth authentication with OZ", - "url": "https://github.com/hapijs/hapi/issues/167" - } - ], - "number": 3, - "url": "https://github.com/hapijs/hapi/milestone/3", - "version": "0.9.0" - }, - { - "date": "2012-11-07T20:40:57Z", - "id": 208070, - "issues": [ - { - "id": 8153615, - "labels": ["bug"], - "number": 222, - "title": "Fix bug where /docs crashes if no POST routes are defined ", - "url": "https://github.com/hapijs/hapi/pull/222" - }, - { - "id": 8153351, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/229", + "version": "17.2.1" + }, + { + "date": "2017-12-21T06:51:13Z", + "id": 2934209, + "issues": [ + { + "id": 283408638, + "labels": ["feature"], + "number": 3715, + "title": "Basic concurrent load queue", + "url": "https://github.com/hapijs/hapi/issues/3715" + }, + { + "id": 283408075, + "labels": ["dependency"], + "number": 3714, + "title": "Update hapijs/heavy to 6.1.0 from 6.0.0", + "url": "https://github.com/hapijs/hapi/issues/3714" + }, + { + "id": 282251179, + "labels": ["bug"], + "number": 3712, + "title": "Missing return in dispatch()", + "url": "https://github.com/hapijs/hapi/issues/3712" + }, + { + "id": 282088889, + "labels": ["bug"], + "number": 3711, + "title": "Cache stop() errors are not handled", + "url": "https://github.com/hapijs/hapi/issues/3711" + }, + { + "id": 280105794, + "labels": ["bug"], + "number": 3708, + "title": "Errors in \"onPostStart\" ext leave listener active forever", + "url": "https://github.com/hapijs/hapi/issues/3708" + }, + { + "id": 278000695, + "labels": ["bug"], + "number": 3702, + "title": "Fix server method registered as object without options", + "url": "https://github.com/hapijs/hapi/pull/3702" + } + ], + "number": 228, + "url": "https://github.com/hapijs/hapi/milestone/228", + "version": "17.2.0" + }, + { + "date": "2017-11-23T19:08:56Z", + "id": 2933006, + "issues": [ + { + "id": 276056371, + "labels": ["bug"], + "number": 3688, + "title": "Hapi v17.0.2 cors origin", + "url": "https://github.com/hapijs/hapi/issues/3688" + } + ], + "number": 227, + "url": "https://github.com/hapijs/hapi/milestone/227", + "version": "17.1.1" + }, + { + "date": "2017-11-23T09:46:49Z", + "id": 2927653, + "issues": [ + { + "id": 276312954, + "labels": ["feature"], + "number": 3691, + "title": "Route rules", + "url": "https://github.com/hapijs/hapi/issues/3691" + }, + { + "id": 276117818, + "labels": ["feature"], + "number": 3689, + "title": "Include method name in error", + "url": "https://github.com/hapijs/hapi/pull/3689" + }, + { + "id": 149235284, + "labels": ["feature"], + "number": 3125, + "title": "Allow decoration overrides with parent access support", + "url": "https://github.com/hapijs/hapi/issues/3125" + } + ], + "number": 226, + "url": "https://github.com/hapijs/hapi/milestone/226", + "version": "17.1.0" + }, + { + "date": "2017-11-21T07:23:09Z", + "id": 2888373, + "issues": [ + { + "id": 275599759, + "labels": ["bug"], + "number": 3686, + "title": "Log errors thrown in custom response close method", + "url": "https://github.com/hapijs/hapi/issues/3686" + }, + { + "id": 273533649, + "labels": ["feature"], + "number": 3679, + "title": "[enhancement] https accept-encoding header brotli for chrome", + "url": "https://github.com/hapijs/hapi/pull/3679" + }, + { + "id": 273118255, + "labels": ["feature"], + "number": 3675, + "title": "Optimize accept-encoding for the most common headers", + "url": "https://github.com/hapijs/hapi/issues/3675" + }, + { + "id": 273046823, + "labels": ["dependency"], + "number": 3674, + "title": "Update hapijs/cryptiles to 4.1.1 from 4.1.0", + "url": "https://github.com/hapijs/hapi/issues/3674" + } + ], + "number": 225, + "url": "https://github.com/hapijs/hapi/milestone/225", + "version": "17.0.2" + }, + { + "date": "2017-11-05T09:55:38Z", + "id": 2888372, + "issues": [ + { + "id": 271258691, + "labels": ["bug"], + "number": 3668, + "title": "Bypass authorization when authentication bypassed", + "url": "https://github.com/hapijs/hapi/issues/3668" + } + ], + "number": 224, + "url": "https://github.com/hapijs/hapi/milestone/224", + "version": "17.0.1" + }, + { + "date": "2017-11-03T22:32:36Z", + "id": 2761499, + "issues": [ + { + "id": 269285057, + "labels": ["feature"], + "number": 3665, + "title": "Rename route 'config' with 'options'", + "url": "https://github.com/hapijs/hapi/issues/3665" + }, + { + "id": 268995614, + "labels": ["bug"], + "number": 3663, + "title": "Loosen sample and modify peer validator in the routeBase schema", + "url": "https://github.com/hapijs/hapi/pull/3663" + }, + { + "id": 268778051, + "labels": ["bug", "breaking changes"], + "number": 3662, + "title": "prerequisite returning empty string yields null on the pre object of request", + "url": "https://github.com/hapijs/hapi/issues/3662" + }, + { + "id": 267510086, + "labels": ["breaking changes", "release notes"], + "number": 3658, + "title": "17.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/3658" + }, + { + "id": 267508138, + "labels": ["dependency"], + "number": 3657, + "title": "Update hapijs/vise to 3.0.0 from 2.0.2", + "url": "https://github.com/hapijs/hapi/issues/3657" + }, + { + "id": 267508099, + "labels": ["dependency"], + "number": 3656, + "title": "Update hapijs/topo to 3.0.0 from 2.0.2", + "url": "https://github.com/hapijs/hapi/issues/3656" + }, + { + "id": 267508051, + "labels": ["breaking changes", "dependency"], + "number": 3655, + "title": "Update hapijs/podium to 3.1.2 from 1.3.0", + "url": "https://github.com/hapijs/hapi/issues/3655" + }, + { + "id": 267507962, + "labels": ["dependency"], + "number": 3653, + "title": "Update hapijs/nigel to 3.0.0 from 2.0.2", + "url": "https://github.com/hapijs/hapi/issues/3653" + }, + { + "id": 267507931, + "labels": ["dependency"], + "number": 3652, + "title": "Update hapijs/mimos to 4.0.0 from 3.0.3", + "url": "https://github.com/hapijs/hapi/issues/3652" + }, + { + "id": 267507894, + "labels": ["dependency"], + "number": 3651, + "title": "Update jshttp/mime-db to 1.31.0 from 1.29.0", + "url": "https://github.com/hapijs/hapi/issues/3651" + }, + { + "id": 267507842, + "labels": ["dependency"], + "number": 3650, + "title": "Update hueniverse/iron to 5.0.4 from 4.0.5", + "url": "https://github.com/hapijs/hapi/issues/3650" + }, + { + "id": 267507790, + "labels": ["dependency"], + "number": 3649, + "title": "Update hapijs/hoek to 5.0.2 from 4.2.0", + "url": "https://github.com/hapijs/hapi/issues/3649" + }, + { + "id": 267507744, + "labels": ["dependency"], + "number": 3648, + "title": "Update hapijs/cryptiles to 4.1.0 from 3.1.2", + "url": "https://github.com/hapijs/hapi/issues/3648" + }, + { + "id": 267507707, + "labels": ["dependency"], + "number": 3647, + "title": "Update hapijs/content to 4.0.3 from 3.0.6", + "url": "https://github.com/hapijs/hapi/issues/3647" + }, + { + "id": 267507678, + "labels": ["dependency"], + "number": 3646, + "title": "Update hapijs/catbox-memory to 3.1.1 from 2.0.4", + "url": "https://github.com/hapijs/hapi/issues/3646" + }, + { + "id": 267507634, + "labels": ["breaking changes", "dependency"], + "number": 3645, + "title": "Update hapijs/catbox to 10.0.2 from 7.1.5", + "url": "https://github.com/hapijs/hapi/issues/3645" + }, + { + "id": 267507471, + "labels": ["dependency"], + "number": 3644, + "title": "Update hapijs/call to 5.0.1 from 4.0.2", + "url": "https://github.com/hapijs/hapi/issues/3644" + }, + { + "id": 267507428, + "labels": ["dependency"], + "number": 3643, + "title": "Update hapijs/boom to 7.1.1 from 5.2.0", + "url": "https://github.com/hapijs/hapi/issues/3643" + }, + { + "id": 267507395, + "labels": ["dependency"], + "number": 3642, + "title": "Update hapijs/b64 to 4.0.0 from 3.0.2", + "url": "https://github.com/hapijs/hapi/issues/3642" + }, + { + "id": 267507359, + "labels": ["dependency"], + "number": 3641, + "title": "Update hapijs/ammo to 3.0.0 from 2.0.4", + "url": "https://github.com/hapijs/hapi/issues/3641" + }, + { + "id": 267507317, + "labels": ["dependency"], + "number": 3640, + "title": "Update hapijs/accept to 3.0.2 from 2.1.4", + "url": "https://github.com/hapijs/hapi/issues/3640" + }, + { + "id": 267447170, + "labels": ["dependency"], + "number": 3639, + "title": "Update hapijs/statehood to 6.0.5 from 5.0.3", + "url": "https://github.com/hapijs/hapi/issues/3639" + }, + { + "id": 267446800, + "labels": ["dependency"], + "number": 3638, + "title": "Update hapijs/shot to 4.0.3 from 3.4.2", + "url": "https://github.com/hapijs/hapi/issues/3638" + }, + { + "id": 267446461, + "labels": ["dependency"], + "number": 3637, + "title": "Update hapijs/heavy to 6.0.0 from 4.0.4", + "url": "https://github.com/hapijs/hapi/issues/3637" + }, + { + "id": 267445579, + "labels": ["dependency"], + "number": 3636, + "title": "Update hapijs/wreck to 14.0.2 from 13.0.3", + "url": "https://github.com/hapijs/hapi/issues/3636" + }, + { + "id": 267445344, + "labels": ["feature"], + "number": 3635, + "title": "Expose payload and credentials to dynamic scopes", + "url": "https://github.com/hapijs/hapi/issues/3635" + }, + { + "id": 267443447, + "labels": ["feature", "breaking changes"], + "number": 3634, + "title": "onCredentials ext point", + "url": "https://github.com/hapijs/hapi/issues/3634" + }, + { + "id": 267424350, + "labels": ["feature"], + "number": 3633, + "title": "Separate authorization (403) from authentication (401)", + "url": "https://github.com/hapijs/hapi/issues/3633" + }, + { + "id": 267412027, + "labels": ["test", "documentation"], + "number": 3632, + "title": "Add negative test on registering plugin twice without `once`", + "url": "https://github.com/hapijs/hapi/pull/3632" + }, + { + "id": 267328331, + "labels": ["breaking changes"], + "number": 3631, + "title": "When event data is an error, field name is error", + "url": "https://github.com/hapijs/hapi/issues/3631" + }, + { + "id": 267323637, + "labels": ["breaking changes"], + "number": 3630, + "title": "Replace events 'internal` bool with 'channel' property", + "url": "https://github.com/hapijs/hapi/issues/3630" + }, + { + "id": 267304482, + "labels": ["breaking changes"], + "number": 3629, + "title": "Remove request.getLog() method", + "url": "https://github.com/hapijs/hapi/issues/3629" + }, + { + "id": 267304301, + "labels": ["breaking changes"], + "number": 3628, + "title": "Combine all request events into single event", + "url": "https://github.com/hapijs/hapi/issues/3628" + }, + { + "id": 267099815, + "labels": ["breaking changes"], + "number": 3627, + "title": "Remove server argument from 'route' event", + "url": "https://github.com/hapijs/hapi/issues/3627" + }, + { + "id": 266932853, + "labels": ["dependency"], + "number": 3626, + "title": "Update hapijs/subtext to 6.0.7 from 6.0.3", + "url": "https://github.com/hapijs/hapi/issues/3626" + }, + { + "id": 266932684, + "labels": ["dependency"], + "number": 3625, + "title": "Update hapijs/pez to 4.0.1 from 2.1.5", + "url": "https://github.com/hapijs/hapi/issues/3625" + }, + { + "id": 266918207, + "labels": ["bug"], + "number": 3624, + "title": "Send 400 bad request on parse error", + "url": "https://github.com/hapijs/hapi/issues/3624" + }, + { + "id": 266575621, + "labels": ["bug"], + "number": 3621, + "title": "Remove certain passThrough headers", + "url": "https://github.com/hapijs/hapi/issues/3621" + }, + { + "id": 266362793, + "labels": ["breaking changes"], + "number": 3618, + "title": "Replace plugin interface to object", + "url": "https://github.com/hapijs/hapi/issues/3618" + }, + { + "id": 266277962, + "labels": ["breaking changes"], + "number": 3616, + "title": "Change validation errors", + "url": "https://github.com/hapijs/hapi/issues/3616" + }, + { + "id": 266266639, + "labels": ["breaking changes"], + "number": 3615, + "title": "Normalize server methods to always return plain value", + "url": "https://github.com/hapijs/hapi/issues/3615" + }, + { + "id": 266234541, + "labels": ["breaking changes"], + "number": 3614, + "title": "Remove envelope from server.table()", + "url": "https://github.com/hapijs/hapi/issues/3614" + }, + { + "id": 266232553, + "labels": ["breaking changes"], + "number": 3613, + "title": "Combine server.handler() with server.decorate()", + "url": "https://github.com/hapijs/hapi/issues/3613" + }, + { + "id": 266226590, + "labels": ["breaking changes"], + "number": 3612, + "title": "Remove mode support from server.auth.strategy()", + "url": "https://github.com/hapijs/hapi/issues/3612" + }, + { + "id": 265605429, + "labels": ["breaking changes", "dependency"], + "number": 3609, + "title": "Update hapijs/joi to 13.0.1 from 11.1.0", + "url": "https://github.com/hapijs/hapi/issues/3609" + }, + { + "id": 265473004, + "labels": ["feature"], + "number": 3607, + "title": "Normalize failAction across the entire framework", + "url": "https://github.com/hapijs/hapi/issues/3607" + }, + { + "id": 265424798, + "labels": ["breaking changes"], + "number": 3605, + "title": "Remove source argument from validation failAction method", + "url": "https://github.com/hapijs/hapi/issues/3605" + }, + { + "id": 265275528, + "labels": ["documentation"], + "number": 3604, + "title": "request.auth.strategy is not documented", + "url": "https://github.com/hapijs/hapi/issues/3604" + }, + { + "id": 264670459, + "labels": ["bug"], + "number": 3602, + "title": "exclude connection header in response passThrough", + "url": "https://github.com/hapijs/hapi/pull/3602" + }, + { + "id": 264186269, + "labels": ["feature"], + "number": 3599, + "title": "Provide a way to flush compression stream on demand", + "url": "https://github.com/hapijs/hapi/issues/3599" + }, + { + "id": 263720489, + "labels": ["feature"], + "number": 3598, + "title": "Implement wildcardIgnoresOrigin CORS option", + "url": "https://github.com/hapijs/hapi/pull/3598" + }, + { + "id": 263571381, + "labels": ["breaking changes"], + "number": 3597, + "title": "Rename reply interface to toolkit", + "url": "https://github.com/hapijs/hapi/issues/3597" + }, + { + "id": 262237086, + "labels": ["breaking changes"], + "number": 3596, + "title": "Move request.id to request.info.id", + "url": "https://github.com/hapijs/hapi/issues/3596" + }, + { + "id": 262074746, + "labels": ["feature"], + "number": 3595, + "title": "Explicit Context", + "url": "https://github.com/hapijs/hapi/issues/3595" + }, + { + "id": 261957058, + "labels": ["feature", "breaking changes"], + "number": 3594, + "title": "Support compression minimum length", + "url": "https://github.com/hapijs/hapi/issues/3594" + }, + { + "id": 261827203, + "labels": ["breaking changes"], + "number": 3592, + "title": "Change reply interface from function to object", + "url": "https://github.com/hapijs/hapi/issues/3592" + }, + { + "id": 261826961, + "labels": ["bug", "breaking changes"], + "number": 3591, + "title": "Normalize lifecycle", + "url": "https://github.com/hapijs/hapi/issues/3591" + }, + { + "id": 261431820, + "labels": ["breaking changes", "dependency"], + "number": 3590, + "title": "Remove HTML escaping of joi errors", + "url": "https://github.com/hapijs/hapi/issues/3590" + }, + { + "id": 261220382, + "labels": ["breaking changes"], + "number": 3589, + "title": "Move request and server events to `events` getter", + "url": "https://github.com/hapijs/hapi/issues/3589" + }, + { + "id": 259705940, + "labels": ["breaking changes"], + "number": 3583, + "title": "Reduce request internal logging", + "url": "https://github.com/hapijs/hapi/issues/3583" + }, + { + "id": 258977802, + "labels": ["breaking changes"], + "number": 3580, + "title": "Remove server methods string handlers shortcut", + "url": "https://github.com/hapijs/hapi/issues/3580" + }, + { + "id": 258742812, + "labels": ["breaking changes"], + "number": 3579, + "title": "v17 rc 4", + "url": "https://github.com/hapijs/hapi/pull/3579" + }, + { + "id": 258151109, + "labels": ["breaking changes"], + "number": 3574, + "title": "Move all server events to server.events", + "url": "https://github.com/hapijs/hapi/issues/3574" + }, + { + "id": 258121813, + "labels": ["breaking changes"], + "number": 3573, + "title": "Remove domains", + "url": "https://github.com/hapijs/hapi/issues/3573" + }, + { + "id": 257557952, + "labels": ["breaking changes"], + "number": 3572, + "title": "Remove support for multiple connection in a single server", + "url": "https://github.com/hapijs/hapi/issues/3572" + }, + { + "id": 257212822, + "labels": ["breaking changes"], + "number": 3571, + "title": "Drop support for request tails", + "url": "https://github.com/hapijs/hapi/issues/3571" + }, + { + "id": 253282383, + "labels": ["bug"], + "number": 3567, + "title": "response validate options for 'modify' and 'sample' is too strict", + "url": "https://github.com/hapijs/hapi/issues/3567" + }, + { + "id": 233328463, + "labels": ["bug", "breaking changes"], + "number": 3509, + "title": "Return 413 when payload is too big", + "url": "https://github.com/hapijs/hapi/issues/3509" + }, + { + "id": 206404208, + "labels": ["feature"], + "number": 3434, + "title": "Validate params rules against path params", + "url": "https://github.com/hapijs/hapi/issues/3434" + }, + { + "id": 199784110, + "labels": ["feature"], + "number": 3423, + "title": "CDN friendly CORS: remove \"Vary: Origin\" for wildcard CORS origins", + "url": "https://github.com/hapijs/hapi/issues/3423" + }, + { + "id": 174970311, + "labels": ["bug"], + "number": 3334, + "title": "Handle multiple parallel registrations", + "url": "https://github.com/hapijs/hapi/issues/3334" + }, + { + "id": 172346828, + "labels": ["feature"], + "number": 3297, + "title": "Pass plugin's server rather than root server to route config function", + "url": "https://github.com/hapijs/hapi/issues/3297" + }, + { + "id": 155235823, + "labels": ["bug"], + "number": 3152, + "title": "reply.code(value) ignored when payload is empty and emptyStatusCode is set", + "url": "https://github.com/hapijs/hapi/issues/3152" + }, + { + "id": 154682422, + "labels": ["bug"], + "number": 3150, + "title": "server.method doesn't resolve promise with cache options", + "url": "https://github.com/hapijs/hapi/issues/3150" + }, + { + "id": 137116066, + "labels": ["feature"], + "number": 3066, + "title": "Allow access to parent realm", + "url": "https://github.com/hapijs/hapi/issues/3066" + } + ], "number": 221, - "title": "Adding parsing of multipart form-data content-type", - "url": "https://github.com/hapijs/hapi/pull/221" - }, - { - "id": 8148055, - "labels": ["feature", "bug"], + "url": "https://github.com/hapijs/hapi/milestone/221", + "version": "17.0.0" + }, + { + "date": "2020-06-30T05:28:33Z", + "id": 5103768, + "issues": [ + { + "id": 647872619, + "labels": ["dependency", "lts", "commercial"], + "number": 4108, + "title": "Support node 12", + "url": "https://github.com/hapijs/hapi/issues/4108" + } + ], + "number": 281, + "url": "https://github.com/hapijs/hapi/milestone/281", + "version": "16.8.3" + }, + { + "date": "2020-03-14T22:56:32Z", + "id": 4481591, + "issues": [ + { + "id": 564924339, + "labels": ["dependency"], + "number": 4048, + "title": "Update deps", + "url": "https://github.com/hapijs/hapi/issues/4048" + } + ], + "number": 268, + "url": "https://github.com/hapijs/hapi/milestone/268", + "version": "16.8.2" + }, + { + "date": "2019-07-10T18:23:18Z", + "id": 4171125, + "issues": [ + { + "id": 466443456, + "labels": ["bug", "lts", "commercial"], + "number": 3960, + "title": "Send 400 bad request on parse error", + "url": "https://github.com/hapijs/hapi/issues/3960" + } + ], + "number": 263, + "url": "https://github.com/hapijs/hapi/milestone/263", + "version": "16.8.1" + }, + { + "date": "2019-03-25T21:28:52Z", + "id": 4162233, + "issues": [ + { + "id": 425137888, + "labels": ["breaking changes", "release notes"], + "number": 3937, + "title": "16.8.0-Commercial Release Notes", + "url": "https://github.com/hapijs/hapi/issues/3937" + }, + { + "id": 423957058, + "labels": ["breaking changes", "lts"], + "number": 3933, + "title": "v16 commercial license version", + "url": "https://github.com/hapijs/hapi/issues/3933" + }, + { + "id": 416961001, + "labels": ["breaking changes"], + "number": 3932, + "title": "Discontinued support for hapi v16", + "url": "https://github.com/hapijs/hapi/issues/3932" + }, + { + "id": 397280961, + "labels": ["lts"], + "number": 3899, + "title": "v16: look into compatibility with node 10", + "url": "https://github.com/hapijs/hapi/issues/3899" + } + ], + "number": 262, + "url": "https://github.com/hapijs/hapi/milestone/262", + "version": "16.8.0" + }, + { + "date": "2018-11-06T08:34:12Z", + "id": 3798338, + "issues": [ + { + "id": 377677381, + "labels": ["feature", "lts"], + "number": 3869, + "title": "Specify node, hapi, and plugin version requirements (#3867)", + "url": "https://github.com/hapijs/hapi/issues/3869" + } + ], + "number": 249, + "url": "https://github.com/hapijs/hapi/milestone/249", + "version": "16.7.0" + }, + { + "date": "2018-11-05T23:13:33Z", + "id": 3798337, + "issues": [ + { + "id": 377615843, + "labels": ["non issue", "lts"], + "number": 3866, + "title": "Remove engines", + "url": "https://github.com/hapijs/hapi/issues/3866" + } + ], + "number": 248, + "url": "https://github.com/hapijs/hapi/milestone/248", + "version": "16.6.5" + }, + { + "date": "2018-11-02T22:08:38Z", + "id": 3792037, + "issues": [ + { + "id": 376978840, + "labels": ["breaking changes", "lts"], + "number": 3862, + "title": "Remove support for node 4", + "url": "https://github.com/hapijs/hapi/issues/3862" + }, + { + "id": 376978737, + "labels": ["security", "lts"], + "number": 3861, + "title": "Remove shrinkwrap", + "url": "https://github.com/hapijs/hapi/issues/3861" + } + ], + "number": 246, + "url": "https://github.com/hapijs/hapi/milestone/246", + "version": "16.6.4" + }, + { + "date": "2017-09-25T20:37:24Z", + "id": 2793098, + "issues": [ + { + "id": 260406797, + "labels": ["bug"], + "number": 3586, + "title": "Remove per-response events emitter validation", + "url": "https://github.com/hapijs/hapi/issues/3586" + } + ], + "number": 223, + "url": "https://github.com/hapijs/hapi/milestone/223", + "version": "16.6.2" + }, + { + "date": "2017-09-24T17:35:32Z", + "id": 2787739, + "issues": [ + { + "id": 260101030, + "labels": ["dependency"], + "number": 3585, + "title": "Update hapijs/joi to 11.1.0 from 10.6.0", + "url": "https://github.com/hapijs/hapi/issues/3585" + }, + { + "id": 259443759, + "labels": ["bug", "dependency"], + "number": 3582, + "title": "Support joi 11 paths arrays. Fixes #3581.", + "url": "https://github.com/hapijs/hapi/pull/3582" + } + ], + "number": 222, + "url": "https://github.com/hapijs/hapi/milestone/222", + "version": "16.6.1" + }, + { + "date": "2017-09-12T23:25:07Z", + "id": 2680269, + "issues": [ + { + "id": 257155936, + "labels": ["bug", "security"], + "number": 3570, + "title": "Update hapijs/content to 3.0.6 from 3.0.5", + "url": "https://github.com/hapijs/hapi/issues/3570" + }, + { + "id": 247739886, + "labels": ["bug"], + "number": 3560, + "title": "fix response.message(httpMessage)", + "url": "https://github.com/hapijs/hapi/pull/3560" + }, + { + "id": 232651257, + "labels": ["feature"], + "number": 3506, + "title": "Add json escape option", + "url": "https://github.com/hapijs/hapi/pull/3506" + } + ], + "number": 220, + "url": "https://github.com/hapijs/hapi/milestone/220", + "version": "16.6.0" + }, + { + "date": "2017-08-04T05:02:27Z", + "id": 2680229, + "issues": [ + { + "id": 247896947, + "labels": ["bug"], + "number": 3561, + "title": "Aborted responses return 200 code in inject", + "url": "https://github.com/hapijs/hapi/issues/3561" + } + ], "number": 219, - "title": "cannot bind ephemeral ports", - "url": "https://github.com/hapijs/hapi/issues/219" - }, - { - "id": 7769068, - "labels": ["feature"], - "number": 186, - "title": "Unsupported content-type: multipart/form-data", - "url": "https://github.com/hapijs/hapi/issues/186" - } - ], - "number": 7, - "url": "https://github.com/hapijs/hapi/milestone/7", - "version": "0.8.4" - }, - { - "date": "2012-11-05T22:45:31Z", - "id": 205623, - "issues": [ - { - "id": 8066228, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/219", + "version": "16.5.2" + }, + { + "date": "2017-08-04T04:00:46Z", + "id": 2651961, + "issues": [ + { + "id": 244601416, + "labels": ["dependency"], + "number": 3552, + "title": "Updating from 16.4.3 to 16.5.0: Podium.decorate is not a function error", + "url": "https://github.com/hapijs/hapi/issues/3552" + }, + { + "id": 236962042, + "labels": ["bug"], + "number": 3528, + "title": "\"disconnect\" event on the \"request\" object is never emitted", + "url": "https://github.com/hapijs/hapi/issues/3528" + } + ], + "number": 218, + "url": "https://github.com/hapijs/hapi/milestone/218", + "version": "16.5.1" + }, + { + "date": "2017-07-20T08:39:23Z", + "id": 2574380, + "issues": [ + { + "id": 244284306, + "labels": ["dependency"], + "number": 3551, + "title": "Update hapijs/statehood to 5.0.3 from 5.0.2", + "url": "https://github.com/hapijs/hapi/issues/3551" + }, + { + "id": 244276034, + "labels": ["dependency"], + "number": 3550, + "title": "Update hapijs/content to 3.0.5 from 3.0.4", + "url": "https://github.com/hapijs/hapi/issues/3550" + }, + { + "id": 243883649, + "labels": ["dependency"], + "number": 3548, + "title": "Update hapijs/boom to 5.2.0 from 5.1.0", + "url": "https://github.com/hapijs/hapi/issues/3548" + }, + { + "id": 243627680, + "labels": ["dependency"], + "number": 3545, + "title": "Update hapijs/joi to 10.6.0 from 10.5.2", + "url": "https://github.com/hapijs/hapi/issues/3545" + }, + { + "id": 243626363, + "labels": ["dependency"], + "number": 3544, + "title": "Update jshttp/mime-db to 1.29.0 from 1.28.0", + "url": "https://github.com/hapijs/hapi/issues/3544" + }, + { + "id": 243626220, + "labels": ["dependency"], + "number": 3543, + "title": "Update hapijs/catbox to 7.1.5 from 7.1.4", + "url": "https://github.com/hapijs/hapi/issues/3543" + }, + { + "id": 243619702, + "labels": ["dependency"], + "number": 3542, + "title": "Update hapijs/podium to 1.3.0 from 1.2.5", + "url": "https://github.com/hapijs/hapi/issues/3542" + }, + { + "id": 243565489, + "labels": ["dependency"], + "number": 3541, + "title": "Update hapijs/hoek to 4.2.0 from 4.1.1", + "url": "https://github.com/hapijs/hapi/issues/3541" + }, + { + "id": 242952489, + "labels": ["feature"], + "number": 3539, + "title": "Add payload fail action custom handler", + "url": "https://github.com/hapijs/hapi/pull/3539" + }, + { + "id": 240026843, + "labels": ["dependency"], + "number": 3533, + "title": "Update hapijs/subtext to 5.0.0 from 4.4.1", + "url": "https://github.com/hapijs/hapi/issues/3533" + }, + { + "id": 239340292, + "labels": ["bug"], + "number": 3532, + "title": "Remove joi validation when creating request podium events", + "url": "https://github.com/hapijs/hapi/issues/3532" + }, + { + "id": 239231138, + "labels": ["bug", "test"], + "number": 3531, + "title": "Return 413 when payload too large.", + "url": "https://github.com/hapijs/hapi/pull/3531" + }, + { + "id": 236718518, + "labels": ["feature"], + "number": 3526, + "title": "Consider wildcard filtering for debug options", + "url": "https://github.com/hapijs/hapi/pull/3526" + }, + { + "id": 235742937, + "labels": ["documentation"], + "number": 3523, + "title": "Update lab and fix indentation", + "url": "https://github.com/hapijs/hapi/pull/3523" + }, + { + "id": 234873021, + "labels": ["bug"], + "number": 3520, + "title": "Fixed validation of server's Joi options", + "url": "https://github.com/hapijs/hapi/pull/3520" + }, + { + "id": 234596406, + "labels": ["bug"], + "number": 3519, + "title": "allow decoration of reply with non functions", + "url": "https://github.com/hapijs/hapi/pull/3519" + }, + { + "id": 234337895, + "labels": ["bug", "dependency"], + "number": 3516, + "title": "Invalid cookie header despite strictHeader: false, ignoreErrors: true", + "url": "https://github.com/hapijs/hapi/issues/3516" + }, + { + "id": 225272329, + "labels": ["bug"], + "number": 3483, + "title": "Filename detecting problem on uploading file with apostrophes", + "url": "https://github.com/hapijs/hapi/issues/3483" + }, + { + "id": 222594741, + "labels": ["bug"], + "number": 3480, + "title": "RST packet instead of a FIN packet to close the response on Heroku", + "url": "https://github.com/hapijs/hapi/issues/3480" + }, + { + "id": 216575324, + "labels": ["bug"], + "number": 3464, + "title": "Throwing inside response event breaks new events", + "url": "https://github.com/hapijs/hapi/issues/3464" + } + ], + "number": 217, + "url": "https://github.com/hapijs/hapi/milestone/217", + "version": "16.5.0" + }, + { + "date": "2017-06-09T18:34:12Z", + "id": 2570983, + "issues": [ + { + "id": 233859111, + "labels": ["bug"], + "number": 3514, + "title": "TypeError: Cannot set property 'hostname' of undefined", + "url": "https://github.com/hapijs/hapi/issues/3514" + } + ], + "number": 216, + "url": "https://github.com/hapijs/hapi/milestone/216", + "version": "16.4.3" + }, + { + "date": "2017-06-08T07:23:52Z", + "id": 2562748, + "issues": [ + { + "id": 234429929, + "labels": ["dependency"], + "number": 3517, + "title": "Restore npm-shrinkwrap.json file", + "url": "https://github.com/hapijs/hapi/issues/3517" + } + ], + "number": 215, + "url": "https://github.com/hapijs/hapi/milestone/215", + "version": "16.4.2" + }, + { + "date": "2017-06-05T17:27:10Z", + "id": 2561368, + "issues": [ + { + "id": 233655951, + "labels": ["security", "dependency"], + "number": 3512, + "title": "Remove npm-shrinkwrap", + "url": "https://github.com/hapijs/hapi/issues/3512" + } + ], + "number": 214, + "url": "https://github.com/hapijs/hapi/milestone/214", + "version": "16.4.1" + }, + { + "date": "2017-06-05T17:27:11Z", + "id": 2561052, + "issues": [ + { + "id": 233520196, + "labels": ["dependency"], + "number": 3511, + "title": "Update hapijs/joi to 10.5.2 from 10.5.1", + "url": "https://github.com/hapijs/hapi/issues/3511" + }, + { + "id": 232174289, + "labels": ["dependency"], + "number": 3505, + "title": "Remove isemail deps from shrinkwrap", + "url": "https://github.com/hapijs/hapi/issues/3505" + }, + { + "id": 229717363, + "labels": ["feature", "bug"], + "number": 3486, + "title": "Provide cover for unhandled rejections", + "url": "https://github.com/hapijs/hapi/pull/3486" + }, + { + "id": 202618603, + "labels": ["feature"], + "number": 3429, + "title": "Better support for async handlers", + "url": "https://github.com/hapijs/hapi/issues/3429" + } + ], + "number": 213, + "url": "https://github.com/hapijs/hapi/milestone/213", + "version": "16.4.0" + }, + { + "date": "2017-06-05T03:22:45Z", + "id": 2551546, + "issues": [ + { + "id": 233467003, + "labels": ["dependency"], + "number": 3510, + "title": "Update hapijs/shot to 3.4.2 from 3.4.0", + "url": "https://github.com/hapijs/hapi/issues/3510" + }, + { + "id": 233155057, + "labels": ["dependency"], + "number": 3507, + "title": "Node 8 fixes", + "url": "https://github.com/hapijs/hapi/pull/3507" + } + ], "number": 212, - "title": "Adding proxy tests and doing a little refactoring", - "url": "https://github.com/hapijs/hapi/pull/212" - }, - { - "id": 8052106, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/212", + "version": "16.3.1" + }, + { + "date": "2017-05-30T20:47:33Z", + "id": 2548066, + "issues": [ + { + "id": 215848510, + "labels": ["feature"], + "number": 3461, + "title": "explicitly destroy sockets on clientError", + "url": "https://github.com/hapijs/hapi/pull/3461" + }, + { + "id": 209181052, + "labels": ["bug"], + "number": 3441, + "title": "Fix several request.url property issues on setUrl()", + "url": "https://github.com/hapijs/hapi/pull/3441" + }, + { + "id": 196183135, + "labels": ["feature"], + "number": 3409, + "title": "Adding server.inspect to list decorated framework interfaces", + "url": "https://github.com/hapijs/hapi/pull/3409" + } + ], "number": 211, - "title": "Cache tests, Fix response processing header order", - "url": "https://github.com/hapijs/hapi/pull/211" - }, - { - "id": 7908952, - "labels": ["documentation"], - "number": 201, - "title": "Document proxy handler interface", - "url": "https://github.com/hapijs/hapi/issues/201" - }, - { - "id": 7735593, - "labels": ["feature"], - "number": 185, - "title": "Turn cache memory strategy into a useful feature", - "url": "https://github.com/hapijs/hapi/issues/185" - } - ], - "number": 6, - "url": "https://github.com/hapijs/hapi/milestone/6", - "version": "0.8.3" - }, - { - "date": "2012-11-01T22:24:34Z", - "id": 204888, - "issues": [ - { - "id": 8045423, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/211", + "version": "16.3.0" + }, + { + "date": "2017-05-29T09:42:01Z", + "id": 2547255, + "issues": [ + { + "id": 231900819, + "labels": ["test", "dependency"], + "number": 3502, + "title": "Update hapijs/wreck to 12.2.2 from 10.0.0", + "url": "https://github.com/hapijs/hapi/issues/3502" + }, + { + "id": 231900793, + "labels": ["dependency"], + "number": 3501, + "title": "Update hapijs/subtext to 4.4.1 from 4.3.0", + "url": "https://github.com/hapijs/hapi/issues/3501" + }, + { + "id": 231900767, + "labels": ["dependency"], + "number": 3500, + "title": "Update hapijs/statehood to 5.0.2 from 5.0.1", + "url": "https://github.com/hapijs/hapi/issues/3500" + }, + { + "id": 231900744, + "labels": ["dependency"], + "number": 3499, + "title": "Update hapijs/pez to 2.1.5 from 2.1.4", + "url": "https://github.com/hapijs/hapi/issues/3499" + }, + { + "id": 231900706, + "labels": ["dependency"], + "number": 3498, + "title": "Update jshttp/mime-db to 1.28.0 from 1.25.0", + "url": "https://github.com/hapijs/hapi/issues/3498" + }, + { + "id": 231900675, + "labels": ["dependency"], + "number": 3497, + "title": "Update hapijs/joi to 10.5.1 from 10.1.0", + "url": "https://github.com/hapijs/hapi/issues/3497" + }, + { + "id": 231900649, + "labels": ["dependency"], + "number": 3496, + "title": "Update hueniverse/iron to 4.0.5 from 4.0.4", + "url": "https://github.com/hapijs/hapi/issues/3496" + }, + { + "id": 231900620, + "labels": ["dependency"], + "number": 3495, + "title": "Update hapijs/hoek to 4.1.1 from 4.1.0", + "url": "https://github.com/hapijs/hapi/issues/3495" + }, + { + "id": 231900598, + "labels": ["dependency"], + "number": 3494, + "title": "Update hapijs/heavy to 4.0.4 from 4.0.3", + "url": "https://github.com/hapijs/hapi/issues/3494" + }, + { + "id": 231900575, + "labels": ["dependency"], + "number": 3493, + "title": "Update hapijs/cryptiles to 3.1.2 from 3.1.1", + "url": "https://github.com/hapijs/hapi/issues/3493" + }, + { + "id": 231900431, + "labels": ["dependency"], + "number": 3492, + "title": "Update hapijs/content to 3.0.4 from 3.0.3", + "url": "https://github.com/hapijs/hapi/issues/3492" + }, + { + "id": 231900403, + "labels": ["dependency"], + "number": 3491, + "title": "Update hapijs/catbox to 7.1.3 from 7.1.4", + "url": "https://github.com/hapijs/hapi/issues/3491" + }, + { + "id": 231900375, + "labels": ["dependency"], + "number": 3490, + "title": "Update hapijs/call to 4.0.2 from 4.0.0", + "url": "https://github.com/hapijs/hapi/issues/3490" + }, + { + "id": 231900351, + "labels": ["dependency"], + "number": 3489, + "title": "Update hapijs/boom to 5.1.0 from 4.2.0", + "url": "https://github.com/hapijs/hapi/issues/3489" + }, + { + "id": 231900327, + "labels": ["dependency"], + "number": 3488, + "title": "Update hapijs/ammo to 2.0.4 from 2.0.3", + "url": "https://github.com/hapijs/hapi/issues/3488" + }, + { + "id": 231900279, + "labels": ["dependency"], + "number": 3487, + "title": "Update hapijs/accept to 2.1.4 from 2.1.3", + "url": "https://github.com/hapijs/hapi/issues/3487" + }, + { + "id": 220945260, + "labels": ["feature"], + "number": 3472, + "title": "Send connection close when there is unconsumed payload", + "url": "https://github.com/hapijs/hapi/pull/3472" + }, + { + "id": 220620906, + "labels": ["feature"], + "number": 3470, + "title": "Defer 100-continue signalling until payload parsing", + "url": "https://github.com/hapijs/hapi/pull/3470" + }, + { + "id": 212725635, + "labels": ["feature"], + "number": 3451, + "title": "Have access to request.app in Joi validation context", + "url": "https://github.com/hapijs/hapi/issues/3451" + }, + { + "id": 211053516, + "labels": ["bug"], + "number": 3448, + "title": "Bind request continuation methods to current domain", + "url": "https://github.com/hapijs/hapi/pull/3448" + }, + { + "id": 210916696, + "labels": ["bug"], + "number": 3447, + "title": "one server is always leaked", + "url": "https://github.com/hapijs/hapi/issues/3447" + }, + { + "id": 204153191, + "labels": ["bug"], + "number": 3431, + "title": "when failAction is log or ignored, the error is assigned to request.preResponse but not request.pre", + "url": "https://github.com/hapijs/hapi/issues/3431" + }, + { + "id": 201062129, + "labels": ["bug"], + "number": 3427, + "title": "reply.entity() will always return null for correct etags", + "url": "https://github.com/hapijs/hapi/issues/3427" + } + ], "number": 210, - "title": "0.8.2", - "url": "https://github.com/hapijs/hapi/pull/210" - }, - { - "id": 8034999, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/210", + "version": "16.2.0" + }, + { + "date": "2017-05-28T22:49:02Z", + "id": 2354738, + "issues": [ + { + "id": 218555399, + "labels": ["bug", "security"], + "number": 3466, + "title": "Non-handling of accept-encoding header when the value does not conform to the specification", + "url": "https://github.com/hapijs/hapi/issues/3466" + }, + { + "id": 210914228, + "labels": ["bug"], + "number": 3446, + "title": "remove extra closure", + "url": "https://github.com/hapijs/hapi/pull/3446" + } + ], "number": 209, - "title": "Tests", - "url": "https://github.com/hapijs/hapi/pull/209" - }, - { - "id": 8032316, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/209", + "version": "16.1.1" + }, + { + "date": "2017-02-28T23:59:10Z", + "id": 2219710, + "issues": [ + { + "id": 198064987, + "labels": ["breaking changes", "dependency"], + "number": 3416, + "title": "Update hapijs/joi to 10.1.0 from 10.0.1", + "url": "https://github.com/hapijs/hapi/issues/3416" + }, + { + "id": 198064820, + "labels": ["feature"], + "number": 3415, + "title": "Allow creating multiple connections in a single server.connection() call", + "url": "https://github.com/hapijs/hapi/issues/3415" + } + ], + "number": 208, + "url": "https://github.com/hapijs/hapi/milestone/208", + "version": "16.1.0" + }, + { + "date": "2016-12-29T08:21:54Z", + "id": 2203993, + "issues": [ + { + "id": 197970653, + "labels": ["bug"], + "number": 3414, + "title": "Connectionless plugin fails inside connection-full plugin", + "url": "https://github.com/hapijs/hapi/issues/3414" + } + ], "number": 207, - "title": "Error refactor, custom error support (passThrough)", - "url": "https://github.com/hapijs/hapi/pull/207" - }, - { - "id": 8016106, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/207", + "version": "16.0.3" + }, + { + "date": "2016-12-19T08:38:14Z", + "id": 2169612, + "issues": [ + { + "id": 196357688, + "labels": ["bug"], + "number": 3411, + "title": "Falsey payload returns null", + "url": "https://github.com/hapijs/hapi/issues/3411" + } + ], "number": 206, - "title": "Fixing issue with error responses being cached + test", - "url": "https://github.com/hapijs/hapi/pull/206" - } - ], - "number": 5, - "url": "https://github.com/hapijs/hapi/milestone/5", - "version": "0.8.2" - }, - { - "date": "2012-10-31T18:42:30Z", - "id": 202404, - "issues": [ - { - "id": 8011341, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/206", + "version": "16.0.2" + }, + { + "date": "2016-12-01T19:02:38Z", + "id": 2165177, + "issues": [ + { + "id": 192739277, + "labels": ["bug"], + "number": 3401, + "title": "Attempt to fix #3399 where it crashes on route prerequisites when no domain is present", + "url": "https://github.com/hapijs/hapi/pull/3401" + }, + { + "id": 192683640, + "labels": ["bug"], + "number": 3399, + "title": "Regression on 16, lib/handlers.js", + "url": "https://github.com/hapijs/hapi/issues/3399" + } + ], + "number": 205, + "url": "https://github.com/hapijs/hapi/milestone/205", + "version": "16.0.1" + }, + { + "date": "2016-11-30T00:40:35Z", + "id": 2083067, + "issues": [ + { + "id": 192443592, + "labels": ["breaking changes", "release notes"], + "number": 3398, + "title": "16.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/3398" + }, + { + "id": 192178214, + "labels": ["dependency"], + "number": 3397, + "title": "Update hapijs/ammo to 2.0.3 from 2.0.2", + "url": "https://github.com/hapijs/hapi/issues/3397" + }, + { + "id": 192178151, + "labels": ["breaking changes", "dependency"], + "number": 3396, + "title": "Update hapijs/call to 4.0.0 from 3.0.3", + "url": "https://github.com/hapijs/hapi/issues/3396" + }, + { + "id": 192178083, + "labels": ["dependency"], + "number": 3395, + "title": "Update hapijs/catbox to 7.1.3 from 7.1.2", + "url": "https://github.com/hapijs/hapi/issues/3395" + }, + { + "id": 192178016, + "labels": ["dependency"], + "number": 3394, + "title": "Update hapijs/heavy to 4.0.3 from 4.0.2", + "url": "https://github.com/hapijs/hapi/issues/3394" + }, + { + "id": 192177936, + "labels": ["dependency"], + "number": 3393, + "title": "Update hapijs/podium to 1.2.5 from 1.2.3", + "url": "https://github.com/hapijs/hapi/issues/3393" + }, + { + "id": 192177867, + "labels": ["dependency"], + "number": 3392, + "title": "Update hapijs/shot to 3.4.0 from 3.3.2", + "url": "https://github.com/hapijs/hapi/issues/3392" + }, + { + "id": 192161735, + "labels": ["bug", "dependency"], + "number": 3391, + "title": "Update hapijs/statehood to 5.0.1 from 5.0.0", + "url": "https://github.com/hapijs/hapi/issues/3391" + }, + { + "id": 192161664, + "labels": ["dependency"], + "number": 3390, + "title": "Update jshttp/mime-db to 1.25.0 from 1.23.0", + "url": "https://github.com/hapijs/hapi/issues/3390" + }, + { + "id": 192161554, + "labels": ["dependency"], + "number": 3389, + "title": "Update hapijs/content to 3.0.3 from 3.0.2", + "url": "https://github.com/hapijs/hapi/issues/3389" + }, + { + "id": 192161491, + "labels": ["dependency"], + "number": 3388, + "title": "Update hapijs/pez to 2.1.4 from 2.1.2", + "url": "https://github.com/hapijs/hapi/issues/3388" + }, + { + "id": 192161447, + "labels": ["dependency"], + "number": 3387, + "title": "Update hapijs/accept to 2.1.3 from 2.1.2", + "url": "https://github.com/hapijs/hapi/issues/3387" + }, + { + "id": 192161368, + "labels": ["dependency"], + "number": 3386, + "title": "Update hapijs/catbox-memory to 2.0.4 from 2.0.3", + "url": "https://github.com/hapijs/hapi/issues/3386" + }, + { + "id": 192161257, + "labels": ["breaking changes", "dependency"], + "number": 3385, + "title": "Update hapijs/joi to 10.0.1 from 9.0.4", + "url": "https://github.com/hapijs/hapi/issues/3385" + }, + { + "id": 192161176, + "labels": ["dependency"], + "number": 3384, + "title": "Update hapijs/cryptiles to 3.1.1 from 3.0.2", + "url": "https://github.com/hapijs/hapi/issues/3384" + }, + { + "id": 192161115, + "labels": ["dependency"], + "number": 3383, + "title": "Update hapijs/boom to 4.2.0 from 4.0.0", + "url": "https://github.com/hapijs/hapi/issues/3383" + }, + { + "id": 190704809, + "labels": ["bug"], + "number": 3381, + "title": "problems with Promise error handling in plugin registration", + "url": "https://github.com/hapijs/hapi/issues/3381" + }, + { + "id": 189788728, + "labels": ["bug"], + "number": 3380, + "title": "Ensure Boom objects can be reused - Fix for issue #3378", + "url": "https://github.com/hapijs/hapi/pull/3380" + }, + { + "id": 188885083, + "labels": ["bug"], + "number": 3378, + "title": "Server fails to reuse Boom object", + "url": "https://github.com/hapijs/hapi/issues/3378" + }, + { + "id": 186931685, + "labels": ["bug"], + "number": 3372, + "title": "Allow HTTPS long poll requests", + "url": "https://github.com/hapijs/hapi/pull/3372" + }, + { + "id": 185280185, + "labels": ["non issue"], + "number": 3369, + "title": "Deprecation Warning in Node v7.0.0 for call to os.tmpDir", + "url": "https://github.com/hapijs/hapi/issues/3369" + }, + { + "id": 185279426, + "labels": ["non issue"], + "number": 3368, + "title": "change deprecated os.tmpDir call to os.tmpdir", + "url": "https://github.com/hapijs/hapi/pull/3368" + }, + { + "id": 181108366, + "labels": ["dependency"], + "number": 3359, + "title": "Shrinkwrap fails with hapi version 15.1.1", + "url": "https://github.com/hapijs/hapi/issues/3359" + }, + { + "id": 180571594, + "labels": ["bug"], + "number": 3358, + "title": "fix server not propagating errors on prehandler(promise) + handler error (#3242)", + "url": "https://github.com/hapijs/hapi/pull/3358" + }, + { + "id": 176730902, + "labels": ["bug", "security", "dependency"], + "number": 3347, + "title": "Major performance issue with hapi.js 15.x", + "url": "https://github.com/hapijs/hapi/issues/3347" + }, + { + "id": 167467890, + "labels": ["bug"], + "number": 3242, + "title": "Using promises in prehandlers causes exceptions to be swallowed in handlers. ", + "url": "https://github.com/hapijs/hapi/issues/3242" + } + ], "number": 204, - "title": "Add postResponse method to proxy", - "url": "https://github.com/hapijs/hapi/pull/204" - }, - { - "id": 7908258, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/204", + "version": "16.0.0" + }, + { + "date": "2016-10-21T08:43:23Z", + "id": 2030337, + "issues": [ + { + "id": 184288037, + "labels": ["feature", "dependency"], + "number": 3366, + "title": "Update hapijs/subtext to 4.3.0 from 4.2.2", + "url": "https://github.com/hapijs/hapi/issues/3366" + }, + { + "id": 179610151, + "labels": ["dependency"], + "number": 3355, + "title": "Update hapijs/wreck to 10.0.0 from 9.0.0", + "url": "https://github.com/hapijs/hapi/issues/3355" + }, + { + "id": 179610003, + "labels": ["dependency"], + "number": 3354, + "title": "Update hapijs/subtext to 4.2.2 from 4.2.1", + "url": "https://github.com/hapijs/hapi/issues/3354" + }, + { + "id": 179583147, + "labels": ["bug"], + "number": 3352, + "title": "npm shrinkwrap produces error with hapi", + "url": "https://github.com/hapijs/hapi/issues/3352" + }, + { + "id": 179430307, + "labels": ["bug", "dependency"], + "number": 3351, + "title": "Fix subtext shrinkwrap", + "url": "https://github.com/hapijs/hapi/pull/3351" + }, + { + "id": 134536435, + "labels": ["feature"], + "number": 3051, + "title": "payload output inconsistent for single payload vs multipart", + "url": "https://github.com/hapijs/hapi/issues/3051" + } + ], + "number": 203, + "url": "https://github.com/hapijs/hapi/milestone/203", + "version": "15.2.0" + }, + { + "date": "2016-09-27T00:01:37Z", + "id": 1976349, + "issues": [ + { + "id": 179366660, + "labels": ["feature"], + "number": 3350, + "title": "Conditional plugin connection-less mode", + "url": "https://github.com/hapijs/hapi/issues/3350" + }, + { + "id": 176177179, + "labels": ["dependency"], + "number": 3342, + "title": "Update hapijs/shot to 3.3.2 from 3.3.1", + "url": "https://github.com/hapijs/hapi/pull/3342" + }, + { + "id": 176177125, + "labels": ["dependency"], + "number": 3341, + "title": "Update hapijs/shot to 3.3.2 from 3.3.1", + "url": "https://github.com/hapijs/hapi/issues/3341" + }, + { + "id": 175393880, + "labels": ["bug"], + "number": 3339, + "title": "Restore npm-shrinkwrap.json to package. Closes #3338", + "url": "https://github.com/hapijs/hapi/pull/3339" + }, + { + "id": 175385133, + "labels": ["bug"], + "number": 3338, + "title": "`npm-shrinkwrap.json` not included in published `hapi` package", + "url": "https://github.com/hapijs/hapi/issues/3338" + } + ], + "number": 202, + "url": "https://github.com/hapijs/hapi/milestone/202", + "version": "15.1.0" + }, + { + "date": "2016-09-01T00:07:40Z", + "id": 1968378, + "issues": [ + { + "id": 174407550, + "labels": ["dependency"], + "number": 3332, + "title": "Update hapijs/podium to 1.2.3 from 1.2.1", + "url": "https://github.com/hapijs/hapi/issues/3332" + }, + { + "id": 174220605, + "labels": ["bug"], + "number": 3330, + "title": "Events not emitted when route handler throws", + "url": "https://github.com/hapijs/hapi/issues/3330" + } + ], + "number": 201, + "url": "https://github.com/hapijs/hapi/milestone/201", + "version": "15.0.3" + }, + { + "date": "2016-08-28T21:48:15Z", + "id": 1966799, + "issues": [ + { + "id": 173669638, + "labels": ["bug"], + "number": 3325, + "title": "Allow initializing server without connections", + "url": "https://github.com/hapijs/hapi/issues/3325" + }, + { + "id": 173668709, + "labels": ["bug", "breaking changes"], + "number": 3324, + "title": "Verify plugin dependencies for connections added after initialize() or start()", + "url": "https://github.com/hapijs/hapi/issues/3324" + } + ], "number": 200, - "title": "Fix tls config settings", - "url": "https://github.com/hapijs/hapi/pull/200" - }, - { - "id": 7839206, - "labels": ["bug"], - "number": 191, - "title": "Pass all TLS options to createServer", - "url": "https://github.com/hapijs/hapi/issues/191" - } - ], - "number": 4, - "url": "https://github.com/hapijs/hapi/milestone/4", - "version": "0.8.1" - }, - { - "date": "2012-10-27T00:24:49Z", - "id": 192936, - "issues": [ - { - "id": 7897715, - "labels": ["feature"], + "url": "https://github.com/hapijs/hapi/milestone/200", + "version": "15.0.2" + }, + { + "date": "2016-08-26T23:44:46Z", + "id": 1966726, + "issues": [], + "number": 199, + "url": "https://github.com/hapijs/hapi/milestone/199", + "version": "15.0.1" + }, + { + "date": "2016-08-26T22:23:59Z", + "id": 1940453, + "issues": [ + { + "id": 173554751, + "labels": ["breaking changes", "release notes"], + "number": 3323, + "title": "15.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/3323" + }, + { + "id": 173492458, + "labels": ["dependency"], + "number": 3322, + "title": "Bump hapijs/boom version to 4.0.0 from 3.2.2", + "url": "https://github.com/hapijs/hapi/pull/3322" + }, + { + "id": 173468096, + "labels": ["dependency"], + "number": 3320, + "title": "Update hapijs/boom to 4.0.0 from 3.2.2", + "url": "https://github.com/hapijs/hapi/issues/3320" + }, + { + "id": 173397208, + "labels": ["breaking changes", "security", "dependency"], + "number": 3318, + "title": "Update hapijs/statehood to 5.0.0 from 4.0.3", + "url": "https://github.com/hapijs/hapi/issues/3318" + }, + { + "id": 173388037, + "labels": ["dependency"], + "number": 3317, + "title": "Update hueniverse/iron to 4.0.3 from 4.0.2", + "url": "https://github.com/hapijs/hapi/issues/3317" + }, + { + "id": 173376904, + "labels": ["dependency"], + "number": 3316, + "title": "Update hapijs/wreck to 9.0.0 from 8.0.1", + "url": "https://github.com/hapijs/hapi/issues/3316" + }, + { + "id": 173371765, + "labels": ["dependency"], + "number": 3315, + "title": "Update hapijs/call to 3.0.3 from 3.0.2", + "url": "https://github.com/hapijs/hapi/issues/3315" + }, + { + "id": 173371445, + "labels": ["dependency"], + "number": 3314, + "title": "Update hapijs/ammo to 2.0.2 from 2.0.1", + "url": "https://github.com/hapijs/hapi/issues/3314" + }, + { + "id": 172740551, + "labels": ["feature"], + "number": 3313, + "title": "Expose request to server.encode() and decode() generators", + "url": "https://github.com/hapijs/hapi/issues/3313" + }, + { + "id": 172621831, + "labels": ["feature"], + "number": 3308, + "title": "Response validation custom handler", + "url": "https://github.com/hapijs/hapi/pull/3308" + }, + { + "id": 172614457, + "labels": ["dependency"], + "number": 3307, + "title": "Update hapijs/shot to 3.3.1 from 3.1.1", + "url": "https://github.com/hapijs/hapi/issues/3307" + }, + { + "id": 172613415, + "labels": ["feature", "breaking changes"], + "number": 3306, + "title": "Disable request getLog() by default", + "url": "https://github.com/hapijs/hapi/issues/3306" + }, + { + "id": 172559576, + "labels": ["breaking changes"], + "number": 3304, + "title": "Errors when reply.continue() is called with an non-auth argument", + "url": "https://github.com/hapijs/hapi/issues/3304" + }, + { + "id": 172547915, + "labels": ["breaking changes"], + "number": 3303, + "title": "Error when reply() is called with a third argument (non-auth)", + "url": "https://github.com/hapijs/hapi/issues/3303" + }, + { + "id": 172475814, + "labels": ["feature"], + "number": 3302, + "title": "Access to scope errors list from a Forbidden error", + "url": "https://github.com/hapijs/hapi/issues/3302" + }, + { + "id": 172384207, + "labels": ["feature"], + "number": 3300, + "title": "Support custom content-type payload decoders", + "url": "https://github.com/hapijs/hapi/issues/3300" + }, + { + "id": 172382371, + "labels": ["dependency"], + "number": 3299, + "title": "Update hapijs/subtext to 4.2.0 from 4.0.5", + "url": "https://github.com/hapijs/hapi/issues/3299" + }, + { + "id": 172349587, + "labels": ["feature"], + "number": 3298, + "title": "Allow extending server encoding support", + "url": "https://github.com/hapijs/hapi/issues/3298" + }, + { + "id": 172309803, + "labels": ["feature"], + "number": 3296, + "title": "Custom events", + "url": "https://github.com/hapijs/hapi/issues/3296" + }, + { + "id": 172221134, + "labels": ["bug", "breaking changes"], + "number": 3295, + "title": "server.register callback handling does not enforce process.nextTick", + "url": "https://github.com/hapijs/hapi/issues/3295" + }, + { + "id": 171964079, + "labels": ["feature", "breaking changes"], + "number": 3294, + "title": "Replace node's EventEmitter interface", + "url": "https://github.com/hapijs/hapi/issues/3294" + }, + { + "id": 171678501, + "labels": ["bug"], + "number": 3292, + "title": "The \"Vary: accept-encoding\" header is not always set", + "url": "https://github.com/hapijs/hapi/issues/3292" + }, + { + "id": 171675393, + "labels": ["bug"], + "number": 3291, + "title": "Ensure that 206 responses are never compressed", + "url": "https://github.com/hapijs/hapi/pull/3291" + }, + { + "id": 168520172, + "labels": ["feature"], + "number": 3275, + "title": "Support for route authorization", + "url": "https://github.com/hapijs/hapi/issues/3275" + }, + { + "id": 167636912, + "labels": ["bug"], + "number": 3243, + "title": "Content type charset handling", + "url": "https://github.com/hapijs/hapi/issues/3243" + }, + { + "id": 166241448, + "labels": ["feature"], + "number": 3237, + "title": "Set response status message.", + "url": "https://github.com/hapijs/hapi/issues/3237" + }, + { + "id": 163197084, + "labels": ["bug"], + "number": 3227, + "title": "Set route validation bind context", + "url": "https://github.com/hapijs/hapi/pull/3227" + }, + { + "id": 161512858, + "labels": ["feature"], + "number": 3214, + "title": "Support failAction function on validation response failures", + "url": "https://github.com/hapijs/hapi/issues/3214" + }, + { + "id": 159670210, + "labels": ["bug"], + "number": 3201, + "title": "handle more types of promise rejection, for #3102", + "url": "https://github.com/hapijs/hapi/pull/3201" + }, + { + "id": 158860822, + "labels": ["feature"], + "number": 3194, + "title": "output validation error pass source along", + "url": "https://github.com/hapijs/hapi/issues/3194" + }, + { + "id": 156733711, + "labels": ["bug"], + "number": 3179, + "title": "Send correct response for HEAD requests", + "url": "https://github.com/hapijs/hapi/pull/3179" + }, + { + "id": 148312686, + "labels": ["feature"], + "number": 3122, + "title": "Logging improvement", + "url": "https://github.com/hapijs/hapi/issues/3122" + }, + { + "id": 144040540, + "labels": ["bug"], + "number": 3102, + "title": "Rejected promises are returned as successful status codes", + "url": "https://github.com/hapijs/hapi/issues/3102" + }, + { + "id": 137074365, + "labels": ["bug"], + "number": 3065, + "title": "Move HTTP response header validation to node", + "url": "https://github.com/hapijs/hapi/issues/3065" + }, + { + "id": 136432268, + "labels": ["bug", "breaking changes"], + "number": 3061, + "title": "Bug with using Joi.object() for route validation", + "url": "https://github.com/hapijs/hapi/issues/3061" + }, + { + "id": 135504807, + "labels": ["feature"], + "number": 3055, + "title": "Allow onPreResponse to override response and execute other extensions", + "url": "https://github.com/hapijs/hapi/issues/3055" + }, + { + "id": 129103622, + "labels": ["bug"], + "number": 3030, + "title": "Server stop timeout and multiple connections", + "url": "https://github.com/hapijs/hapi/issues/3030" + } + ], + "number": 198, + "url": "https://github.com/hapijs/hapi/milestone/198", + "version": "15.0.0" + }, + { + "date": "2016-08-13T20:39:06Z", + "id": 1916644, + "issues": [ + { + "id": 171026349, + "labels": ["feature"], + "number": 3286, + "title": "Support unmodified early return", + "url": "https://github.com/hapijs/hapi/issues/3286" + } + ], + "number": 197, + "url": "https://github.com/hapijs/hapi/milestone/197", + "version": "14.2.0" + }, + { + "date": "2016-08-01T19:28:29Z", + "id": 1916643, + "issues": [ + { + "id": 168722351, + "labels": ["feature"], + "number": 3277, + "title": "Route config function", + "url": "https://github.com/hapijs/hapi/issues/3277" + } + ], + "number": 196, + "url": "https://github.com/hapijs/hapi/milestone/196", + "version": "14.1.0" + }, + { + "date": "2016-08-01T19:27:27Z", + "id": 1910700, + "issues": [ + { + "id": 168385267, + "labels": ["breaking changes", "release notes"], + "number": 3272, + "title": "14.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/3272" + }, + { + "id": 168308207, + "labels": ["breaking changes"], + "number": 3271, + "title": "hapi 13.5.1 (and 13.5.2) break if routes still use joi 8.x", + "url": "https://github.com/hapijs/hapi/issues/3271" + } + ], + "number": 195, + "url": "https://github.com/hapijs/hapi/milestone/195", + "version": "14.0.0" + }, + { + "date": "2016-07-29T18:17:51Z", + "id": 1910699, + "issues": [ + { + "id": 168182788, + "labels": ["dependency"], + "number": 3249, + "title": "Update hapijs/catbox to 7.1.2 from 7.1.1", + "url": "https://github.com/hapijs/hapi/issues/3249" + } + ], + "number": 194, + "url": "https://github.com/hapijs/hapi/milestone/194", + "version": "13.5.2" + }, + { + "date": "2016-07-28T23:17:15Z", + "id": 1910404, + "issues": [ + { + "id": 168184876, + "labels": ["dependency"], + "number": 3270, + "title": "Update hapijs/topo to 2.0.2 from 2.0.1", + "url": "https://github.com/hapijs/hapi/issues/3270" + }, + { + "id": 168184787, + "labels": ["dependency"], + "number": 3269, + "title": "Update hapijs/wreck to 8.0.1 from 7.2.1", + "url": "https://github.com/hapijs/hapi/issues/3269" + }, + { + "id": 168184674, + "labels": ["dependency"], + "number": 3268, + "title": "Update hapijs/vise to 2.0.2 from 2.0.1", + "url": "https://github.com/hapijs/hapi/issues/3268" + }, + { + "id": 168184584, + "labels": ["dependency"], + "number": 3267, + "title": "Update hapijs/nigel to 2.0.2 from 2.0.1", + "url": "https://github.com/hapijs/hapi/issues/3267" + }, + { + "id": 168184512, + "labels": ["dependency"], + "number": 3266, + "title": "Update hapijs/b64 to 3.0.2 from 3.0.1", + "url": "https://github.com/hapijs/hapi/issues/3266" + }, + { + "id": 168184465, + "labels": ["dependency"], + "number": 3265, + "title": "Update hapijs/pez to 2.1.2 from 2.1.1", + "url": "https://github.com/hapijs/hapi/issues/3265" + }, + { + "id": 168184349, + "labels": ["dependency"], + "number": 3264, + "title": "Update hapijs/context to 3.0.2 from 3.0.1", + "url": "https://github.com/hapijs/hapi/issues/3264" + }, + { + "id": 168184269, + "labels": ["dependency"], + "number": 3263, + "title": "Update hapijs/subtext to 4.0.5 from 4.0.3", + "url": "https://github.com/hapijs/hapi/issues/3263" + }, + { + "id": 168184163, + "labels": ["dependency"], + "number": 3262, + "title": "Update hapijs/statehood to 4.0.3 from 4.0.1", + "url": "https://github.com/hapijs/hapi/issues/3262" + }, + { + "id": 168184094, + "labels": ["dependency"], + "number": 3261, + "title": "Update hapijs/shot to 3.1.1 from 3.1.0", + "url": "https://github.com/hapijs/hapi/issues/3261" + }, + { + "id": 168183996, + "labels": ["dependency"], + "number": 3260, + "title": "Update hapijs/peekaboo to 2.0.2 from 2.0.1", + "url": "https://github.com/hapijs/hapi/issues/3260" + }, + { + "id": 168183851, + "labels": ["dependency"], + "number": 3259, + "title": "Update hapijs/mimos to 3.0.3 from 3.0.2", + "url": "https://github.com/hapijs/hapi/issues/3259" + }, + { + "id": 168183763, + "labels": ["dependency"], + "number": 3258, + "title": "Update hapijs/kilt to 2.0.2 from 2.0.1", + "url": "https://github.com/hapijs/hapi/issues/3258" + }, + { + "id": 168183678, + "labels": ["dependency"], + "number": 3257, + "title": "Update moment/moment to 2.14.1 from 2.13.0", + "url": "https://github.com/hapijs/hapi/issues/3257" + }, + { + "id": 168183553, + "labels": ["dependency"], + "number": 3256, + "title": "Update hapijs/isemail to 2.2.1 from 2.1.0", + "url": "https://github.com/hapijs/hapi/issues/3256" + }, + { + "id": 168183445, + "labels": ["dependency"], + "number": 3255, + "title": "Update hapijs/joi to 9.0.4 from 8.1.0", + "url": "https://github.com/hapijs/hapi/issues/3255" + }, + { + "id": 168183340, + "labels": ["dependency"], + "number": 3254, + "title": "Update hapijs/items to 2.1.1 from 2.1.0", + "url": "https://github.com/hapijs/hapi/issues/3254" + }, + { + "id": 168183225, + "labels": ["dependency"], + "number": 3253, + "title": "Update hueniverse/iron to 4.0.2 from 4.0.1", + "url": "https://github.com/hapijs/hapi/issues/3253" + }, + { + "id": 168183082, + "labels": ["dependency"], + "number": 3252, + "title": "Update hapijs/heavy to 4.0.2 from 4.0.1", + "url": "https://github.com/hapijs/hapi/issues/3252" + }, + { + "id": 168183002, + "labels": ["dependency"], + "number": 3251, + "title": "Update hapijs/cryptiles to 3.0.2 from 3.0.1", + "url": "https://github.com/hapijs/hapi/issues/3251" + }, + { + "id": 168182917, + "labels": ["dependency"], + "number": 3250, + "title": "Update hapijs/catbox-memory to 2.0.3 from 2.0.2", + "url": "https://github.com/hapijs/hapi/issues/3250" + }, + { + "id": 168182692, + "labels": ["dependency"], + "number": 3248, + "title": "Update hapijs/call to 3.0.3 from 3.0.2", + "url": "https://github.com/hapijs/hapi/issues/3248" + }, + { + "id": 168182625, + "labels": ["dependency"], + "number": 3247, + "title": "Update hapijs/ammo to 2.0.2 from 2.0.1", + "url": "https://github.com/hapijs/hapi/issues/3247" + }, + { + "id": 168182523, + "labels": ["dependency"], + "number": 3246, + "title": "Update hapijs/hoek to 4.0.2 from 4.0.0", + "url": "https://github.com/hapijs/hapi/issues/3246" + }, + { + "id": 168182429, + "labels": ["dependency"], + "number": 3245, + "title": "Update hapijs/boom to 3.2.2 from 3.2.0", + "url": "https://github.com/hapijs/hapi/issues/3245" + }, + { + "id": 168182244, + "labels": ["dependency"], + "number": 3244, + "title": "Update hapijs/accept to 2.1.2 from 2.1.1", + "url": "https://github.com/hapijs/hapi/issues/3244" + } + ], "number": 193, - "title": "Support for gzip'd payloads", - "url": "https://github.com/hapijs/hapi/issues/193" - }, - { - "id": 7727527, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/193", + "version": "13.5.1" + }, + { + "date": "2016-07-28T19:56:22Z", + "id": 1862406, + "issues": [ + { + "id": 160271984, + "labels": ["feature"], + "number": 3206, + "title": "override default cache headers for error pages", + "url": "https://github.com/hapijs/hapi/issues/3206" + }, + { + "id": 156502887, + "labels": ["bug"], + "number": 3178, + "title": "Handle thrown error from res.setHeader() and res.writeHead()", + "url": "https://github.com/hapijs/hapi/pull/3178" + }, + { + "id": 156093564, + "labels": ["bug"], + "number": 3174, + "title": "Fixes #3155 - Calling reply without a payload on a JSONP route throws", + "url": "https://github.com/hapijs/hapi/pull/3174" + } + ], + "number": 192, + "url": "https://github.com/hapijs/hapi/milestone/192", + "version": "13.5.0" + }, + { + "date": "2016-07-04T04:35:18Z", + "id": 1780146, + "issues": [ + { + "id": 163600854, + "labels": ["bug", "security", "dependency"], + "number": 3228, + "title": "Update hapijs/call to 3.0.2 from 3.0.1", + "url": "https://github.com/hapijs/hapi/issues/3228" + }, + { + "id": 161700227, + "labels": ["dependency"], + "number": 3216, + "title": "Update hapijs/shot to 3.1.0 from 3.0.1", + "url": "https://github.com/hapijs/hapi/pull/3216" + } + ], + "number": 191, + "url": "https://github.com/hapijs/hapi/milestone/191", + "version": "13.4.2" + }, + { + "date": "2016-05-21T08:11:27Z", + "id": 1753303, + "issues": [ + { + "id": 156089290, + "labels": ["dependency"], + "number": 3173, + "title": "Update hapijs/nigel to 2.0.1 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/3173" + }, + { + "id": 156089279, + "labels": ["dependency"], + "number": 3172, + "title": "Update hapijs/b64 to 3.0.1 from 3.0.0", + "url": "https://github.com/hapijs/hapi/issues/3172" + }, + { + "id": 156089257, + "labels": ["dependency"], + "number": 3171, + "title": "Update hapijs/pez to 2.1.1 from 2.1.0", + "url": "https://github.com/hapijs/hapi/issues/3171" + }, + { + "id": 156089239, + "labels": ["dependency"], + "number": 3170, + "title": "Update hapijs/subtext to 4.0.3 from 4.0.1", + "url": "https://github.com/hapijs/hapi/issues/3170" + }, + { + "id": 156089225, + "labels": ["dependency"], + "number": 3169, + "title": "Update hapijs/statehood to 4.0.1 from 4.0.0", + "url": "https://github.com/hapijs/hapi/issues/3169" + }, + { + "id": 156089211, + "labels": ["dependency"], + "number": 3168, + "title": "Update hapijs/peekaboo to 2.0.1 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/3168" + }, + { + "id": 156089199, + "labels": ["dependency"], + "number": 3167, + "title": "Update hapijs/mimos to 3.0.1 from 3.0.0", + "url": "https://github.com/hapijs/hapi/issues/3167" + }, + { + "id": 156089193, + "labels": ["dependency"], + "number": 3166, + "title": "Update hapijs/kilt to 2.0.1 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/3166" + }, + { + "id": 156089176, + "labels": ["dependency"], + "number": 3165, + "title": "Update hapijs/isemail to 2.1.0 from 2.1.2", + "url": "https://github.com/hapijs/hapi/issues/3165" + }, + { + "id": 156089157, + "labels": ["dependency"], + "number": 3164, + "title": "Update hueniverse/iron to 4.0.1 from 4.0.0", + "url": "https://github.com/hapijs/hapi/issues/3164" + }, + { + "id": 156089142, + "labels": ["dependency"], + "number": 3163, + "title": "Update hapijs/cryptiles to 3.0.1 from 3.0.0", + "url": "https://github.com/hapijs/hapi/issues/3163" + }, + { + "id": 156089121, + "labels": ["dependency"], + "number": 3162, + "title": "Update hapijs/catbox-memory to 2.0.2 from 2.0.1", + "url": "https://github.com/hapijs/hapi/issues/3162" + }, + { + "id": 156089090, + "labels": ["dependency"], + "number": 3161, + "title": "Update hapijs/catbox to 7.1.1 from 7.1.0", + "url": "https://github.com/hapijs/hapi/issues/3161" + }, + { + "id": 156089061, + "labels": ["dependency"], + "number": 3160, + "title": "Update hapijs/call to 3.0.1 from 3.0.0", + "url": "https://github.com/hapijs/hapi/issues/3160" + }, + { + "id": 156088876, + "labels": ["dependency"], + "number": 3159, + "title": "Update hapijs/boom to 3.2.0 from 3.1.3", + "url": "https://github.com/hapijs/hapi/issues/3159" + }, + { + "id": 156088858, + "labels": ["dependency"], + "number": 3158, + "title": "Update hapijs/ammo to 2.0.1 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/3158" + }, + { + "id": 156088845, + "labels": ["dependency"], + "number": 3157, + "title": "Update hapijs/topo to 2.0.1 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/3157" + }, + { + "id": 156088827, + "labels": ["dependency"], + "number": 3156, + "title": "Update hapijs/wreck to 7.2.1 from 7.2.0", + "url": "https://github.com/hapijs/hapi/issues/3156" + }, + { + "id": 148100717, + "labels": ["feature"], + "number": 3121, + "title": "allow array as valid validate config on headers, params, query and payload", + "url": "https://github.com/hapijs/hapi/pull/3121" + }, + { + "id": 148001200, + "labels": ["feature"], + "number": 3119, + "title": "Support [] as payload validation", + "url": "https://github.com/hapijs/hapi/issues/3119" + } + ], + "number": 190, + "url": "https://github.com/hapijs/hapi/milestone/190", + "version": "13.4.1" + }, + { + "date": "2016-05-07T21:32:48Z", + "id": 1679575, + "issues": [ + { + "id": 153618859, + "labels": ["feature", "bug", "breaking changes"], + "number": 3147, + "title": "Pass original validation error if boom", + "url": "https://github.com/hapijs/hapi/issues/3147" + }, + { + "id": 153618464, + "labels": ["dependency"], + "number": 3146, + "title": "Update hapijs/wreck to 7.2.0 from 7.0.2", + "url": "https://github.com/hapijs/hapi/issues/3146" + }, + { + "id": 153618437, + "labels": ["dependency"], + "number": 3145, + "title": "Update hapijs/vise to 2.0.1 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/3145" + }, + { + "id": 153618419, + "labels": ["dependency"], + "number": 3144, + "title": "Update hapijs/content to 3.0.1 from 3.0.0", + "url": "https://github.com/hapijs/hapi/issues/3144" + }, + { + "id": 153618384, + "labels": ["dependency"], + "number": 3143, + "title": "Update jshttp/mime-db to 1.23.0 from 1.22.0", + "url": "https://github.com/hapijs/hapi/issues/3143" + }, + { + "id": 153618178, + "labels": ["dependency"], + "number": 3142, + "title": "Update moment/moment to 2.13.0 from 2.12.0", + "url": "https://github.com/hapijs/hapi/issues/3142" + }, + { + "id": 153618159, + "labels": ["dependency"], + "number": 3141, + "title": "Update hapijs/joi to 8.1.0 from 8.0.4", + "url": "https://github.com/hapijs/hapi/issues/3141" + }, + { + "id": 153618141, + "labels": ["dependency"], + "number": 3140, + "title": "Update hapijs/items to 2.1.0 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/3140" + }, + { + "id": 153618126, + "labels": ["dependency"], + "number": 3139, + "title": "Update hapijs/hoek to 4.0.0 from 3.0.4", + "url": "https://github.com/hapijs/hapi/issues/3139" + }, + { + "id": 153618105, + "labels": ["dependency"], + "number": 3138, + "title": "Update hapijs/heavy to 4.0.1 from 4.0.0", + "url": "https://github.com/hapijs/hapi/issues/3138" + }, + { + "id": 153618081, + "labels": ["dependency"], + "number": 3137, + "title": "Update hapijs/boom to 3.1.3 from 3.1.2", + "url": "https://github.com/hapijs/hapi/issues/3137" + }, + { + "id": 153618067, + "labels": ["dependency"], + "number": 3136, + "title": "Update hapijs/accept to 2.1.1 from 2.1.0", + "url": "https://github.com/hapijs/hapi/issues/3136" + }, + { + "id": 147199065, + "labels": ["dependency"], + "number": 3115, + "title": "Update hapijs/pez to 2.1.0 from 2.0.1", + "url": "https://github.com/hapijs/hapi/issues/3115" + }, + { + "id": 146348008, + "labels": ["bug", "dependency"], + "number": 3111, + "title": "Update hapijs/subtext to 4.0.1 from 4.0.0", + "url": "https://github.com/hapijs/hapi/pull/3111" + } + ], + "number": 189, + "url": "https://github.com/hapijs/hapi/milestone/189", + "version": "13.4.0" + }, + { + "date": "2016-04-02T17:18:49Z", + "id": 1666080, + "issues": [ + { + "id": 145395363, + "labels": ["feature"], + "number": 3107, + "title": "Permit validation on any payload type", + "url": "https://github.com/hapijs/hapi/issues/3107" + }, + { + "id": 137267350, + "labels": ["feature"], + "number": 3068, + "title": "Fast server shutdown", + "url": "https://github.com/hapijs/hapi/pull/3068" + } + ], + "number": 188, + "url": "https://github.com/hapijs/hapi/milestone/188", + "version": "13.3.0" + }, + { + "date": "2016-03-25T16:51:18Z", + "id": 1666078, + "issues": [ + { + "id": 143538580, + "labels": ["bug"], + "number": 3101, + "title": "Auth entity error reports the wrong credential type used", + "url": "https://github.com/hapijs/hapi/issues/3101" + } + ], + "number": 187, + "url": "https://github.com/hapijs/hapi/milestone/187", + "version": "13.2.2" + }, + { + "date": "2016-03-25T16:43:10Z", + "id": 1635402, + "issues": [ + { + "id": 131063558, + "labels": ["feature"], + "number": 3044, + "title": "Enable disabling cache-control headers", + "url": "https://github.com/hapijs/hapi/pull/3044" + }, + { + "id": 122633649, + "labels": ["bug"], + "number": 2979, + "title": "`.charset(charset)` doesn't work on its own in ext", + "url": "https://github.com/hapijs/hapi/issues/2979" + } + ], + "number": 186, + "url": "https://github.com/hapijs/hapi/milestone/186", + "version": "13.2.1" + }, + { + "date": "2016-03-10T01:53:28Z", + "id": 1564333, + "issues": [ + { + "id": 139723649, + "labels": ["feature"], + "number": 3083, + "title": "Allow provisioning server cache after construction", + "url": "https://github.com/hapijs/hapi/issues/3083" + }, + { + "id": 139723496, + "labels": ["dependency"], + "number": 3082, + "title": "Update hapijs/wreck to 7.0.2 from 7.0.0", + "url": "https://github.com/hapijs/hapi/issues/3082" + }, + { + "id": 139723341, + "labels": ["dependency"], + "number": 3081, + "title": "Update hapijs/shot to 3.0.1 from 3.0.0", + "url": "https://github.com/hapijs/hapi/issues/3081" + }, + { + "id": 139723147, + "labels": ["dependency"], + "number": 3080, + "title": "Update jshttp/mime-db to 1.22.0 from 1.20.0", + "url": "https://github.com/hapijs/hapi/issues/3080" + }, + { + "id": 139722884, + "labels": ["dependency"], + "number": 3079, + "title": "Update moment/momemt to 2.12.0 from 2.11.0", + "url": "https://github.com/hapijs/hapi/issues/3079" + }, + { + "id": 139722723, + "labels": ["dependency"], + "number": 3078, + "title": "Update hapijs/joi to 8.0.4 from 7.1.0", + "url": "https://github.com/hapijs/hapi/issues/3078" + }, + { + "id": 139722569, + "labels": ["dependency"], + "number": 3077, + "title": "Update hapijs/boom to 3.1.2 from 3.1.1", + "url": "https://github.com/hapijs/hapi/issues/3077" + }, + { + "id": 137329220, + "labels": ["bug"], + "number": 3069, + "title": "Pass through cookie options when calling reply.unstate()", + "url": "https://github.com/hapijs/hapi/pull/3069" + }, + { + "id": 136197188, + "labels": ["bug"], + "number": 3057, + "title": "Don't re-initialize the server", + "url": "https://github.com/hapijs/hapi/pull/3057" + }, + { + "id": 130755559, + "labels": ["non issue", "security"], + "number": 3042, + "title": "Moment - Regular Expression Denial of Service", + "url": "https://github.com/hapijs/hapi/issues/3042" + }, + { + "id": 125309195, + "labels": ["feature"], + "number": 3015, + "title": "Can not change/remove the \"accept-ranges\" response header", + "url": "https://github.com/hapijs/hapi/issues/3015" + }, + { + "id": 125245673, + "labels": ["feature"], + "number": 3014, + "title": "Update JSON response stringify for better performance", + "url": "https://github.com/hapijs/hapi/pull/3014" + } + ], + "number": 185, + "url": "https://github.com/hapijs/hapi/milestone/185", + "version": "13.1.0" + }, + { + "date": "2016-02-01T08:16:27Z", + "id": 1495069, + "issues": [ + { + "id": 130294603, + "labels": ["breaking changes", "release notes"], + "number": 3040, + "title": "13.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/3040" + }, + { + "id": 130289386, + "labels": ["breaking changes", "security", "dependency"], + "number": 3039, + "title": "Update hueniverse/iron to 4.0.0 from 3.0.1", + "url": "https://github.com/hapijs/hapi/issues/3039" + }, + { + "id": 130289321, + "labels": ["breaking changes", "security", "dependency"], + "number": 3038, + "title": "Update hapijs/statehood to 4.0.0 from 3.1.0", + "url": "https://github.com/hapijs/hapi/issues/3038" + } + ], + "number": 184, + "url": "https://github.com/hapijs/hapi/milestone/184", + "version": "13.0.0" + }, + { + "date": "2016-01-09T22:38:10Z", + "id": 1488188, + "issues": [ + { + "id": 125784871, + "labels": ["feature"], + "number": 3018, + "title": "Allow auth strategies to expose an api", + "url": "https://github.com/hapijs/hapi/issues/3018" + } + ], "number": 183, - "title": "Cache segment validation", - "url": "https://github.com/hapijs/hapi/pull/183" - }, - { - "id": 7584601, - "labels": ["test"], + "url": "https://github.com/hapijs/hapi/milestone/183", + "version": "12.1.0" + }, + { + "date": "2016-01-06T19:33:18Z", + "id": 1483703, + "issues": [ + { + "id": 125155762, + "labels": ["bug"], + "number": 3013, + "title": "Fix hapijs/shot dependency", + "url": "https://github.com/hapijs/hapi/pull/3013" + } + ], + "number": 182, + "url": "https://github.com/hapijs/hapi/milestone/182", + "version": "12.0.1" + }, + { + "date": "2016-01-04T23:11:35Z", + "id": 1423406, + "issues": [ + { + "id": 124852839, + "labels": ["feature", "dependency"], + "number": 3012, + "title": "Update hapijs/catbox to 7.1.0 from 7.0.0", + "url": "https://github.com/hapijs/hapi/issues/3012" + }, + { + "id": 124845116, + "labels": ["breaking changes", "dependency"], + "number": 3011, + "title": "Update hapijs/shot to 3.0.0 from 2.0.1", + "url": "https://github.com/hapijs/hapi/issues/3011" + }, + { + "id": 124844975, + "labels": ["dependency"], + "number": 3010, + "title": "Update jshttp/mime-db to 1.20.0 from 1.19.0", + "url": "https://github.com/hapijs/hapi/issues/3010" + }, + { + "id": 124843527, + "labels": ["dependency"], + "number": 3009, + "title": "Update moment/moment to 2.11.0 from 2.10.6", + "url": "https://github.com/hapijs/hapi/issues/3009" + }, + { + "id": 124843392, + "labels": ["dependency"], + "number": 3008, + "title": "Update hapijs/isemail to 2.1.0 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/3008" + }, + { + "id": 124843177, + "labels": ["dependency"], + "number": 3007, + "title": "Update hapijs/joi to 7.1.0 from 7.0.0", + "url": "https://github.com/hapijs/hapi/issues/3007" + }, + { + "id": 124842936, + "labels": ["dependency"], + "number": 3006, + "title": "Update hapijs/hoek to 3.0.4 from 3.0.0", + "url": "https://github.com/hapijs/hapi/issues/3006" + }, + { + "id": 124841916, + "labels": ["dependency"], + "number": 3005, + "title": "Update hapijs/boom to 3.1.1 from 3.0.0", + "url": "https://github.com/hapijs/hapi/issues/3005" + }, + { + "id": 124841723, + "labels": ["dependency"], + "number": 3004, + "title": "Update hapijs/accept to 2.1.0 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/3004" + }, + { + "id": 124604629, + "labels": ["non issue"], + "number": 3002, + "title": "Remove request.session and request.auth.session placeholders", + "url": "https://github.com/hapijs/hapi/issues/3002" + }, + { + "id": 124603001, + "labels": ["feature", "dependency"], + "number": 3001, + "title": "Update hapijs/statehood to 3.1.0 from 3.0.0", + "url": "https://github.com/hapijs/hapi/issues/3001" + }, + { + "id": 124577102, + "labels": ["feature"], + "number": 3000, + "title": "Return a promise when callback missing", + "url": "https://github.com/hapijs/hapi/issues/3000" + }, + { + "id": 124556958, + "labels": ["feature", "breaking changes"], + "number": 2999, + "title": "Support required scope with + prefix", + "url": "https://github.com/hapijs/hapi/issues/2999" + }, + { + "id": 124518280, + "labels": ["feature"], + "number": 2998, + "title": "Support multiple access combinations per route", + "url": "https://github.com/hapijs/hapi/issues/2998" + }, + { + "id": 124313835, + "labels": ["bug"], + "number": 2994, + "title": "Dynamic scope does not work with auth.default()", + "url": "https://github.com/hapijs/hapi/issues/2994" + }, + { + "id": 124313647, + "labels": ["feature", "breaking changes"], + "number": 2993, + "title": "Support forbidden scope with ! prefix", + "url": "https://github.com/hapijs/hapi/issues/2993" + }, + { + "id": 124313599, + "labels": ["breaking changes"], + "number": 2992, + "title": "Normalize auth scope and entity settings under new access option", + "url": "https://github.com/hapijs/hapi/issues/2992" + }, + { + "id": 123728171, + "labels": ["bug", "security"], + "number": 2988, + "title": "Handle invalid date exceptions", + "url": "https://github.com/hapijs/hapi/pull/2988" + }, + { + "id": 123629325, + "labels": ["breaking changes", "release notes"], + "number": 2985, + "title": "12.0.0. Release Notes", + "url": "https://github.com/hapijs/hapi/issues/2985" + }, + { + "id": 123564355, + "labels": ["breaking changes", "dependency"], + "number": 2983, + "title": "Update hapijs/subtext to 4.0.0 from 3.0.1", + "url": "https://github.com/hapijs/hapi/issues/2983" + }, + { + "id": 121891986, + "labels": ["feature"], + "number": 2972, + "title": "Add validation check for stripUnknown route response option", + "url": "https://github.com/hapijs/hapi/pull/2972" + }, + { + "id": 120815588, + "labels": ["bug"], + "number": 2966, + "title": "request.raw.res.end() method is called twice", + "url": "https://github.com/hapijs/hapi/issues/2966" + }, + { + "id": 118796372, + "labels": ["non issue"], + "number": 2957, + "title": "nameless cookie causing hapi fail parsing", + "url": "https://github.com/hapijs/hapi/issues/2957" + }, + { + "id": 115923407, + "labels": ["feature"], + "number": 2936, + "title": "Expose origin matching status", + "url": "https://github.com/hapijs/hapi/issues/2936" + }, + { + "id": 114167275, + "labels": ["feature"], + "number": 2886, + "title": "Add entire auth object to validation context options", + "url": "https://github.com/hapijs/hapi/issues/2886" + } + ], + "number": 178, + "url": "https://github.com/hapijs/hapi/milestone/178", + "version": "12.0.0" + }, + { + "date": "2015-12-27T16:17:35Z", + "id": 1475150, + "issues": [ + { + "id": 123984863, + "labels": ["bug", "security"], + "number": 2990, + "title": "Fix cors config cascade. Closes #2980", + "url": "https://github.com/hapijs/hapi/pull/2990" + }, + { + "id": 122668898, + "labels": ["bug", "security"], + "number": 2980, + "title": "Route level CORS config overrides connection level defaults", + "url": "https://github.com/hapijs/hapi/issues/2980" + } + ], + "number": 181, + "url": "https://github.com/hapijs/hapi/milestone/181", + "version": "11.1.4" + }, + { + "date": "2015-12-24T00:43:18Z", + "id": 1473085, + "issues": [ + { + "id": 123727987, + "labels": ["bug", "security"], + "number": 2987, + "title": "Catch invalid date exceptions", + "url": "https://github.com/hapijs/hapi/issues/2987" + } + ], + "number": 179, + "url": "https://github.com/hapijs/hapi/milestone/179", + "version": "11.1.3" + }, + { + "date": "2015-11-21T22:30:55Z", + "id": 1411759, + "issues": [ + { + "id": 118219559, + "labels": ["test"], + "number": 2953, + "title": "Tests for issue #2950", + "url": "https://github.com/hapijs/hapi/pull/2953" + }, + { + "id": 118161087, + "labels": ["bug"], + "number": 2950, + "title": "Access-Control-Expose-Headers response header duplicate values ", + "url": "https://github.com/hapijs/hapi/issues/2950" + }, + { + "id": 116403240, + "labels": ["bug"], + "number": 2940, + "title": "Fails to set a global route auth config", + "url": "https://github.com/hapijs/hapi/pull/2940" + } + ], + "number": 177, + "url": "https://github.com/hapijs/hapi/milestone/177", + "version": "11.1.2" + }, + { + "date": "2015-11-14T17:39:16Z", + "id": 1395261, + "issues": [ + { + "id": 116932359, + "labels": ["bug", "dependency"], + "number": 2944, + "title": "Update hapijs/subtext to 3.0.1 from 3.0.0", + "url": "https://github.com/hapijs/hapi/pull/2944" + }, + { + "id": 115263434, + "labels": ["bug"], + "number": 2931, + "title": "Lookup route during OPTIONS by using request.info.hostname. Closes #2930", + "url": "https://github.com/hapijs/hapi/pull/2931" + }, + { + "id": 115260451, + "labels": ["bug"], + "number": 2930, + "title": "Route not correctly looked up during CORS OPTIONS request when using vhost", + "url": "https://github.com/hapijs/hapi/issues/2930" + } + ], + "number": 176, + "url": "https://github.com/hapijs/hapi/milestone/176", + "version": "11.1.1" + }, + { + "date": "2015-11-05T08:51:24Z", + "id": 1392202, + "issues": [ + { + "id": 115221209, + "labels": ["feature"], + "number": 2929, + "title": "Allow setting request app and plugins via inject", + "url": "https://github.com/hapijs/hapi/issues/2929" + }, + { + "id": 115216373, + "labels": ["feature"], + "number": 2928, + "title": "Support per-request decoration", + "url": "https://github.com/hapijs/hapi/issues/2928" + } + ], + "number": 174, + "url": "https://github.com/hapijs/hapi/milestone/174", + "version": "11.1.0" + }, + { + "date": "2015-11-03T20:54:21Z", + "id": 1390578, + "issues": [ + { + "id": 114610278, + "labels": ["bug"], + "number": 2894, + "title": "CORS headers to include 'Origin'", + "url": "https://github.com/hapijs/hapi/issues/2894" + } + ], + "number": 173, + "url": "https://github.com/hapijs/hapi/milestone/173", + "version": "11.0.5" + }, + { + "date": "2015-11-03T08:12:18Z", + "id": 1384735, + "issues": [ + { + "id": 114760296, + "labels": ["dependency"], + "number": 2923, + "title": "Update hapijs/vise to 2.0.0 from 1.0.0", + "url": "https://github.com/hapijs/hapi/issues/2923" + }, + { + "id": 114760200, + "labels": ["dependency"], + "number": 2922, + "title": "Update hapijs/nigel to 2.0.0 from 1.0.1", + "url": "https://github.com/hapijs/hapi/issues/2922" + }, + { + "id": 114760081, + "labels": ["dependency"], + "number": 2921, + "title": "Update hapijs/pez to 2.0.1 from 1.0.0", + "url": "https://github.com/hapijs/hapi/issues/2921" + }, + { + "id": 114759999, + "labels": ["dependency"], + "number": 2920, + "title": "Update hapijs/context to 3.0.0 from 1.0.2", + "url": "https://github.com/hapijs/hapi/issues/2920" + }, + { + "id": 114759907, + "labels": ["dependency"], + "number": 2919, + "title": "Update hapijs/subtext to 3.0.0 from 2.0.2", + "url": "https://github.com/hapijs/hapi/issues/2919" + }, + { + "id": 114759862, + "labels": ["dependency"], + "number": 2918, + "title": "Update hapijs/statehood to 3.0.0 from 2.1.1", + "url": "https://github.com/hapijs/hapi/issues/2918" + }, + { + "id": 114759798, + "labels": ["dependency"], + "number": 2917, + "title": "Update hapijs/shot to 2.0.1 from 1.7.0", + "url": "https://github.com/hapijs/hapi/issues/2917" + }, + { + "id": 114759643, + "labels": ["dependency"], + "number": 2916, + "title": "Update hapijs/qs to 6.0.0 from 5.2.0", + "url": "https://github.com/hapijs/hapi/issues/2916" + }, + { + "id": 114759385, + "labels": ["dependency"], + "number": 2915, + "title": "Update hapijs/peekaboo to 2.0.0 from 1.0.0", + "url": "https://github.com/hapijs/hapi/issues/2915" + }, + { + "id": 114759246, + "labels": ["dependency"], + "number": 2914, + "title": "Update hapijs/mimos to 3.0.0 from 2.0.2", + "url": "https://github.com/hapijs/hapi/issues/2914" + }, + { + "id": 114758883, + "labels": ["dependency"], + "number": 2913, + "title": "Update hapijs/kilt to 2.0.0 from 1.1.1", + "url": "https://github.com/hapijs/hapi/issues/2913" + }, + { + "id": 114758616, + "labels": ["dependency"], + "number": 2912, + "title": "Update hueniverse/iron to 3.0.1 from 2.1.3", + "url": "https://github.com/hapijs/hapi/issues/2912" + }, + { + "id": 114757672, + "labels": ["dependency"], + "number": 2911, + "title": "Update hapijs/heavy to 4.0.0 from 3.0.1", + "url": "https://github.com/hapijs/hapi/issues/2911" + }, + { + "id": 114757364, + "labels": ["dependency"], + "number": 2910, + "title": "Update hapijs/cryptiles to 3.0.0 from 2.0.5", + "url": "https://github.com/hapijs/hapi/issues/2910" + }, + { + "id": 114756825, + "labels": ["dependency"], + "number": 2909, + "title": "Update hapijs/catbox-memory to 2.0.1 from 1.1.2", + "url": "https://github.com/hapijs/hapi/issues/2909" + }, + { + "id": 114756404, + "labels": ["dependency"], + "number": 2908, + "title": "Update hapijs/isemail to 2.0.0 from 1.2.0", + "url": "https://github.com/hapijs/hapi/issues/2908" + }, + { + "id": 114755963, + "labels": ["dependency"], + "number": 2907, + "title": "Update hapijs/topo to 2.0.0 from 1.1.0", + "url": "https://github.com/hapijs/hapi/issues/2907" + }, + { + "id": 114755754, + "labels": ["dependency"], + "number": 2906, + "title": "Update hapijs/joi to 7.0.0 from 6.8.1", + "url": "https://github.com/hapijs/hapi/issues/2906" + }, + { + "id": 114755517, + "labels": ["dependency"], + "number": 2905, + "title": "Update hapijs/catbox to 7.0.0 from 6.0.0", + "url": "https://github.com/hapijs/hapi/issues/2905" + }, + { + "id": 114754604, + "labels": ["dependency"], + "number": 2904, + "title": "Update hapijs/call to 3.0.0 from 2.0.2", + "url": "https://github.com/hapijs/hapi/issues/2904" + }, + { + "id": 114754547, + "labels": ["dependency"], + "number": 2903, + "title": "Update hapijs/ammo to 2.0.0 from 1.0.1", + "url": "https://github.com/hapijs/hapi/issues/2903" + }, + { + "id": 114754439, + "labels": ["dependency"], + "number": 2902, + "title": "Update hapijs/accept to 2.0.0 from 1.1.0", + "url": "https://github.com/hapijs/hapi/issues/2902" + }, + { + "id": 114754324, + "labels": ["dependency"], + "number": 2901, + "title": "Update hapijs/wreck to 7.0.0 from 6.2.0", + "url": "https://github.com/hapijs/hapi/issues/2901" + }, + { + "id": 114754261, + "labels": ["dependency"], + "number": 2900, + "title": "Update hapijs/b64 to 3.0.0 from 2.0.1", + "url": "https://github.com/hapijs/hapi/issues/2900" + }, + { + "id": 114754198, + "labels": ["dependency"], + "number": 2899, + "title": "Update hapijs/items to 2.0.0 from 1.1.0", + "url": "https://github.com/hapijs/hapi/issues/2899" + }, + { + "id": 114754124, + "labels": ["dependency"], + "number": 2898, + "title": "Update hapijs/boom to 3.0.0 from 2.9.0", + "url": "https://github.com/hapijs/hapi/issues/2898" + }, + { + "id": 114751064, + "labels": ["dependency"], + "number": 2897, + "title": "Update hapijs/hoek to 3.0.1 from 2.16.3", + "url": "https://github.com/hapijs/hapi/issues/2897" + } + ], "number": 172, - "title": "Check if Redis and MongoDB are ready before running tests", - "url": "https://github.com/hapijs/hapi/issues/172" - }, - { - "id": 7473975, - "labels": ["feature"], - "number": 165, - "title": "Add route response validation to endpoint documentation", - "url": "https://github.com/hapijs/hapi/issues/165" - }, - { - "id": 7470363, - "labels": ["feature"], + "url": "https://github.com/hapijs/hapi/milestone/172", + "version": "11.0.4" + }, + { + "date": "2015-10-30T06:09:57Z", + "id": 1368524, + "issues": [ + { + "id": 113952338, + "labels": ["dependency"], + "number": 2885, + "title": "Update hapijs/subtext to 2.0.2 from 2.0.1", + "url": "https://github.com/hapijs/hapi/pull/2885" + }, + { + "id": 113098683, + "labels": ["feature"], + "number": 2877, + "title": "Replace all functions inside functions with arrow functions", + "url": "https://github.com/hapijs/hapi/issues/2877" + }, + { + "id": 113080106, + "labels": ["feature"], + "number": 2875, + "title": "Style change: replace for(i, il) with length in test", + "url": "https://github.com/hapijs/hapi/issues/2875" + }, + { + "id": 113073973, + "labels": ["feature"], + "number": 2874, + "title": "Replace var with let", + "url": "https://github.com/hapijs/hapi/issues/2874" + }, + { + "id": 113059185, + "labels": ["feature", "breaking changes"], + "number": 2873, + "title": "Use const where possible", + "url": "https://github.com/hapijs/hapi/issues/2873" + }, + { + "id": 113057968, + "labels": ["feature"], + "number": 2872, + "title": "Add strict mode", + "url": "https://github.com/hapijs/hapi/issues/2872" + }, + { + "id": 112982911, + "labels": ["bug"], + "number": 2870, + "title": "Fix empty content-length handling for gzip and 204 responses", + "url": "https://github.com/hapijs/hapi/pull/2870" + }, + { + "id": 112942201, + "labels": ["bug"], + "number": 2869, + "title": "Gzip compression is skipped when content-length is unknown", + "url": "https://github.com/hapijs/hapi/issues/2869" + }, + { + "id": 112775815, + "labels": ["bug"], + "number": 2868, + "title": "CORS: Is 404 on OPTIONS request the right thing to do?", + "url": "https://github.com/hapijs/hapi/issues/2868" + }, + { + "id": 112622113, + "labels": ["bug", "breaking changes", "security"], + "number": 2867, + "title": "Skip extensions for notFound and badRequest", + "url": "https://github.com/hapijs/hapi/issues/2867" + }, + { + "id": 112309946, + "labels": ["dependency"], + "number": 2862, + "title": "Update hapijs/subtext to 2.0.2 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/2862" + } + ], + "number": 171, + "url": "https://github.com/hapijs/hapi/milestone/171", + "version": "11.0.3" + }, + { + "date": "2015-10-21T15:42:18Z", + "id": 1365472, + "issues": [ + { + "id": 112612570, + "labels": ["bug"], + "number": 2866, + "title": "Fixed an issue with mixed-case headers not being matched correctly in CORS", + "url": "https://github.com/hapijs/hapi/pull/2866" + }, + { + "id": 111950613, + "labels": ["bug"], + "number": 2852, + "title": "request.params undefined when route not found", + "url": "https://github.com/hapijs/hapi/issues/2852" + } + ], + "number": 170, + "url": "https://github.com/hapijs/hapi/milestone/170", + "version": "11.0.2" + }, + { + "date": "2015-10-20T04:48:16Z", + "id": 1360091, + "issues": [ + { + "id": 112222285, + "labels": ["feature"], + "number": 2859, + "title": "Add error messages to 404's caused by cors closes #2857", + "url": "https://github.com/hapijs/hapi/pull/2859" + }, + { + "id": 112218941, + "labels": ["feature", "breaking changes", "security"], + "number": 2858, + "title": "Add 'Accept' to default header per #2855", + "url": "https://github.com/hapijs/hapi/pull/2858" + } + ], + "number": 169, + "url": "https://github.com/hapijs/hapi/milestone/169", + "version": "11.0.1" + }, + { + "date": "2015-10-16T19:32:53Z", + "id": 1357601, + "issues": [ + { + "id": 111895000, + "labels": ["breaking changes", "release notes"], + "number": 2850, + "title": "11.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/2850" + }, + { + "id": 111888075, + "labels": ["breaking changes"], + "number": 2849, + "title": "Add 204 to statuses cached by default", + "url": "https://github.com/hapijs/hapi/issues/2849" + }, + { + "id": 111878987, + "labels": ["feature"], + "number": 2848, + "title": "Allow response validation of non-objects", + "url": "https://github.com/hapijs/hapi/issues/2848" + }, + { + "id": 111772823, + "labels": ["breaking changes", "dependency"], + "number": 2847, + "title": "Update hapijs/qs to 5.2.0 from 4.0.0", + "url": "https://github.com/hapijs/hapi/issues/2847" + }, + { + "id": 111710906, + "labels": ["feature"], + "number": 2845, + "title": "Allow empty response to default to 204", + "url": "https://github.com/hapijs/hapi/issues/2845" + }, + { + "id": 111349802, + "labels": ["bug", "breaking changes", "security"], + "number": 2840, + "title": "CORS route-specific override can conflict with connection defaults", + "url": "https://github.com/hapijs/hapi/issues/2840" + }, + { + "id": 109596360, + "labels": ["breaking changes"], + "number": 2814, + "title": "Remove server.after()", + "url": "https://github.com/hapijs/hapi/issues/2814" + }, + { + "id": 109563464, + "labels": ["bug", "breaking changes"], + "number": 2807, + "title": "Remove id from request received event", + "url": "https://github.com/hapijs/hapi/issues/2807" + } + ], + "number": 168, + "url": "https://github.com/hapijs/hapi/milestone/168", + "version": "11.0.0" + }, + { + "date": "2015-10-15T16:01:43Z", + "id": 1345034, + "issues": [ + { + "id": 111647969, + "labels": ["feature"], + "number": 2844, + "title": "Server new route event", + "url": "https://github.com/hapijs/hapi/issues/2844" + }, + { + "id": 109910428, + "labels": ["feature"], + "number": 2829, + "title": "Expanded `registrations` API. Added test. Updated docs.", + "url": "https://github.com/hapijs/hapi/pull/2829" + }, + { + "id": 66507485, + "labels": ["bug", "breaking changes", "security"], + "number": 2491, + "title": "CORS pre-fetch not respecting per-route config", + "url": "https://github.com/hapijs/hapi/issues/2491" + } + ], + "number": 167, + "url": "https://github.com/hapijs/hapi/milestone/167", + "version": "10.5.0" + }, + { + "date": "2015-10-08T16:05:56Z", + "id": 1339928, + "issues": [ + { + "id": 110397884, + "labels": ["dependency", "lts"], + "number": 2836, + "title": "Update hapijs/heavy to 3.0.1 from 3.0.0", + "url": "https://github.com/hapijs/hapi/issues/2836" + } + ], "number": 164, - "title": "Server helpers, initial response validation, Mongo support", - "url": "https://github.com/hapijs/hapi/pull/164" - } - ], - "number": 2, - "url": "https://github.com/hapijs/hapi/milestone/2", - "version": "0.8.0" - }, - { - "date": "2012-08-31T20:51:36Z", - "id": 168468, - "issues": [ - { - "id": 6588577, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/164", + "version": "10.4.1" + }, + { + "date": "2015-10-06T09:26:00Z", + "id": 1336465, + "issues": [ + { + "id": 109899885, + "labels": ["bug", "dependency"], + "number": 2828, + "title": "Update hapijs/shot to 1.7.0 from 1.6.1", + "url": "https://github.com/hapijs/hapi/issues/2828" + }, + { + "id": 109848355, + "labels": ["feature"], + "number": 2827, + "title": "Enhance server.ext() to accept an array of event objects", + "url": "https://github.com/hapijs/hapi/issues/2827" + }, + { + "id": 109734129, + "labels": ["dependency"], + "number": 2826, + "title": "Update hapijs/topo to 1.1.0 from 1.0.3", + "url": "https://github.com/hapijs/hapi/issues/2826" + }, + { + "id": 109725277, + "labels": ["bug"], + "number": 2824, + "title": "request.info.host - Host header wrong in server.inject", + "url": "https://github.com/hapijs/hapi/issues/2824" + }, + { + "id": 109662171, + "labels": ["feature"], + "number": 2823, + "title": "Skip empty extension points in request lifecycle", + "url": "https://github.com/hapijs/hapi/issues/2823" + }, + { + "id": 109658608, + "labels": ["bug"], + "number": 2822, + "title": "Plugin schema too restrictive", + "url": "https://github.com/hapijs/hapi/issues/2822" + }, + { + "id": 109654417, + "labels": ["feature", "breaking changes"], + "number": 2819, + "title": "Replace single connection server decorations with assertions", + "url": "https://github.com/hapijs/hapi/issues/2819" + }, + { + "id": 109653456, + "labels": ["feature"], + "number": 2818, + "title": "Support plugin level once attribute", + "url": "https://github.com/hapijs/hapi/issues/2818" + }, + { + "id": 81468481, + "labels": ["feature"], + "number": 2566, + "title": "Lifecycle hooks on routes", + "url": "https://github.com/hapijs/hapi/issues/2566" + } + ], + "number": 163, + "url": "https://github.com/hapijs/hapi/milestone/163", + "version": "10.4.0" + }, + { + "date": "2015-10-04T00:04:55Z", + "id": 1336333, + "issues": [ + { + "id": 105004067, + "labels": ["feature"], + "number": 2754, + "title": "Add connections inside a plugin", + "url": "https://github.com/hapijs/hapi/issues/2754" + } + ], + "number": 162, + "url": "https://github.com/hapijs/hapi/milestone/162", + "version": "10.3.0" + }, + { + "date": "2015-10-03T19:33:29Z", + "id": 1335943, + "issues": [ + { + "id": 109639990, + "labels": ["bug"], + "number": 2817, + "title": "Multiple connectionless plugin exceptions", + "url": "https://github.com/hapijs/hapi/issues/2817" + } + ], + "number": 161, + "url": "https://github.com/hapijs/hapi/milestone/161", + "version": "10.2.1" + }, + { + "date": "2015-10-03T06:23:10Z", + "id": 1324063, + "issues": [ + { + "id": 109605517, + "labels": ["feature"], + "number": 2815, + "title": "Cleanup after() options", + "url": "https://github.com/hapijs/hapi/issues/2815" + }, + { + "id": 109592800, + "labels": ["bug", "breaking changes"], + "number": 2813, + "title": "Update server root methods when adding 2nd connection", + "url": "https://github.com/hapijs/hapi/issues/2813" + }, + { + "id": 109585522, + "labels": ["bug"], + "number": 2812, + "title": "Prevent adding server extensions once initialize() is called", + "url": "https://github.com/hapijs/hapi/issues/2812" + }, + { + "id": 109580498, + "labels": ["feature"], + "number": 2811, + "title": "Support connectionless plugins", + "url": "https://github.com/hapijs/hapi/issues/2811" + }, + { + "id": 109579528, + "labels": ["bug", "breaking changes"], + "number": 2809, + "title": "Return plugin dependency errors via callback instead of throwing", + "url": "https://github.com/hapijs/hapi/issues/2809" + }, + { + "id": 109567520, + "labels": ["bug", "breaking changes"], + "number": 2808, + "title": "Pass start() and initialize() errors via callback, not throw", + "url": "https://github.com/hapijs/hapi/issues/2808" + }, + { + "id": 109536616, + "labels": ["dependency"], + "number": 2806, + "title": "Update hapijs/isemail to 1.2.0 from 1.1.1 ", + "url": "https://github.com/hapijs/hapi/issues/2806" + }, + { + "id": 109536447, + "labels": ["dependency"], + "number": 2805, + "title": "Update hapijs/joi to 6.8.0 from 6.6.1 ", + "url": "https://github.com/hapijs/hapi/issues/2805" + }, + { + "id": 109390569, + "labels": ["bug"], + "number": 2804, + "title": "Apply arguments schema more consistently", + "url": "https://github.com/hapijs/hapi/issues/2804" + }, + { + "id": 108776180, + "labels": ["bug"], + "number": 2796, + "title": "don't duplicate accept-encoding in vary header", + "url": "https://github.com/hapijs/hapi/pull/2796" + }, + { + "id": 108523100, + "labels": ["feature"], + "number": 2790, + "title": "Add cache stats to server methods", + "url": "https://github.com/hapijs/hapi/pull/2790" + }, + { + "id": 108348479, + "labels": ["feature"], + "number": 2788, + "title": "Option to turn off domains", + "url": "https://github.com/hapijs/hapi/issues/2788" + }, + { + "id": 107538197, + "labels": ["feature"], + "number": 2777, + "title": "Public API for Registered Plugins", + "url": "https://github.com/hapijs/hapi/issues/2777" + }, + { + "id": 107274674, + "labels": ["security"], + "number": 2773, + "title": "Detects and rejects malformed response headers", + "url": "https://github.com/hapijs/hapi/pull/2773" + }, + { + "id": 105919629, + "labels": ["feature"], + "number": 2763, + "title": "get cache stats for a server method?", + "url": "https://github.com/hapijs/hapi/issues/2763" + }, + { + "id": 105451911, + "labels": ["feature"], + "number": 2761, + "title": "Conditional register() for skipping already registered plugins", + "url": "https://github.com/hapijs/hapi/issues/2761" + }, + { + "id": 102993662, + "labels": ["bug", "breaking changes"], + "number": 2736, + "title": "Stopping the server while starting it", + "url": "https://github.com/hapijs/hapi/issues/2736" + }, + { + "id": 102854190, + "labels": ["feature"], + "number": 2733, + "title": "CORS Headers", + "url": "https://github.com/hapijs/hapi/issues/2733" + }, + { + "id": 54491702, + "labels": ["bug"], + "number": 2352, + "title": "setting undefined headers on transmit", + "url": "https://github.com/hapijs/hapi/issues/2352" + }, + { + "id": 39939287, + "labels": ["feature"], + "number": 1850, + "title": "Set per-plugin registration options when registering an array of plugins", + "url": "https://github.com/hapijs/hapi/issues/1850" + } + ], + "number": 160, + "url": "https://github.com/hapijs/hapi/milestone/160", + "version": "10.2.0" + }, + { + "date": "2015-09-25T15:35:28Z", + "id": 1319597, + "issues": [ + { + "id": 108346050, + "labels": ["dependency"], + "number": 2787, + "title": "Update hapijs/wreck to 6.2.0 from 6.1.0", + "url": "https://github.com/hapijs/hapi/issues/2787" + }, + { + "id": 108345879, + "labels": ["dependency"], + "number": 2786, + "title": "Update hapijs/b64 to 2.0.1 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/2786" + }, + { + "id": 108345655, + "labels": ["dependency"], + "number": 2785, + "title": "Update hapijs/shot to 1.6.1 from 1.6.0", + "url": "https://github.com/hapijs/hapi/issues/2785" + }, + { + "id": 108345509, + "labels": ["dependency"], + "number": 2784, + "title": "Update jshttp/mime-db to 1.19.0 from 1.18.0", + "url": "https://github.com/hapijs/hapi/issues/2784" + }, + { + "id": 108345218, + "labels": ["dependency"], + "number": 2783, + "title": "Update hapijs/hoek to 2.16.3 from 2.14.0", + "url": "https://github.com/hapijs/hapi/issues/2783" + }, + { + "id": 108345087, + "labels": ["dependency"], + "number": 2782, + "title": "Update hapijs/cryptiles to 2.0.5 from 2.0.4", + "url": "https://github.com/hapijs/hapi/issues/2782" + }, + { + "id": 107424279, + "labels": ["feature", "security"], + "number": 2776, + "title": "Add preload flag to HSTS header and fix casing for includeSubDomains.", + "url": "https://github.com/hapijs/hapi/pull/2776" + }, + { + "id": 68786718, + "labels": ["bug"], + "number": 2505, + "title": "request.state occasionally null", + "url": "https://github.com/hapijs/hapi/issues/2505" + } + ], + "number": 159, + "url": "https://github.com/hapijs/hapi/milestone/159", + "version": "10.1.0" + }, + { + "date": "2015-09-23T01:24:00Z", + "id": 1319596, + "issues": [ + { + "id": 107832242, + "labels": ["test"], + "number": 2779, + "title": "Flaky test? \"Request does not return an error when server is responding when the timeout occurs\"", + "url": "https://github.com/hapijs/hapi/issues/2779" + } + ], + "number": 158, + "url": "https://github.com/hapijs/hapi/milestone/158", + "version": "10.0.1" + }, + { + "date": "2015-09-23T01:23:00Z", + "id": 1301714, + "issues": [ + { + "id": 106091253, + "labels": ["breaking changes", "lts"], + "number": 2765, + "title": "node v4", + "url": "https://github.com/hapijs/hapi/issues/2765" + }, + { + "id": 106091022, + "labels": ["breaking changes", "release notes"], + "number": 2764, + "title": "10.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/2764" + } + ], + "number": 157, + "url": "https://github.com/hapijs/hapi/milestone/157", + "version": "10.0.0" + }, + { + "date": "2015-12-24T00:45:09Z", + "id": 1473187, + "issues": [ + { + "id": 123740749, + "labels": ["bug", "security", "lts"], + "number": 2989, + "title": "Handle Date parsing error", + "url": "https://github.com/hapijs/hapi/issues/2989" + } + ], + "number": 180, + "url": "https://github.com/hapijs/hapi/milestone/180", + "version": "9.5.1" + }, + { + "date": "2015-11-05T08:50:39Z", + "id": 1395240, + "issues": [], + "number": 175, + "url": "https://github.com/hapijs/hapi/milestone/175", + "version": "9.5.0" + }, + { + "date": "2015-10-07T23:31:32Z", + "id": 1343625, + "issues": [ + { + "id": 110340067, + "labels": ["bug", "lts"], + "number": 2835, + "title": "hapi-lts requiring node 4 and no updates to hapi 9?", + "url": "https://github.com/hapijs/hapi/issues/2835" + } + ], + "number": 166, + "url": "https://github.com/hapijs/hapi/milestone/166", + "version": "9.4.1" + }, + { + "date": "2015-10-07T22:49:37Z", + "id": 1343586, + "issues": [ + { + "id": 110333753, + "labels": ["lts"], + "number": 2834, + "title": "9.4.0 LTS", + "url": "https://github.com/hapijs/hapi/issues/2834" + } + ], + "number": 165, + "url": "https://github.com/hapijs/hapi/milestone/165", + "version": "9.4.0" + }, + { + "date": "2015-09-11T20:25:13Z", + "id": 1292639, + "issues": [ + { + "id": 105276989, + "labels": ["bug"], + "number": 2760, + "title": "Decorators fail with nested require calls", + "url": "https://github.com/hapijs/hapi/issues/2760" + } + ], + "number": 156, + "url": "https://github.com/hapijs/hapi/milestone/156", + "version": "9.3.1" + }, + { + "date": "2015-09-06T17:34:29Z", + "id": 1292638, + "issues": [ + { + "id": 105105830, + "labels": ["feature", "bug", "breaking changes", "security"], + "number": 2757, + "title": "Require allowInternals option on server.inject() to call isInternal routes", + "url": "https://github.com/hapijs/hapi/issues/2757" + } + ], + "number": 155, + "url": "https://github.com/hapijs/hapi/milestone/155", + "version": "9.3.0" + }, + { + "date": "2015-09-06T17:34:00Z", + "id": 1289549, + "issues": [ + { + "id": 105034268, + "labels": ["feature"], + "number": 2756, + "title": "Expose route active authentication configuration", + "url": "https://github.com/hapijs/hapi/issues/2756" + }, + { + "id": 105034242, + "labels": ["dependency"], + "number": 2755, + "title": "Update jshttp/mime-db to 1.18.0 from 1.17.0", + "url": "https://github.com/hapijs/hapi/issues/2755" + } + ], + "number": 154, + "url": "https://github.com/hapijs/hapi/milestone/154", + "version": "9.2.0" + }, + { + "date": "2015-09-04T05:34:40Z", + "id": 1285726, + "issues": [ + { + "id": 104832979, + "labels": ["feature"], + "number": 2750, + "title": "Route config for internal access only routes", + "url": "https://github.com/hapijs/hapi/issues/2750" + } + ], + "number": 153, + "url": "https://github.com/hapijs/hapi/milestone/153", + "version": "9.1.0" + }, + { + "date": "2015-09-02T07:51:22Z", + "id": 1262833, + "issues": [ + { + "id": 103281896, + "labels": ["bug"], + "number": 2739, + "title": "Updated error when calling server.start with no callback", + "url": "https://github.com/hapijs/hapi/pull/2739" + }, + { + "id": 102016723, + "labels": ["bug"], + "number": 2727, + "title": "Decorations not propagated to sibling plugins", + "url": "https://github.com/hapijs/hapi/issues/2727" + } + ], + "number": 152, + "url": "https://github.com/hapijs/hapi/milestone/152", + "version": "9.0.4" + }, + { + "date": "2015-08-19T15:53:34Z", + "id": 1256635, + "issues": [ + { + "id": 101772248, + "labels": ["dependency"], + "number": 2725, + "title": "Update hapijs/catbox-memory to 1.1.2 from 1.1.1", + "url": "https://github.com/hapijs/hapi/pull/2725" + }, + { + "id": 101402917, + "labels": ["bug"], + "number": 2723, + "title": "Tape and server.inject problem", + "url": "https://github.com/hapijs/hapi/issues/2723" + } + ], + "number": 151, + "url": "https://github.com/hapijs/hapi/milestone/151", + "version": "9.0.3" + }, + { + "date": "2015-08-15T23:50:22Z", + "id": 1253819, + "issues": [ + { + "id": 101220104, + "labels": ["dependency"], + "number": 2717, + "title": "Update jshttp/mime-db to 1.17.0 from 1.16.0", + "url": "https://github.com/hapijs/hapi/issues/2717" + }, + { + "id": 101201861, + "labels": ["bug"], + "number": 2714, + "title": "Setting server method cache generateTimeout to false results in error", + "url": "https://github.com/hapijs/hapi/issues/2714" + } + ], + "number": 150, + "url": "https://github.com/hapijs/hapi/milestone/150", + "version": "9.0.2" + }, + { + "date": "2015-08-13T15:39:16Z", + "id": 1251164, + "issues": [ + { + "id": 100490784, + "labels": ["bug", "dependency"], + "number": 2699, + "title": "npm install hapi misses wreck sub-dependency", + "url": "https://github.com/hapijs/hapi/issues/2699" + } + ], + "number": 149, + "url": "https://github.com/hapijs/hapi/milestone/149", + "version": "9.0.1" + }, + { + "date": "2015-08-12T06:49:23Z", + "id": 1126542, + "issues": [ + { + "id": 101235807, + "labels": ["breaking changes"], + "number": 2718, + "title": "Breaking change with query string validation from 8.6.0 to 9.0.2", + "url": "https://github.com/hapijs/hapi/issues/2718" + }, + { + "id": 100467354, + "labels": ["dependency"], + "number": 2698, + "title": "Update hapijs/content to 1.0.2 from 1.0.1", + "url": "https://github.com/hapijs/hapi/issues/2698" + }, + { + "id": 100465222, + "labels": ["dependency"], + "number": 2697, + "title": "Update moment/moment to 2.10.6 from 2.10.3", + "url": "https://github.com/hapijs/hapi/issues/2697" + }, + { + "id": 100464886, + "labels": ["dependency"], + "number": 2696, + "title": "Update hapijs/joi to 6.6.1 from 6.4.1", + "url": "https://github.com/hapijs/hapi/issues/2696" + }, + { + "id": 100464713, + "labels": ["dependency"], + "number": 2695, + "title": "Update hueniverse/iron to 2.1.3 from 2.1.2", + "url": "https://github.com/hapijs/hapi/issues/2695" + }, + { + "id": 100463964, + "labels": ["dependency"], + "number": 2694, + "title": "Update hapijs/call to 2.0.2 from 2.0.1", + "url": "https://github.com/hapijs/hapi/issues/2694" + }, + { + "id": 100463530, + "labels": ["dependency"], + "number": 2693, + "title": "Update hapijs/boom to 2.8.0 from 2.7.2", + "url": "https://github.com/hapijs/hapi/issues/2693" + }, + { + "id": 100462830, + "labels": ["dependency"], + "number": 2692, + "title": "Update hapijs/ammo to 1.0.1 from 1.0.0", + "url": "https://github.com/hapijs/hapi/issues/2692" + }, + { + "id": 100462301, + "labels": ["dependency"], + "number": 2691, + "title": "Update hapijs/accept to 1.1.0 from 1.0.0", + "url": "https://github.com/hapijs/hapi/issues/2691" + }, + { + "id": 100418484, + "labels": ["breaking changes", "dependency"], + "number": 2689, + "title": "Update hapijs/subtext from 1.1.1 to 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/2689" + }, + { + "id": 100369673, + "labels": ["feature"], + "number": 2688, + "title": "Add server.initialize()", + "url": "https://github.com/hapijs/hapi/issues/2688" + }, + { + "id": 100232801, + "labels": ["feature"], + "number": 2687, + "title": "Set plugin options in realm", + "url": "https://github.com/hapijs/hapi/issues/2687" + }, + { + "id": 100220759, + "labels": ["feature", "breaking changes"], + "number": 2686, + "title": "Require callback in start() and end()", + "url": "https://github.com/hapijs/hapi/issues/2686" + }, + { + "id": 100199053, + "labels": ["feature"], + "number": 2685, + "title": "Allow server.ext() to extend server actions (start, stop)", + "url": "https://github.com/hapijs/hapi/issues/2685" + }, + { + "id": 99942812, + "labels": ["feature", "bug", "breaking changes", "dependency"], + "number": 2684, + "title": "Update hapijs/catbox to 6.0.0 from 4.3.0", + "url": "https://github.com/hapijs/hapi/issues/2684" + }, + { + "id": 99779392, + "labels": ["dependency"], + "number": 2683, + "title": "Update jshttp/mime-db to 1.16.0 from 1.14.0", + "url": "https://github.com/hapijs/hapi/issues/2683" + }, + { + "id": 99737710, + "labels": ["breaking changes", "release notes"], + "number": 2682, + "title": "9.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/2682" + }, + { + "id": 99732968, + "labels": ["breaking changes"], + "number": 2681, + "title": "Remove server files settings", + "url": "https://github.com/hapijs/hapi/issues/2681" + }, + { + "id": 98911158, + "labels": ["feature", "dependency"], + "number": 2675, + "title": "Update hapijs/shot to 1.6.0 from 1.5.3", + "url": "https://github.com/hapijs/hapi/pull/2675" + }, + { + "id": 98808932, + "labels": ["bug"], + "number": 2673, + "title": "304 response sends: no-cache regardless of routes.cache settings", + "url": "https://github.com/hapijs/hapi/issues/2673" + }, + { + "id": 97497114, + "labels": ["bug", "dependency"], + "number": 2665, + "title": "Server breaks when using cached server method", + "url": "https://github.com/hapijs/hapi/issues/2665" + }, + { + "id": 97204252, + "labels": ["feature"], + "number": 2662, + "title": "Added schema validation when creating a server method using object", + "url": "https://github.com/hapijs/hapi/pull/2662" + }, + { + "id": 97076551, + "labels": ["bug"], + "number": 2661, + "title": "No longer removing response validation from route object if sample = 0", + "url": "https://github.com/hapijs/hapi/pull/2661" + }, + { + "id": 95034917, + "labels": ["bug", "test"], + "number": 2645, + "title": "Add failing test for #2628", + "url": "https://github.com/hapijs/hapi/pull/2645" + }, + { + "id": 94562977, + "labels": ["bug"], + "number": 2641, + "title": "Vary accept-encoding header not always set for compressible content", + "url": "https://github.com/hapijs/hapi/issues/2641" + }, + { + "id": 92992095, + "labels": ["bug"], + "number": 2628, + "title": "Multiple etag problems with directory handler causing browser use outdated cached content.", + "url": "https://github.com/hapijs/hapi/issues/2628" + }, + { + "id": 92941994, + "labels": ["breaking changes"], + "number": 2626, + "title": "Remove inert, h2o2, and vision from core", + "url": "https://github.com/hapijs/hapi/issues/2626" + }, + { + "id": 90664257, + "labels": ["bug"], + "number": 2616, + "title": "Strange behaviour with throw in handlers", + "url": "https://github.com/hapijs/hapi/issues/2616" + }, + { + "id": 83363351, + "labels": ["bug", "breaking changes"], + "number": 2576, + "title": "Parsing requests with no payload", + "url": "https://github.com/hapijs/hapi/issues/2576" + }, + { + "id": 72320100, + "labels": ["feature"], + "number": 2520, + "title": "API wart: server.dependency after method lacks options", + "url": "https://github.com/hapijs/hapi/issues/2520" + }, + { + "id": 71450574, + "labels": ["feature"], + "number": 2517, + "title": "Means to force plugin registration to complete prior to server.inject", + "url": "https://github.com/hapijs/hapi/issues/2517" + }, + { + "id": 71441703, + "labels": ["feature", "breaking changes"], + "number": 2516, + "title": "Assert when server.start() is called before server.register() is done", + "url": "https://github.com/hapijs/hapi/issues/2516" + }, + { + "id": 60278126, + "labels": ["feature"], + "number": 2449, + "title": "Isn't there any api document to disable compression? (gzip)", + "url": "https://github.com/hapijs/hapi/issues/2449" + }, + { + "id": 58999614, + "labels": ["feature"], + "number": 2432, + "title": "TLS certificate errors are not surfaced in logs", + "url": "https://github.com/hapijs/hapi/issues/2432" + }, + { + "id": 56528486, + "labels": ["feature"], + "number": 2389, + "title": "Support plugin shutdown", + "url": "https://github.com/hapijs/hapi/issues/2389" + } + ], + "number": 141, + "url": "https://github.com/hapijs/hapi/milestone/141", + "version": "9.0.0" + }, + { + "date": "2015-07-29T19:31:38Z", + "id": 1192829, + "issues": [ + { + "id": 97996340, + "labels": ["dependency"], + "number": 2671, + "title": "Update hapijs/topo to 1.0.3 from 1.0.2", + "url": "https://github.com/hapijs/hapi/pull/2671" + }, + { + "id": 97992798, + "labels": ["bug", "dependency"], + "number": 2670, + "title": "Update hapijs/topo to 1.0.3 from 1.0.2", + "url": "https://github.com/hapijs/hapi/issues/2670" + }, + { + "id": 97375667, + "labels": ["feature"], + "number": 2664, + "title": "allow for proto inherit with Server (\"instanceof\" instead of \"===\")", + "url": "https://github.com/hapijs/hapi/pull/2664" + }, + { + "id": 97327263, + "labels": ["feature"], + "number": 2663, + "title": "internals.Server does not allow proto inheritance", + "url": "https://github.com/hapijs/hapi/issues/2663" + }, + { + "id": 96690187, + "labels": ["bug"], + "number": 2657, + "title": "`server.ext` dependencies not ordered using `before` as array", + "url": "https://github.com/hapijs/hapi/issues/2657" + }, + { + "id": 94588937, + "labels": ["bug"], + "number": 2642, + "title": "Failing test for `server.ext` with complex deps.", + "url": "https://github.com/hapijs/hapi/pull/2642" + }, + { + "id": 93261965, + "labels": ["bug", "dependency"], + "number": 2631, + "title": "Update hapijs/inert to 2.1.6 from 2.1.5", + "url": "https://github.com/hapijs/hapi/pull/2631" + } + ], + "number": 148, + "url": "https://github.com/hapijs/hapi/milestone/148", + "version": "8.8.1" + }, + { + "date": "2015-07-03T22:44:44Z", + "id": 1152830, + "issues": [ + { + "id": 92945318, + "labels": ["dependency"], + "number": 2627, + "title": "Update hapijs/subtext to 1.1.1 from 1.1.0", + "url": "https://github.com/hapijs/hapi/issues/2627" + }, + { + "id": 92473191, + "labels": ["bug", "dependency"], + "number": 2625, + "title": "Update hapijs/wreck to 6.0.0 from 5.5.1", + "url": "https://github.com/hapijs/hapi/issues/2625" + }, + { + "id": 92276209, + "labels": ["dependency"], + "number": 2623, + "title": "Update hapijs/qs to 4.0.0 from 2.4.2", + "url": "https://github.com/hapijs/hapi/issues/2623" + }, + { + "id": 92272665, + "labels": ["feature", "dependency"], + "number": 2622, + "title": "Support qs options in payload and query parsing", + "url": "https://github.com/hapijs/hapi/issues/2622" + }, + { + "id": 89970898, + "labels": ["dependency"], + "number": 2613, + "title": "Update jshttp/mime-db to 1.14.0 from 1.11.0", + "url": "https://github.com/hapijs/hapi/issues/2613" + }, + { + "id": 89970808, + "labels": ["dependency"], + "number": 2612, + "title": "Update hapijs/vision to 2.0.1 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/2612" + }, + { + "id": 63827787, + "labels": ["feature"], + "number": 2480, + "title": "Ability to pass options to qs for payload parsing", + "url": "https://github.com/hapijs/hapi/issues/2480" + } + ], + "number": 147, + "url": "https://github.com/hapijs/hapi/milestone/147", + "version": "8.8.0" + }, + { + "date": "2015-06-06T17:06:45Z", + "id": 1151052, + "issues": [ + { + "id": 85780956, + "labels": ["feature", "dependency"], + "number": 2587, + "title": "Update hapijs/catbox to 4.3.0 from 4.2.2", + "url": "https://github.com/hapijs/hapi/issues/2587" + } + ], + "number": 146, + "url": "https://github.com/hapijs/hapi/milestone/146", + "version": "8.7.0" + }, + { + "date": "2015-06-05T12:17:42Z", + "id": 1140647, + "issues": [ + { + "id": 85153332, + "labels": ["bug", "breaking changes", "dependency"], + "number": 2586, + "title": "Update hapijs/shot to 1.5.1 from 1.5.0", + "url": "https://github.com/hapijs/hapi/issues/2586" + }, + { + "id": 85137921, + "labels": ["dependency"], + "number": 2584, + "title": "Update jshttp/mime-db to 1.11.0 from 1.10.0", + "url": "https://github.com/hapijs/hapi/issues/2584" + }, + { + "id": 85116420, + "labels": ["dependency"], + "number": 2583, + "title": "Update hapijs/statehood to 2.1.1 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/2583" + } + ], + "number": 145, + "url": "https://github.com/hapijs/hapi/milestone/145", + "version": "8.6.1" + }, + { + "date": "2015-05-29T20:14:00Z", + "id": 1139241, + "issues": [ + { + "id": 82541853, + "labels": ["feature"], + "number": 2573, + "title": "allow returning a response object inside a promise", + "url": "https://github.com/hapijs/hapi/pull/2573" + }, + { + "id": 81939726, + "labels": ["bug"], + "number": 2570, + "title": "Added \"error\" event listener", + "url": "https://github.com/hapijs/hapi/pull/2570" + } + ], + "number": 144, + "url": "https://github.com/hapijs/hapi/milestone/144", + "version": "8.6.0" + }, + { + "date": "2015-05-29T05:55:48Z", + "id": 1135214, + "issues": [ + { + "id": 82278310, + "labels": ["dependency"], + "number": 2571, + "title": "Update hapijs/h2o2 to 4.0.1 from 4.0.0", + "url": "https://github.com/hapijs/hapi/issues/2571" + }, + { + "id": 81888292, + "labels": ["bug"], + "number": 2569, + "title": "Make sure auth filter passes on request auth artifacts when injecting, too", + "url": "https://github.com/hapijs/hapi/pull/2569" + } + ], + "number": 143, + "url": "https://github.com/hapijs/hapi/milestone/143", + "version": "8.5.3" + }, + { + "date": "2015-05-27T05:52:50Z", + "id": 1135208, + "issues": [ + { + "id": 81292296, + "labels": ["bug"], + "number": 2564, + "title": "Auth error log should not report missing or try as error", + "url": "https://github.com/hapijs/hapi/issues/2564" + } + ], + "number": 142, + "url": "https://github.com/hapijs/hapi/milestone/142", + "version": "8.5.2" + }, + { + "date": "2015-05-22T21:54:40Z", + "id": 1123913, + "issues": [ + { + "id": 79617597, + "labels": ["bug"], + "number": 2555, + "title": "fix dynamic scopes", + "url": "https://github.com/hapijs/hapi/pull/2555" + }, + { + "id": 79558045, + "labels": ["bug"], + "number": 2554, + "title": "Dynamic scope uses undefined request.payload", + "url": "https://github.com/hapijs/hapi/issues/2554" + }, + { + "id": 79557448, + "labels": ["dependency"], + "number": 2553, + "title": "Update hapijs/hoek to 2.14.0 from 2.13.0", + "url": "https://github.com/hapijs/hapi/issues/2553" + } + ], + "number": 140, + "url": "https://github.com/hapijs/hapi/milestone/140", + "version": "8.5.1" + }, + { + "date": "2015-05-21T19:23:31Z", + "id": 1040584, + "issues": [ + { + "id": 79080914, + "labels": ["dependency"], + "number": 2552, + "title": "Update hapijs/wreck to 5.5.1 from 5.2.0", + "url": "https://github.com/hapijs/hapi/issues/2552" + }, + { + "id": 79079509, + "labels": ["dependency"], + "number": 2551, + "title": "Update jshttp/mime-db to 1.10.0 from 1.9.1", + "url": "https://github.com/hapijs/hapi/issues/2551" + }, + { + "id": 79078963, + "labels": ["dependency"], + "number": 2550, + "title": "Update moment/moment to 2.10.3 from 2.9.0", + "url": "https://github.com/hapijs/hapi/issues/2550" + }, + { + "id": 79078635, + "labels": ["dependency"], + "number": 2549, + "title": "Update hapijs/joi to 6.4.1 from 6.0.8", + "url": "https://github.com/hapijs/hapi/issues/2549" + }, + { + "id": 79077911, + "labels": ["dependency"], + "number": 2548, + "title": "Update hapijs/hoek to 2.13.0 from 2.11.1", + "url": "https://github.com/hapijs/hapi/issues/2548" + }, + { + "id": 79076858, + "labels": ["dependency"], + "number": 2547, + "title": "Update hapijs/boom to 2.7.2 from 2.6.1", + "url": "https://github.com/hapijs/hapi/issues/2547" + }, + { + "id": 79072171, + "labels": ["dependency"], + "number": 2546, + "title": "Update hapijs/inert to 2.1.5 from 2.1.4", + "url": "https://github.com/hapijs/hapi/issues/2546" + }, + { + "id": 79067222, + "labels": ["dependency"], + "number": 2545, + "title": "Update isaacs/node-lru-cache to 2.6.4 from 2.5.0", + "url": "https://github.com/hapijs/hapi/issues/2545" + }, + { + "id": 78916577, + "labels": ["bug"], + "number": 2544, + "title": "Retain content-length header for HEAD requests", + "url": "https://github.com/hapijs/hapi/pull/2544" + }, + { + "id": 77496678, + "labels": ["feature"], + "number": 2538, + "title": "closes #2480: Ability to pass options to qs for payload parsing", + "url": "https://github.com/hapijs/hapi/pull/2538" + }, + { + "id": 75749024, + "labels": ["feature"], + "number": 2532, + "title": "Dynamic authentication scopes", + "url": "https://github.com/hapijs/hapi/pull/2532" + }, + { + "id": 69665809, + "labels": ["dependency"], + "number": 2509, + "title": "Update jshttp/mime-db to 1.9.1 from 1.7.0", + "url": "https://github.com/hapijs/hapi/issues/2509" + }, + { + "id": 68490149, + "labels": ["bug", "dependency"], + "number": 2503, + "title": "Update hapijs/shot to 1.5.0 from 1.4.2", + "url": "https://github.com/hapijs/hapi/issues/2503" + }, + { + "id": 68341549, + "labels": ["feature"], + "number": 2502, + "title": "Fix Hapi Issue #2501, pass on auth artifacts object in server.inject", + "url": "https://github.com/hapijs/hapi/pull/2502" + }, + { + "id": 68340363, + "labels": ["feature"], + "number": 2501, + "title": "server.inject does not allow me to set auth artifacts, only auth credentials", + "url": "https://github.com/hapijs/hapi/issues/2501" + }, + { + "id": 64394834, + "labels": ["feature"], + "number": 2481, + "title": "Feature: server.decorate('request' ... )", + "url": "https://github.com/hapijs/hapi/issues/2481" + }, + { + "id": 61641701, + "labels": ["security", "dependency"], + "number": 2472, + "title": "Update hapijs/qs to 2.4.2 from 2.4.0", + "url": "https://github.com/hapijs/hapi/issues/2472" + } + ], + "number": 139, + "url": "https://github.com/hapijs/hapi/milestone/139", + "version": "8.5.0" + }, + { + "date": "2015-03-26T19:06:18Z", + "id": 1015940, + "issues": [ + { + "id": 61175879, + "labels": ["bug"], + "number": 2470, + "title": "JSONP requests not always returning wrapped response", + "url": "https://github.com/hapijs/hapi/issues/2470" + }, + { + "id": 61157560, + "labels": ["feature", "dependency"], + "number": 2469, + "title": "Update hapijs/qs to 2.4.0 from 2.3.3", + "url": "https://github.com/hapijs/hapi/issues/2469" + }, + { + "id": 61143692, + "labels": ["bug"], + "number": 2468, + "title": "Proxy handler not forwarding request payload", + "url": "https://github.com/hapijs/hapi/issues/2468" + }, + { + "id": 60739532, + "labels": ["dependency"], + "number": 2465, + "title": "Update hapijs/catbox to 4.2.2 from 4.2.1", + "url": "https://github.com/hapijs/hapi/issues/2465" + }, + { + "id": 60709056, + "labels": ["dependency"], + "number": 2464, + "title": "Update hapijs/joi to 6.0.8 from 6.0.5", + "url": "https://github.com/hapijs/hapi/issues/2464" + }, + { + "id": 60708193, + "labels": ["dependency"], + "number": 2463, + "title": "Update shrinkwrap to joi 6.0.7", + "url": "https://github.com/hapijs/hapi/pull/2463" + } + ], + "number": 138, + "url": "https://github.com/hapijs/hapi/milestone/138", + "version": "8.4.0" + }, + { + "date": "2015-03-11T06:37:16Z", + "id": 1015732, + "issues": [ + { + "id": 60594909, + "labels": ["bug"], + "number": 2461, + "title": "Missing dependency in 8.3", + "url": "https://github.com/hapijs/hapi/issues/2461" + } + ], + "number": 137, + "url": "https://github.com/hapijs/hapi/milestone/137", + "version": "8.3.1" + }, + { + "date": "2015-03-11T00:33:58Z", + "id": 972557, + "issues": [ + { + "id": 60547208, + "labels": ["bug"], + "number": 2459, + "title": "Fix for node 0.10 for changes in #2429", + "url": "https://github.com/hapijs/hapi/issues/2459" + }, + { + "id": 60460546, + "labels": ["dependency"], + "number": 2457, + "title": "Update hapijs/inert to 2.1.4 from 2.1.3", + "url": "https://github.com/hapijs/hapi/issues/2457" + }, + { + "id": 60441309, + "labels": ["bug", "dependency"], + "number": 2455, + "title": "Update hapijs/shot to 1.4.2 from 1.4.1", + "url": "https://github.com/hapijs/hapi/issues/2455" + }, + { + "id": 60441201, + "labels": ["dependency"], + "number": 2454, + "title": "Update moment/moment to 2.9.0 from 2.8.4", + "url": "https://github.com/hapijs/hapi/issues/2454" + }, + { + "id": 60441022, + "labels": ["dependency"], + "number": 2453, + "title": "Update hapijs/joi to 6.0.5 from 5.0.2", + "url": "https://github.com/hapijs/hapi/issues/2453" + }, + { + "id": 60440898, + "labels": ["dependency"], + "number": 2452, + "title": "Update hapijs/hoek to 2.11.1 from 2.10.0", + "url": "https://github.com/hapijs/hapi/issues/2452" + }, + { + "id": 60016028, + "labels": ["dependency"], + "number": 2446, + "title": "Update hapijs/wreck to 5.2.0 from 5.0.1", + "url": "https://github.com/hapijs/hapi/issues/2446" + }, + { + "id": 59575886, + "labels": ["feature"], + "number": 2439, + "title": "pass context to response schema validation", + "url": "https://github.com/hapijs/hapi/pull/2439" + }, + { + "id": 58747201, + "labels": ["bug"], + "number": 2429, + "title": "Fix for #2427", + "url": "https://github.com/hapijs/hapi/pull/2429" + }, + { + "id": 58464739, + "labels": ["bug"], + "number": 2427, + "title": "Issue uploading file with io.js or node > 0.11.6", + "url": "https://github.com/hapijs/hapi/issues/2427" + }, + { + "id": 58329307, + "labels": ["dependency"], + "number": 2423, + "title": "Update mime-db to 1.7.0 from 1.6.1", + "url": "https://github.com/hapijs/hapi/pull/2423" + }, + { + "id": 58289035, + "labels": ["bug", "dependency"], + "number": 2420, + "title": "Update hapijs/shot to 1.4.1 from 1.4.0", + "url": "https://github.com/hapijs/hapi/issues/2420" + }, + { + "id": 58123880, + "labels": ["bug"], + "number": 2418, + "title": "Add regex to allow leading $ and _", + "url": "https://github.com/hapijs/hapi/pull/2418" + }, + { + "id": 57856338, + "labels": ["dependency"], + "number": 2411, + "title": "Update jshttp/mime-db to 1.7.0 from 1.6.1", + "url": "https://github.com/hapijs/hapi/issues/2411" + }, + { + "id": 57357434, + "labels": ["feature"], + "number": 2405, + "title": "Support inline dependencies on plugins", + "url": "https://github.com/hapijs/hapi/pull/2405" + }, + { + "id": 57322956, + "labels": ["bug"], + "number": 2402, + "title": "Improved validation of route method label", + "url": "https://github.com/hapijs/hapi/pull/2402" + }, + { + "id": 57307842, + "labels": ["bug"], + "number": 2401, + "title": "Method name RegExp", + "url": "https://github.com/hapijs/hapi/issues/2401" + }, + { + "id": 56025963, + "labels": ["bug"], + "number": 2382, + "title": "Return explicit error when trying to stream a non-Readable stream", + "url": "https://github.com/hapijs/hapi/pull/2382" + }, + { + "id": 55231596, + "labels": ["bug"], + "number": 2368, + "title": "response.streamify assumes stream has attribute _readableState", + "url": "https://github.com/hapijs/hapi/issues/2368" + }, + { + "id": 53346217, + "labels": ["feature"], + "number": 2332, + "title": "Replacing plugin.dependency() with attributes key", + "url": "https://github.com/hapijs/hapi/issues/2332" + }, + { + "id": 53075995, + "labels": ["bug", "breaking changes"], + "number": 2326, + "title": "request-error logged before `onPostHandler` or `onPreResponse`", + "url": "https://github.com/hapijs/hapi/issues/2326" + } + ], + "number": 136, + "url": "https://github.com/hapijs/hapi/milestone/136", + "version": "8.3.0" + }, + { + "date": "2015-02-09T21:01:51Z", + "id": 924597, + "issues": [ + { + "id": 57088910, + "labels": ["dependency"], + "number": 2398, + "title": "Update hapijs/inert to 2.1.3 from 2.1.2", + "url": "https://github.com/hapijs/hapi/issues/2398" + }, + { + "id": 57067880, + "labels": ["feature"], + "number": 2397, + "title": "throw when attaching route handlers without a connection", + "url": "https://github.com/hapijs/hapi/pull/2397" + }, + { + "id": 56999539, + "labels": ["bug", "dependency"], + "number": 2396, + "title": "Inert 2.1.3 update", + "url": "https://github.com/hapijs/hapi/pull/2396" + }, + { + "id": 56976035, + "labels": ["dependency"], + "number": 2395, + "title": "Update jshttp/mime-db to 1.6.1 from 1.5.0", + "url": "https://github.com/hapijs/hapi/issues/2395" + }, + { + "id": 56719318, + "labels": ["bug"], + "number": 2392, + "title": "No Payload Validation", + "url": "https://github.com/hapijs/hapi/issues/2392" + }, + { + "id": 55574272, + "labels": ["bug"], + "number": 2374, + "title": "Server methods context not available in route prerequisites", + "url": "https://github.com/hapijs/hapi/issues/2374" + }, + { + "id": 55515823, + "labels": ["dependency"], + "number": 2373, + "title": "Update hapijs/inert to 2.1.2 from 2.1.0", + "url": "https://github.com/hapijs/hapi/issues/2373" + }, + { + "id": 55513746, + "labels": ["bug", "dependency"], + "number": 2372, + "title": "inert 2.1.2", + "url": "https://github.com/hapijs/hapi/pull/2372" + }, + { + "id": 55456448, + "labels": ["bug", "security"], + "number": 2370, + "title": "Add xss protection to validation response", + "url": "https://github.com/hapijs/hapi/pull/2370" + }, + { + "id": 55206735, + "labels": ["feature", "dependency"], + "number": 2367, + "title": "Update hapijs/inert to 2.1.0 from 2.0.0", + "url": "https://github.com/hapijs/hapi/issues/2367" + }, + { + "id": 55206382, + "labels": ["bug", "dependency"], + "number": 2366, + "title": "Update hapijs/catbox to 4.2.1 from 4.2.0", + "url": "https://github.com/hapijs/hapi/issues/2366" + }, + { + "id": 55158394, + "labels": ["bug"], + "number": 2363, + "title": "Refuse to handle incoming request after server is stopped", + "url": "https://github.com/hapijs/hapi/pull/2363" + }, + { + "id": 55156037, + "labels": ["bug", "test"], + "number": 2362, + "title": "Don't respond to connections until listening is started", + "url": "https://github.com/hapijs/hapi/pull/2362" + }, + { + "id": 55142950, + "labels": ["bug"], + "number": 2359, + "title": "Remove '{}' payload from cors OPTIONS response", + "url": "https://github.com/hapijs/hapi/pull/2359" + }, + { + "id": 54814226, + "labels": ["bug"], + "number": 2355, + "title": "Fix table labels", + "url": "https://github.com/hapijs/hapi/pull/2355" + }, + { + "id": 54688439, + "labels": ["dependency"], + "number": 2354, + "title": "Update API.md for inert 2.1.0", + "url": "https://github.com/hapijs/hapi/pull/2354" + }, + { + "id": 54007021, + "labels": ["bug"], + "number": 2347, + "title": "Improve error message when validation.payload is set but type is GET", + "url": "https://github.com/hapijs/hapi/issues/2347" + }, + { + "id": 52532191, + "labels": ["feature"], + "number": 2309, + "title": "Fixes #2308 by logging boom error object instead of just message", + "url": "https://github.com/hapijs/hapi/pull/2309" + }, + { + "id": 52532067, + "labels": ["feature"], + "number": 2308, + "title": "Logging boom errors from handlers should send boom error to log not just message", + "url": "https://github.com/hapijs/hapi/issues/2308" + } + ], + "number": 135, + "url": "https://github.com/hapijs/hapi/milestone/135", + "version": "8.2.0" + }, + { + "date": "2015-01-06T22:29:42Z", + "id": 898121, + "issues": [ + { + "id": 53550704, + "labels": ["feature"], + "number": 2335, + "title": "Expose the request object in inject()", + "url": "https://github.com/hapijs/hapi/issues/2335" + }, + { + "id": 53334250, + "labels": ["test", "dependency"], + "number": 2331, + "title": "Revise range tests to not depend on the inert module", + "url": "https://github.com/hapijs/hapi/pull/2331" + }, + { + "id": 52978912, + "labels": ["bug"], + "number": 2324, + "title": "Remove catch call for promise replies", + "url": "https://github.com/hapijs/hapi/pull/2324" + }, + { + "id": 52835038, + "labels": ["bug"], + "number": 2323, + "title": "Promise support", + "url": "https://github.com/hapijs/hapi/issues/2323" + }, + { + "id": 52720347, + "labels": ["dependency"], + "number": 2316, + "title": "Update jshttp/mime-db to 1.5.0 from 1.3.1", + "url": "https://github.com/hapijs/hapi/issues/2316" + }, + { + "id": 52394017, + "labels": ["bug"], + "number": 2302, + "title": "allow replying with a stream as returned by node core http client methods", + "url": "https://github.com/hapijs/hapi/pull/2302" + }, + { + "id": 52393941, + "labels": ["bug"], + "number": 2301, + "title": "can't reply with stream returned by node core http client methods", + "url": "https://github.com/hapijs/hapi/issues/2301" + }, + { + "id": 52265547, + "labels": ["dependency"], + "number": 2300, + "title": "Bumped mime-db version", + "url": "https://github.com/hapijs/hapi/pull/2300" + }, + { + "id": 52112068, + "labels": ["bug"], + "number": 2291, + "title": "external listener protocol issue", + "url": "https://github.com/hapijs/hapi/issues/2291" + }, + { + "id": 51698148, + "labels": ["bug"], + "number": 2277, + "title": "Fix invalid response for empty reply() (v8.x regression)", + "url": "https://github.com/hapijs/hapi/pull/2277" + } + ], + "number": 133, + "url": "https://github.com/hapijs/hapi/milestone/133", + "version": "8.1.0" + }, + { + "date": "2014-12-09T23:08:50Z", + "id": 842872, + "issues": [ + { + "id": 51495372, + "labels": ["dependency"], + "number": 2271, + "title": "Update jshttp/mime-db to 1.3.0 from 1.2.0", + "url": "https://github.com/hapijs/hapi/issues/2271" + }, + { + "id": 51495292, + "labels": ["dependency"], + "number": 2270, + "title": "Update hapijs/boom to 2.6.1 from 2.6.0", + "url": "https://github.com/hapijs/hapi/issues/2270" + }, + { + "id": 51495248, + "labels": ["dependency"], + "number": 2269, + "title": "Update hapijs/shot to 1.4.0 from 1.3.5", + "url": "https://github.com/hapijs/hapi/issues/2269" + }, + { + "id": 51495206, + "labels": ["dependency"], + "number": 2268, + "title": "Update hapijs/joi to 5.0.2 from 5.0.0", + "url": "https://github.com/hapijs/hapi/issues/2268" + }, + { + "id": 51329662, + "labels": ["feature"], + "number": 2264, + "title": "How to blacklist all routes to use a plugin config?", + "url": "https://github.com/hapijs/hapi/issues/2264" + }, + { + "id": 51227614, + "labels": ["breaking changes"], + "number": 2262, + "title": "Change server.table() result from object to array", + "url": "https://github.com/hapijs/hapi/issues/2262" + }, + { + "id": 51034014, + "labels": ["feature"], + "number": 2255, + "title": "Throw when calling reply() with objectMode stream", + "url": "https://github.com/hapijs/hapi/issues/2255" + }, + { + "id": 50940654, + "labels": ["feature"], + "number": 2249, + "title": "Add 'uri' connection option", + "url": "https://github.com/hapijs/hapi/issues/2249" + }, + { + "id": 50803535, + "labels": ["feature", "breaking changes"], + "number": 2247, + "title": "Split debug settings per event type", + "url": "https://github.com/hapijs/hapi/issues/2247" + }, + { + "id": 50780016, + "labels": ["bug"], + "number": 2246, + "title": "plugin dependencies error message changed", + "url": "https://github.com/hapijs/hapi/issues/2246" + }, + { + "id": 50707176, + "labels": ["bug"], + "number": 2244, + "title": "Fix reply.continue() in prerequisite. Closes #2243", + "url": "https://github.com/hapijs/hapi/pull/2244" + }, + { + "id": 50707025, + "labels": ["bug"], + "number": 2243, + "title": "Fix reply.continue() in prerequisite.", + "url": "https://github.com/hapijs/hapi/issues/2243" + }, + { + "id": 50673598, + "labels": ["bug"], + "number": 2242, + "title": "Uncaught error: Cannot read property 'isBoom' of null in hapi/lib/handler.js", + "url": "https://github.com/hapijs/hapi/issues/2242" + }, + { + "id": 50627042, + "labels": ["breaking changes"], + "number": 2241, + "title": "Remove string notation method logging when cache not setup", + "url": "https://github.com/hapijs/hapi/issues/2241" + }, + { + "id": 50623169, + "labels": ["bug"], + "number": 2240, + "title": "Cached method in string notation bypasses cache", + "url": "https://github.com/hapijs/hapi/issues/2240" + }, + { + "id": 50601834, + "labels": ["feature"], + "number": 2238, + "title": "Conditional Validation Rules based on Auth", + "url": "https://github.com/hapijs/hapi/issues/2238" + }, + { + "id": 50577828, + "labels": ["feature"], + "number": 2237, + "title": "Support bare server (no files, proxy, views)", + "url": "https://github.com/hapijs/hapi/issues/2237" + }, + { + "id": 50496688, + "labels": ["feature"], + "number": 2235, + "title": "Expose realm as public interface", + "url": "https://github.com/hapijs/hapi/issues/2235" + }, + { + "id": 50493969, + "labels": ["feature"], + "number": 2234, + "title": "Support views in auth schemes", + "url": "https://github.com/hapijs/hapi/issues/2234" + }, + { + "id": 50493124, + "labels": ["breaking changes"], + "number": 2233, + "title": "Populate connection.info.uri before start when port 0", + "url": "https://github.com/hapijs/hapi/issues/2233" + }, + { + "id": 50451718, + "labels": ["breaking changes"], + "number": 2231, + "title": "Change request.route to a wrapper object containing settings", + "url": "https://github.com/hapijs/hapi/issues/2231" + }, + { + "id": 50451704, + "labels": ["breaking changes"], + "number": 2230, + "title": "Replace server.config with server.realm.modifiers", + "url": "https://github.com/hapijs/hapi/issues/2230" + }, + { + "id": 50450801, + "labels": ["breaking changes"], + "number": 2229, + "title": "plugin.expose() only sets server.plugins, not connection.plugins", + "url": "https://github.com/hapijs/hapi/issues/2229" + }, + { + "id": 50444020, + "labels": ["breaking changes", "dependency"], + "number": 2228, + "title": "Update hapijs/joi to 5.0.0 from 4.9.0", + "url": "https://github.com/hapijs/hapi/issues/2228" + }, + { + "id": 50443999, + "labels": ["dependency"], + "number": 2227, + "title": "Update moment to 2.8.4", + "url": "https://github.com/hapijs/hapi/issues/2227" + }, + { + "id": 50361853, + "labels": ["bug"], + "number": 2226, + "title": "When using string shorthand in pre it does not provide reply interface", + "url": "https://github.com/hapijs/hapi/issues/2226" + }, + { + "id": 50334829, + "labels": ["breaking changes"], + "number": 2224, + "title": "Cleanup connection.info settings and introduce 'address' config", + "url": "https://github.com/hapijs/hapi/issues/2224" + }, + { + "id": 50266857, + "labels": ["feature"], + "number": 2220, + "title": "A method to test a string against the routes table", + "url": "https://github.com/hapijs/hapi/issues/2220" + }, + { + "id": 50252408, + "labels": ["dependency"], + "number": 2219, + "title": "Update hapijs/hoek to 2.10.0 from 2.9.0", + "url": "https://github.com/hapijs/hapi/issues/2219" + }, + { + "id": 50091208, + "labels": ["bug"], + "number": 2217, + "title": "Disable scope checking on a route", + "url": "https://github.com/hapijs/hapi/issues/2217" + }, + { + "id": 50089417, + "labels": ["bug"], + "number": 2216, + "title": "Invalid deep cloning of bind context", + "url": "https://github.com/hapijs/hapi/issues/2216" + }, + { + "id": 50064576, + "labels": ["feature"], + "number": 2215, + "title": "Revert change to trailing slash behavior ", + "url": "https://github.com/hapijs/hapi/issues/2215" + }, + { + "id": 49883937, + "labels": ["bug"], + "number": 2209, + "title": "Not possible to add route in plugins", + "url": "https://github.com/hapijs/hapi/issues/2209" + }, + { + "id": 49865058, + "labels": ["breaking changes"], + "number": 2206, + "title": "Change server.bind() and server.path() to apply only to routes that follow", + "url": "https://github.com/hapijs/hapi/issues/2206" + }, + { + "id": 49862297, + "labels": ["breaking changes"], + "number": 2205, + "title": "Rename plugin register() `route` option to `routes`", + "url": "https://github.com/hapijs/hapi/issues/2205" + }, + { + "id": 49852394, + "labels": ["breaking changes"], + "number": 2203, + "title": "Move connection route config to route with connections defaults ", + "url": "https://github.com/hapijs/hapi/issues/2203" + }, + { + "id": 49843509, + "labels": ["breaking changes"], + "number": 2201, + "title": "Rename cacheControlStatus to cache.statuses", + "url": "https://github.com/hapijs/hapi/issues/2201" + }, + { + "id": 49802372, + "labels": ["bug"], + "number": 2200, + "title": "Validation failAction and custom function are not protected", + "url": "https://github.com/hapijs/hapi/issues/2200" + }, + { + "id": 49795606, + "labels": ["bug"], + "number": 2199, + "title": "add missing variety handler for promises returning a object", + "url": "https://github.com/hapijs/hapi/pull/2199" + }, + { + "id": 49768780, + "labels": ["dependency"], + "number": 2198, + "title": "Update hapijs/call to 2.0.1 from 1.0.0", + "url": "https://github.com/hapijs/hapi/issues/2198" + }, + { + "id": 49630129, + "labels": ["feature"], + "number": 2195, + "title": "Override timeout values at a route level", + "url": "https://github.com/hapijs/hapi/issues/2195" + }, + { + "id": 49604779, + "labels": [], + "number": 2192, + "title": "Rename connection to listener or similar", + "url": "https://github.com/hapijs/hapi/issues/2192" + }, + { + "id": 49601406, + "labels": ["feature"], + "number": 2191, + "title": "Change defaults for router", + "url": "https://github.com/hapijs/hapi/issues/2191" + }, + { + "id": 49595212, + "labels": ["feature"], + "number": 2190, + "title": "Log heavy load reason when check() is false", + "url": "https://github.com/hapijs/hapi/issues/2190" + }, + { + "id": 49467577, + "labels": ["breaking changes", "release notes"], + "number": 2186, + "title": "8.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/2186" + }, + { + "id": 49467115, + "labels": ["dependency"], + "number": 2185, + "title": "Update hapijs/catbox to 4.2.0 from 4.1.0", + "url": "https://github.com/hapijs/hapi/issues/2185" + }, + { + "id": 49349303, + "labels": ["breaking changes"], + "number": 2181, + "title": "Remove server method cache key 'h' prefix", + "url": "https://github.com/hapijs/hapi/issues/2181" + }, + { + "id": 49290349, + "labels": ["bug"], + "number": 2179, + "title": "server.register() doesn't work with direct require of plugins (-rc1)", + "url": "https://github.com/hapijs/hapi/issues/2179" + }, + { + "id": 49278765, + "labels": ["dependency"], + "number": 2178, + "title": "Update hapijs/mimos to 2.0.2 from 1.0.1", + "url": "https://github.com/hapijs/hapi/issues/2178" + }, + { + "id": 49271325, + "labels": ["feature"], + "number": 2177, + "title": "Return select() on server.connection()", + "url": "https://github.com/hapijs/hapi/issues/2177" + }, + { + "id": 49192339, + "labels": ["dependency"], + "number": 2175, + "title": "Update jshttp/mime-db to 1.2.0 from 1.1.2", + "url": "https://github.com/hapijs/hapi/issues/2175" + }, + { + "id": 49191912, + "labels": ["dependency"], + "number": 2174, + "title": "Update hapijs/qs to 2.3.3 from 2.3.2", + "url": "https://github.com/hapijs/hapi/issues/2174" + }, + { + "id": 49191877, + "labels": ["dependency"], + "number": 2173, + "title": "Update hapijs/catbox-memory to 1.1.1 from 1.1.0", + "url": "https://github.com/hapijs/hapi/issues/2173" + }, + { + "id": 49191831, + "labels": ["dependency"], + "number": 2172, + "title": "Update hapijs/boom to 2.6.0 from 2.5.1", + "url": "https://github.com/hapijs/hapi/issues/2172" + }, + { + "id": 49121906, + "labels": ["dependency"], + "number": 2170, + "title": "Spin off range header parser", + "url": "https://github.com/hapijs/hapi/issues/2170" + }, + { + "id": 49060410, + "labels": ["feature"], + "number": 2167, + "title": "Add response 'close' processor", + "url": "https://github.com/hapijs/hapi/issues/2167" + }, + { + "id": 49059440, + "labels": ["bug"], + "number": 2166, + "title": "ETag vary modification not applied to content-encoding set elsewhere", + "url": "https://github.com/hapijs/hapi/issues/2166" + }, + { + "id": 49057240, + "labels": ["feature"], + "number": 2165, + "title": "Expose request.paramsArray", + "url": "https://github.com/hapijs/hapi/issues/2165" + }, + { + "id": 49056226, + "labels": ["bug"], + "number": 2164, + "title": "Bypass compression on empty payload", + "url": "https://github.com/hapijs/hapi/issues/2164" + }, + { + "id": 49053465, + "labels": ["bug"], + "number": 2163, + "title": "ETag vary modification is incorrect", + "url": "https://github.com/hapijs/hapi/issues/2163" + }, + { + "id": 48959252, + "labels": ["feature", "breaking changes"], + "number": 2160, + "title": "Add cors.override setting", + "url": "https://github.com/hapijs/hapi/issues/2160" + }, + { + "id": 48913400, + "labels": ["feature"], + "number": 2158, + "title": "How to get default auth strategy from server object?", + "url": "https://github.com/hapijs/hapi/issues/2158" + }, + { + "id": 48887597, + "labels": ["documentation"], + "number": 2157, + "title": "Link mentions of methods to their reference", + "url": "https://github.com/hapijs/hapi/issues/2157" + }, + { + "id": 48887562, + "labels": ["documentation"], + "number": 2156, + "title": "Rewrite reply() interface section", + "url": "https://github.com/hapijs/hapi/issues/2156" + }, + { + "id": 48887531, + "labels": ["documentation", "breaking changes"], + "number": 2155, + "title": "Cleanup and document all internal request logs", + "url": "https://github.com/hapijs/hapi/issues/2155" + }, + { + "id": 48886372, + "labels": ["breaking changes"], + "number": 2154, + "title": "Rename response object option marshall to marshal", + "url": "https://github.com/hapijs/hapi/issues/2154" + }, + { + "id": 48858405, + "labels": ["bug", "breaking changes"], + "number": 2153, + "title": "Change etag based on vary header by default", + "url": "https://github.com/hapijs/hapi/issues/2153" + }, + { + "id": 48846610, + "labels": ["breaking changes"], + "number": 2152, + "title": "Change server method generateKey() to only take the arguments", + "url": "https://github.com/hapijs/hapi/issues/2152" + }, + { + "id": 48836141, + "labels": ["feature"], + "number": 2150, + "title": "argument Object Optimizations", + "url": "https://github.com/hapijs/hapi/pull/2150" + }, + { + "id": 48832184, + "labels": ["feature"], + "number": 2149, + "title": "Support server methods without callback", + "url": "https://github.com/hapijs/hapi/issues/2149" + }, + { + "id": 48821233, + "labels": ["feature"], + "number": 2148, + "title": "Optimize use of arguments", + "url": "https://github.com/hapijs/hapi/issues/2148" + }, + { + "id": 48753153, + "labels": ["breaking changes"], + "number": 2146, + "title": "Deep copy app and plugins configurations", + "url": "https://github.com/hapijs/hapi/issues/2146" + }, + { + "id": 48726532, + "labels": ["breaking changes"], + "number": 2145, + "title": "Split request log events into request and request-internal", + "url": "https://github.com/hapijs/hapi/issues/2145" + }, + { + "id": 48726379, + "labels": ["breaking changes"], + "number": 2144, + "title": "Rename server event internalError to `request-error`", + "url": "https://github.com/hapijs/hapi/issues/2144" + }, + { + "id": 48720788, + "labels": ["breaking changes"], + "number": 2143, + "title": "Replace log 'hapi' tag with event.internal flag", + "url": "https://github.com/hapijs/hapi/issues/2143" + }, + { + "id": 48695044, + "labels": ["breaking changes"], + "number": 2142, + "title": "Rename request.responses to request.preResponses", + "url": "https://github.com/hapijs/hapi/issues/2142" + }, + { + "id": 48485113, + "labels": ["breaking changes"], + "number": 2137, + "title": "Remove auth authenticate() `log` option in result", + "url": "https://github.com/hapijs/hapi/issues/2137" + }, + { + "id": 48477163, + "labels": ["breaking changes"], + "number": 2136, + "title": "Here comes 8", + "url": "https://github.com/hapijs/hapi/pull/2136" + }, + { + "id": 48471100, + "labels": ["breaking changes"], + "number": 2135, + "title": "Remove Hapi.version", + "url": "https://github.com/hapijs/hapi/issues/2135" + }, + { + "id": 48419937, + "labels": ["breaking changes"], + "number": 2131, + "title": "Simplify server.register() to only accept register() or { register, options }", + "url": "https://github.com/hapijs/hapi/issues/2131" + }, + { + "id": 48361501, + "labels": ["feature"], + "number": 2129, + "title": "Support promises in server.method()", + "url": "https://github.com/hapijs/hapi/issues/2129" + }, + { + "id": 48361127, + "labels": ["breaking changes"], + "number": 2128, + "title": "Change server.method() object key from fn to method", + "url": "https://github.com/hapijs/hapi/issues/2128" + }, + { + "id": 48334948, + "labels": ["breaking changes"], + "number": 2126, + "title": "Change server.cache() to take only options", + "url": "https://github.com/hapijs/hapi/issues/2126" + }, + { + "id": 48318681, + "labels": ["breaking changes"], + "number": 2125, + "title": "Remove .hapi references", + "url": "https://github.com/hapijs/hapi/issues/2125" + }, + { + "id": 48313389, + "labels": ["feature"], + "number": 2124, + "title": "Server-level connection defaults", + "url": "https://github.com/hapijs/hapi/issues/2124" + }, + { + "id": 48293546, + "labels": ["feature"], + "number": 2122, + "title": "Pass the reply() interface everywhere a response can be returned", + "url": "https://github.com/hapijs/hapi/issues/2122" + }, + { + "id": 48184039, + "labels": ["breaking changes"], + "number": 2118, + "title": "Cleanup register() to accept a plugin or { plugin, options }", + "url": "https://github.com/hapijs/hapi/issues/2118" + }, + { + "id": 48157529, + "labels": ["dependency"], + "number": 2117, + "title": "Update hapijs/joi to 4.8.0 from 4.7.0", + "url": "https://github.com/hapijs/hapi/issues/2117" + }, + { + "id": 48154085, + "labels": ["dependency"], + "number": 2116, + "title": "Move peek logic to Peekaboo", + "url": "https://github.com/hapijs/hapi/issues/2116" + }, + { + "id": 48118665, + "labels": ["breaking changes"], + "number": 2113, + "title": "Missing host will default to hostname or 'localhost' instead of '0.0.0.0' pre start()", + "url": "https://github.com/hapijs/hapi/issues/2113" + }, + { + "id": 48118552, + "labels": ["breaking changes"], + "number": 2112, + "title": "Switch unix domain socket and windows named pipe to use options.port", + "url": "https://github.com/hapijs/hapi/issues/2112" + }, + { + "id": 48099337, + "labels": ["bug", "breaking changes"], + "number": 2111, + "title": "CORS matchOrigin should echo origin when config doesn't specify", + "url": "https://github.com/hapijs/hapi/issues/2111" + }, + { + "id": 48055900, + "labels": ["feature"], + "number": 2109, + "title": "Remove request aborted listener", + "url": "https://github.com/hapijs/hapi/issues/2109" + }, + { + "id": 48016342, + "labels": ["breaking changes"], + "number": 2104, + "title": "Apply `reply.continue()` to auth interfaces", + "url": "https://github.com/hapijs/hapi/issues/2104" + }, + { + "id": 48015941, + "labels": ["breaking changes"], + "number": 2103, + "title": "Change ext continuation method from `reply()` to `reply.continue()`", + "url": "https://github.com/hapijs/hapi/issues/2103" + }, + { + "id": 47840688, + "labels": ["bug"], + "number": 2099, + "title": "ETags never match with varyEtag setting", + "url": "https://github.com/hapijs/hapi/issues/2099" + }, + { + "id": 47792370, + "labels": ["feature"], + "number": 2097, + "title": "Support Promises in reply() interface", + "url": "https://github.com/hapijs/hapi/issues/2097" + }, + { + "id": 47779648, + "labels": ["breaking changes"], + "number": 2096, + "title": "Skip onPreResponse when connection closes prematurely", + "url": "https://github.com/hapijs/hapi/issues/2096" + }, + { + "id": 47762470, + "labels": ["breaking changes"], + "number": 2095, + "title": "Rework composer format", + "url": "https://github.com/hapijs/hapi/issues/2095" + }, + { + "id": 47695175, + "labels": ["bug"], + "number": 2093, + "title": "Include ETag and Last-Modified in 304 response", + "url": "https://github.com/hapijs/hapi/pull/2093" + }, + { + "id": 47692100, + "labels": ["breaking changes"], + "number": 2092, + "title": "Change default port to 0", + "url": "https://github.com/hapijs/hapi/issues/2092" + }, + { + "id": 47683973, + "labels": ["breaking changes"], + "number": 2090, + "title": "Remove plugin.version", + "url": "https://github.com/hapijs/hapi/issues/2090" + }, + { + "id": 47642749, + "labels": ["bug", "breaking changes"], + "number": 2089, + "title": "Server method `generateKey` no longer supports returning null as valid no caching indicator", + "url": "https://github.com/hapijs/hapi/issues/2089" + }, + { + "id": 47550458, + "labels": ["breaking changes"], + "number": 2086, + "title": "Remove bin/hapi", + "url": "https://github.com/hapijs/hapi/issues/2086" + }, + { + "id": 47550442, + "labels": ["breaking changes"], + "number": 2085, + "title": "Remove server.compose()", + "url": "https://github.com/hapijs/hapi/issues/2085" + }, + { + "id": 47550391, + "labels": ["breaking changes"], + "number": 2084, + "title": "Remove Hapi.state.prepareValue()", + "url": "https://github.com/hapijs/hapi/issues/2084" + }, + { + "id": 47550323, + "labels": ["breaking changes"], + "number": 2083, + "title": "Remove Hapi.error", + "url": "https://github.com/hapijs/hapi/issues/2083" + }, + { + "id": 47550188, + "labels": ["breaking changes"], + "number": 2082, + "title": "Remove Hapi.createServer()", + "url": "https://github.com/hapijs/hapi/issues/2082" + }, + { + "id": 47528139, + "labels": ["breaking changes"], + "number": 2080, + "title": "app config no longer copied over to server.app or connection.app", + "url": "https://github.com/hapijs/hapi/issues/2080" + }, + { + "id": 47513367, + "labels": ["breaking changes"], + "number": 2077, + "title": "Rename .server -> .connection and .pack -> .server", + "url": "https://github.com/hapijs/hapi/issues/2077" + }, + { + "id": 47511948, + "labels": ["breaking changes"], + "number": 2076, + "title": "Move files.etagsCacheMaxSize to pack level", + "url": "https://github.com/hapijs/hapi/issues/2076" + }, + { + "id": 47392023, + "labels": ["feature"], + "number": 2074, + "title": "server.auth.default is not exposed at plugin.auth.default", + "url": "https://github.com/hapijs/hapi/issues/2074" + }, + { + "id": 47351768, + "labels": ["breaking changes"], + "number": 2073, + "title": "Split process load from server load limits", + "url": "https://github.com/hapijs/hapi/issues/2073" + }, + { + "id": 47349572, + "labels": ["breaking changes"], + "number": 2072, + "title": "Remove debug from server configuration", + "url": "https://github.com/hapijs/hapi/issues/2072" + }, + { + "id": 47348456, + "labels": ["breaking changes"], + "number": 2071, + "title": "Move proxy handler to use local maxSocket config", + "url": "https://github.com/hapijs/hapi/issues/2071" + }, + { + "id": 47214717, + "labels": ["feature"], + "number": 2066, + "title": "Configure auth scheme to require payload validation", + "url": "https://github.com/hapijs/hapi/issues/2066" + }, + { + "id": 47204856, + "labels": ["bug", "breaking changes"], + "number": 2065, + "title": "failing to generate a method key should generate an error somewhere", + "url": "https://github.com/hapijs/hapi/issues/2065" + }, + { + "id": 46981323, + "labels": ["breaking changes"], + "number": 2053, + "title": "Change plugin.servers to plugin.connections", + "url": "https://github.com/hapijs/hapi/issues/2053" + }, + { + "id": 46975311, + "labels": ["breaking changes"], + "number": 2052, + "title": "Remove plugin.length", + "url": "https://github.com/hapijs/hapi/issues/2052" + }, + { + "id": 46774830, + "labels": ["feature", "breaking changes"], + "number": 2048, + "title": "New Event for request.log", + "url": "https://github.com/hapijs/hapi/issues/2048" + }, + { + "id": 46552605, + "labels": ["feature", "breaking changes"], + "number": 2040, + "title": "Improve request ID generator to prevent collisions", + "url": "https://github.com/hapijs/hapi/issues/2040" + }, + { + "id": 44841649, + "labels": ["bug"], + "number": 2003, + "title": "Stop cache client when pack stops", + "url": "https://github.com/hapijs/hapi/issues/2003" + }, + { + "id": 44615832, + "labels": ["feature", "breaking changes"], + "number": 1994, + "title": "Pass meta data from a joi object to a failAction", + "url": "https://github.com/hapijs/hapi/issues/1994" + }, + { + "id": 43763393, + "labels": ["feature"], + "number": 1977, + "title": "Throw when route() is called with multiple arguments", + "url": "https://github.com/hapijs/hapi/issues/1977" + }, + { + "id": 43551650, + "labels": ["feature"], + "number": 1971, + "title": "Allow plugins to extend Server", + "url": "https://github.com/hapijs/hapi/issues/1971" + }, + { + "id": 43475918, + "labels": ["feature"], + "number": 1965, + "title": "Need to know when response was sent in `server.on(tail)`", + "url": "https://github.com/hapijs/hapi/issues/1965" + }, + { + "id": 43313391, + "labels": ["feature"], + "number": 1963, + "title": "Extensible reply() interface", + "url": "https://github.com/hapijs/hapi/issues/1963" + }, + { + "id": 42802353, + "labels": ["feature"], + "number": 1945, + "title": "IE <=8 doesn't accept application/javascript as a mimetype", + "url": "https://github.com/hapijs/hapi/issues/1945" + }, + { + "id": 42676862, + "labels": ["feature"], + "number": 1939, + "title": "Reverse Routing a URL", + "url": "https://github.com/hapijs/hapi/issues/1939" + }, + { + "id": 42388151, + "labels": ["feature", "breaking changes"], + "number": 1926, + "title": "Remove special handling of the HTTP Location header", + "url": "https://github.com/hapijs/hapi/issues/1926" + }, + { + "id": 42005905, + "labels": ["bug"], + "number": 1902, + "title": "reply.redirect() and reply.file() not working in server extensions", + "url": "https://github.com/hapijs/hapi/issues/1902" + }, + { + "id": 40413289, + "labels": ["bug"], + "number": 1866, + "title": "Throw error when trying to reply twice", + "url": "https://github.com/hapijs/hapi/issues/1866" + }, + { + "id": 40320480, + "labels": ["feature"], + "number": 1864, + "title": "Feature Request: Validation of non-200/ok responses.", + "url": "https://github.com/hapijs/hapi/issues/1864" + }, + { + "id": 39171107, + "labels": ["feature"], + "number": 1815, + "title": "spdy support", + "url": "https://github.com/hapijs/hapi/issues/1815" + }, + { + "id": 35782558, + "labels": ["feature"], + "number": 1723, + "title": "Allow response object stripping according to schema", + "url": "https://github.com/hapijs/hapi/issues/1723" + }, + { + "id": 34980474, + "labels": ["bug"], + "number": 1686, + "title": "Don't report request closed on redirect payload write", + "url": "https://github.com/hapijs/hapi/issues/1686" + }, + { + "id": 34663998, + "labels": ["feature"], + "number": 1672, + "title": "Enable starting the server listener externally", + "url": "https://github.com/hapijs/hapi/issues/1672" + } + ], + "number": 127, + "url": "https://github.com/hapijs/hapi/milestone/127", + "version": "8.0.0" + }, + { + "date": "2014-12-17T18:18:21Z", + "id": 905123, + "issues": [ + { + "id": 52067869, + "labels": ["security"], + "number": 2290, + "title": "Update hapijs/inert to 1.1.1 from 1.1.0", + "url": "https://github.com/hapijs/hapi/issues/2290" + } + ], + "number": 134, + "url": "https://github.com/hapijs/hapi/milestone/134", + "version": "7.5.3" + }, + { + "date": "2014-11-10T20:24:00Z", + "id": 860650, + "issues": [ + { + "id": 48309231, + "labels": ["bug", "dependency"], + "number": 2123, + "title": "Upgrade hoek to 2.9.0", + "url": "https://github.com/hapijs/hapi/issues/2123" + } + ], + "number": 132, + "url": "https://github.com/hapijs/hapi/milestone/132", + "version": "7.5.2" + }, + { + "date": "2014-11-10T20:21:12Z", + "id": 857981, + "issues": [ + { + "id": 48222109, + "labels": ["bug", "dependency"], + "number": 2120, + "title": "TypeError: Cannot read property 'get' of undefined", + "url": "https://github.com/hapijs/hapi/issues/2120" + } + ], + "number": 131, + "url": "https://github.com/hapijs/hapi/milestone/131", + "version": "7.5.1" + }, + { + "date": "2014-11-07T22:12:33Z", + "id": 857043, + "issues": [ + { + "id": 48017911, + "labels": ["feature", "bug"], + "number": 2105, + "title": "Added ability to pass option into unstate.", + "url": "https://github.com/hapijs/hapi/pull/2105" + }, + { + "id": 47332694, + "labels": ["bug"], + "number": 2068, + "title": "it is not possible to unstate a cookie that was stated with options", + "url": "https://github.com/hapijs/hapi/issues/2068" + }, + { + "id": 42185941, + "labels": ["bug"], + "number": 1916, + "title": "Temp file is not deleted when request is aborted by client", + "url": "https://github.com/hapijs/hapi/issues/1916" + } + ], + "number": 130, + "url": "https://github.com/hapijs/hapi/milestone/130", + "version": "7.5.0" + }, + { + "date": "2014-11-07T08:11:24Z", + "id": 854019, + "issues": [ + { + "id": 48048239, + "labels": ["dependency"], + "number": 2108, + "title": "Upgrade qs to version 2.3.2", + "url": "https://github.com/hapijs/hapi/issues/2108" + }, + { + "id": 48048129, + "labels": ["dependency"], + "number": 2107, + "title": "Upgrade mime-db to 1.1.2", + "url": "https://github.com/hapijs/hapi/issues/2107" + }, + { + "id": 47903283, + "labels": ["feature", "dependency"], + "number": 2100, + "title": "Global view context.", + "url": "https://github.com/hapijs/hapi/pull/2100" + }, + { + "id": 46092753, + "labels": ["bug"], + "number": 2027, + "title": "JPG vs jpg", + "url": "https://github.com/hapijs/hapi/issues/2027" + } + ], + "number": 129, + "url": "https://github.com/hapijs/hapi/milestone/129", + "version": "7.4.0" + }, + { + "date": "2014-11-05T03:02:04Z", + "id": 847445, + "issues": [ + { + "id": 47794388, + "labels": ["dependency"], + "number": 2098, + "title": "Catbox 4.1", + "url": "https://github.com/hapijs/hapi/issues/2098" + } + ], + "number": 128, + "url": "https://github.com/hapijs/hapi/milestone/128", + "version": "7.3.0" + }, + { + "date": "2014-10-30T23:34:52Z", + "id": 838664, + "issues": [ + { + "id": 47344416, + "labels": ["feature"], + "number": 2069, + "title": "Isolate server in its own pack", + "url": "https://github.com/hapijs/hapi/pull/2069" + }, + { + "id": 47089996, + "labels": ["feature"], + "number": 2061, + "title": "Second phase of server/pack/plugin refactor", + "url": "https://github.com/hapijs/hapi/pull/2061" + }, + { + "id": 46998270, + "labels": ["feature", "breaking changes", "dependency"], + "number": 2057, + "title": "Pack refactor", + "url": "https://github.com/hapijs/hapi/pull/2057" + }, + { + "id": 46992789, + "labels": ["feature"], + "number": 2056, + "title": "Enhance Pack to have the full plugin API directly", + "url": "https://github.com/hapijs/hapi/issues/2056" + }, + { + "id": 46992738, + "labels": ["feature", "breaking changes"], + "number": 2055, + "title": "Move plugin dependency validation to start()", + "url": "https://github.com/hapijs/hapi/issues/2055" + }, + { + "id": 46992655, + "labels": ["dependency"], + "number": 2054, + "title": "Move composer logic to glue", + "url": "https://github.com/hapijs/hapi/issues/2054" + } + ], + "number": 126, + "url": "https://github.com/hapijs/hapi/milestone/126", + "version": "7.2.0" + }, + { + "date": "2014-10-24T06:18:52Z", + "id": 836437, + "issues": [ + { + "id": 46707804, + "labels": ["bug"], + "number": 2046, + "title": "Fix shrinkwrap", + "url": "https://github.com/hapijs/hapi/issues/2046" + } + ], + "number": 125, + "url": "https://github.com/hapijs/hapi/milestone/125", + "version": "7.1.1" + }, + { + "date": "2014-10-24T06:18:51Z", + "id": 836404, + "issues": [ + { + "id": 46551699, + "labels": ["breaking changes", "dependency"], + "number": 2039, + "title": "Added npm-shrinkwrap", + "url": "https://github.com/hapijs/hapi/issues/2039" + } + ], + "number": 124, + "url": "https://github.com/hapijs/hapi/milestone/124", + "version": "7.1.0" + }, + { + "date": "2014-10-22T19:08:57Z", + "id": 820544, + "issues": [ + { + "id": 46547220, + "labels": ["dependency"], + "number": 2038, + "title": "Move cli logic to rejoice", + "url": "https://github.com/hapijs/hapi/issues/2038" + }, + { + "id": 46482957, + "labels": ["dependency"], + "number": 2036, + "title": "Move lru-cache to inert", + "url": "https://github.com/hapijs/hapi/issues/2036" + }, + { + "id": 46458328, + "labels": ["test", "dependency"], + "number": 2035, + "title": "lab 5.0 features. Closes #2034", + "url": "https://github.com/hapijs/hapi/pull/2035" + }, + { + "id": 46458286, + "labels": ["test", "dependency"], + "number": 2034, + "title": "Lab 5.0", + "url": "https://github.com/hapijs/hapi/issues/2034" + }, + { + "id": 46128338, + "labels": ["feature"], + "number": 2029, + "title": "Fixes #2028. Updated error message for invalid scope to explain that any of the specified are sufficient", + "url": "https://github.com/hapijs/hapi/pull/2029" + }, + { + "id": 46115080, + "labels": ["feature"], + "number": 2028, + "title": "Improve error message when auth scope is insufficient", + "url": "https://github.com/hapijs/hapi/issues/2028" + }, + { + "id": 45503233, + "labels": ["bug"], + "number": 2024, + "title": "Resolve undefined environment variables to the empty string in the cli.", + "url": "https://github.com/hapijs/hapi/pull/2024" + } + ], + "number": 123, + "url": "https://github.com/hapijs/hapi/milestone/123", + "version": "7.0.1" + }, + { + "date": "2014-10-10T00:26:27Z", + "id": 781660, + "issues": [ + { + "id": 45428746, + "labels": ["breaking changes", "release notes"], + "number": 2023, + "title": "7.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/2023" + }, + { + "id": 45426617, + "labels": ["dependency"], + "number": 2022, + "title": "Spin off file and directory to inert", + "url": "https://github.com/hapijs/hapi/issues/2022" + }, + { + "id": 45414830, + "labels": ["feature"], + "number": 2021, + "title": "Override server files.relativeTo config per route", + "url": "https://github.com/hapijs/hapi/issues/2021" + }, + { + "id": 45414776, + "labels": ["dependency"], + "number": 2020, + "title": "h2o2 2.0", + "url": "https://github.com/hapijs/hapi/issues/2020" + }, + { + "id": 45337404, + "labels": ["breaking changes", "dependency"], + "number": 2019, + "title": "Catbox 4.0", + "url": "https://github.com/hapijs/hapi/issues/2019" + }, + { + "id": 45308675, + "labels": ["breaking changes"], + "number": 2017, + "title": "Initial 7.0 changes", + "url": "https://github.com/hapijs/hapi/pull/2017" + }, + { + "id": 45308544, + "labels": ["breaking changes"], + "number": 2016, + "title": "Remove $env support from pack.compose()", + "url": "https://github.com/hapijs/hapi/issues/2016" + }, + { + "id": 45030421, + "labels": ["bug"], + "number": 2011, + "title": "Hapi should not override `cache-control` header if it's manually set by user's code", + "url": "https://github.com/hapijs/hapi/issues/2011" + }, + { + "id": 44875436, + "labels": ["breaking changes"], + "number": 2007, + "title": "Remove server views config", + "url": "https://github.com/hapijs/hapi/issues/2007" + }, + { + "id": 43214068, + "labels": ["breaking changes"], + "number": 1960, + "title": "Remove support for tos authentication setting", + "url": "https://github.com/hapijs/hapi/issues/1960" + }, + { + "id": 43019654, + "labels": ["feature"], + "number": 1955, + "title": "Use environment variables in CLI configuration json file", + "url": "https://github.com/hapijs/hapi/pull/1955" + }, + { + "id": 42927402, + "labels": ["breaking changes"], + "number": 1954, + "title": "Remove support for catbox getOrGenerate()", + "url": "https://github.com/hapijs/hapi/issues/1954" + }, + { + "id": 42688181, + "labels": ["breaking changes"], + "number": 1941, + "title": "Remove route from handler registration arguments", + "url": "https://github.com/hapijs/hapi/issues/1941" + }, + { + "id": 42167730, + "labels": ["breaking changes", "security"], + "number": 1913, + "title": "Change proxy localStatePassThrough setting default to false", + "url": "https://github.com/hapijs/hapi/issues/1913" + } + ], + "number": 117, + "url": "https://github.com/hapijs/hapi/milestone/117", + "version": "7.0.0" + }, + { + "date": "2014-10-06T19:18:25Z", + "id": 813354, + "issues": [ + { + "id": 44957637, + "labels": ["bug", "dependency"], + "number": 2010, + "title": "Heavy", + "url": "https://github.com/hapijs/hapi/pull/2010" + }, + { + "id": 44957610, + "labels": ["bug"], + "number": 2009, + "title": "Setting event loop delay max lower than sample interval leads to false positive", + "url": "https://github.com/hapijs/hapi/issues/2009" + }, + { + "id": 44929347, + "labels": ["feature"], + "number": 2008, + "title": "Break load handler implementation into separate module", + "url": "https://github.com/hapijs/hapi/issues/2008" + }, + { + "id": 44841377, + "labels": ["feature"], + "number": 2002, + "title": "show route method in error message", + "url": "https://github.com/hapijs/hapi/pull/2002" + } + ], + "number": 122, + "url": "https://github.com/hapijs/hapi/milestone/122", + "version": "6.11.1" + }, + { + "date": "2014-10-04T06:52:40Z", + "id": 812036, + "issues": [ + { + "id": 44860758, + "labels": ["bug", "dependency"], + "number": 2005, + "title": "Replace negotiator", + "url": "https://github.com/hapijs/hapi/pull/2005" + }, + { + "id": 44847438, + "labels": ["bug"], + "number": 2004, + "title": "Default accept-encoding '*' to 'identity', not 'gzip'", + "url": "https://github.com/hapijs/hapi/issues/2004" + }, + { + "id": 44838400, + "labels": ["bug"], + "number": 2001, + "title": "Keep the options of server.inject untouched #2000", + "url": "https://github.com/hapijs/hapi/pull/2001" + }, + { + "id": 44622797, + "labels": ["bug"], + "number": 1995, + "title": "Adding route with multiple methods overrides route config", + "url": "https://github.com/hapijs/hapi/issues/1995" + }, + { + "id": 44120078, + "labels": ["feature"], + "number": 1984, + "title": "All non 200 responses get cache-control=no-cache header", + "url": "https://github.com/hapijs/hapi/issues/1984" + }, + { + "id": 39796122, + "labels": ["dependency"], + "number": 1845, + "title": "Replace negotiator", + "url": "https://github.com/hapijs/hapi/issues/1845" + } + ], + "number": 121, + "url": "https://github.com/hapijs/hapi/milestone/121", + "version": "6.11.0" + }, + { + "date": "2014-10-02T22:16:15Z", + "id": 798791, + "issues": [ + { + "id": 44742556, + "labels": ["dependency"], + "number": 1998, + "title": "Migrate payload parsing to subtext with multipart support via pez", + "url": "https://github.com/hapijs/hapi/pull/1998" + }, + { + "id": 44628979, + "labels": ["feature"], + "number": 1997, + "title": "Allow payload parsing timeout override per route", + "url": "https://github.com/hapijs/hapi/issues/1997" + }, + { + "id": 44626738, + "labels": ["bug"], + "number": 1996, + "title": "Apply payload failAction to maxBytes and invalid content type", + "url": "https://github.com/hapijs/hapi/issues/1996" + }, + { + "id": 44611453, + "labels": ["dependency"], + "number": 1993, + "title": "Replaced optimist with bossy", + "url": "https://github.com/hapijs/hapi/pull/1993" + }, + { + "id": 42410081, + "labels": ["feature"], + "number": 1928, + "title": "Handle empty or falsy charset in response", + "url": "https://github.com/hapijs/hapi/pull/1928" + }, + { + "id": 42344948, + "labels": ["dependency"], + "number": 1923, + "title": "Replace multiparty", + "url": "https://github.com/hapijs/hapi/issues/1923" + }, + { + "id": 39795917, + "labels": ["dependency"], + "number": 1843, + "title": "Replace optimist", + "url": "https://github.com/hapijs/hapi/issues/1843" + } + ], + "number": 120, + "url": "https://github.com/hapijs/hapi/milestone/120", + "version": "6.10.0" + }, + { + "date": "2014-09-22T20:42:23Z", + "id": 784188, + "issues": [ + { + "id": 43551898, + "labels": ["feature"], + "number": 1973, + "title": "Move proxy decorations to h2o2", + "url": "https://github.com/hapijs/hapi/issues/1973" + }, + { + "id": 43551849, + "labels": ["feature"], + "number": 1972, + "title": "Move view decorations to vision", + "url": "https://github.com/hapijs/hapi/issues/1972" + }, + { + "id": 43538814, + "labels": ["dependency"], + "number": 1969, + "title": "Move mime to mimos", + "url": "https://github.com/hapijs/hapi/issues/1969" + }, + { + "id": 43537865, + "labels": ["dependency"], + "number": 1968, + "title": "Vision / Mimos", + "url": "https://github.com/hapijs/hapi/pull/1968" + }, + { + "id": 43537831, + "labels": ["dependency"], + "number": 1967, + "title": "Move views code to vision", + "url": "https://github.com/hapijs/hapi/issues/1967" + }, + { + "id": 43209896, + "labels": ["bug"], + "number": 1959, + "title": "Fix server/plugin ext views conflict", + "url": "https://github.com/hapijs/hapi/pull/1959" + }, + { + "id": 43198240, + "labels": ["dependency"], + "number": 1958, + "title": "Move proxy handler to h2o2", + "url": "https://github.com/hapijs/hapi/pull/1958" + }, + { + "id": 43198236, + "labels": ["dependency"], + "number": 1957, + "title": "Move proxy handler to h2o2", + "url": "https://github.com/hapijs/hapi/issues/1957" + }, + { + "id": 43125211, + "labels": ["bug"], + "number": 1956, + "title": "Fix Content-Type overriding", + "url": "https://github.com/hapijs/hapi/pull/1956" + }, + { + "id": 42731551, + "labels": ["dependency"], + "number": 1944, + "title": "Move router to Call", + "url": "https://github.com/hapijs/hapi/pull/1944" + }, + { + "id": 42689616, + "labels": ["dependency"], + "number": 1943, + "title": "Move routing login out to call", + "url": "https://github.com/hapijs/hapi/issues/1943" + }, + { + "id": 42530577, + "labels": ["bug"], + "number": 1934, + "title": "Fix non-spec compliant Last-Modified header in response", + "url": "https://github.com/hapijs/hapi/pull/1934" + }, + { + "id": 42505076, + "labels": ["bug"], + "number": 1932, + "title": "handle empty CORS expose-headers header response", + "url": "https://github.com/hapijs/hapi/pull/1932" + }, + { + "id": 42370900, + "labels": ["bug"], + "number": 1924, + "title": "Unable to provide views override in onPreResponse", + "url": "https://github.com/hapijs/hapi/issues/1924" + } + ], + "number": 119, + "url": "https://github.com/hapijs/hapi/milestone/119", + "version": "6.9.0" + }, + { + "date": "2014-09-09T21:19:37Z", + "id": 782936, + "issues": [ + { + "id": 42344182, + "labels": ["bug", "breaking changes"], + "number": 1922, + "title": "Handle server methods without cache as special case", + "url": "https://github.com/hapijs/hapi/issues/1922" + } + ], + "number": 118, + "url": "https://github.com/hapijs/hapi/milestone/118", + "version": "6.8.1" + }, + { + "date": "2014-09-09T00:56:34Z", + "id": 768098, + "issues": [ + { + "id": 42538417, + "labels": ["non issue", "breaking changes"], + "number": 1935, + "title": "server.method breaking change", + "url": "https://github.com/hapijs/hapi/issues/1935" + }, + { + "id": 42233937, + "labels": ["feature", "dependency"], + "number": 1919, + "title": "Log method pre string notation", + "url": "https://github.com/hapijs/hapi/pull/1919" + }, + { + "id": 42207610, + "labels": ["feature"], + "number": 1917, + "title": "Log cache info when using server method short hand calls", + "url": "https://github.com/hapijs/hapi/issues/1917" + }, + { + "id": 42168347, + "labels": ["bug", "security", "dependency"], + "number": 1915, + "title": "Issue/1911", + "url": "https://github.com/hapijs/hapi/pull/1915" + }, + { + "id": 42168327, + "labels": ["dependency"], + "number": 1914, + "title": "catbox 3.2", + "url": "https://github.com/hapijs/hapi/issues/1914" + }, + { + "id": 42153579, + "labels": ["bug", "security"], + "number": 1911, + "title": "Exclude configured cookies from proxy passthrough", + "url": "https://github.com/hapijs/hapi/issues/1911" + }, + { + "id": 42059483, + "labels": ["dependency"], + "number": 1905, + "title": "Replaced mime-type with mime.", + "url": "https://github.com/hapijs/hapi/pull/1905" + }, + { + "id": 41572907, + "labels": ["dependency"], + "number": 1890, + "title": "Use mime-db", + "url": "https://github.com/hapijs/hapi/issues/1890" + }, + { + "id": 41537215, + "labels": ["dependency"], + "number": 1889, + "title": "Upgrade to wreck v5", + "url": "https://github.com/hapijs/hapi/pull/1889" + }, + { + "id": 41537018, + "labels": ["dependency"], + "number": 1888, + "title": "Upgrade to Wreck v5", + "url": "https://github.com/hapijs/hapi/issues/1888" + }, + { + "id": 39402378, + "labels": ["feature"], + "number": 1828, + "title": "Disable compression on file types already compressed (png, jpg)", + "url": "https://github.com/hapijs/hapi/issues/1828" + } + ], + "number": 116, + "url": "https://github.com/hapijs/hapi/milestone/116", + "version": "6.8.0" + }, + { + "date": "2014-08-28T00:41:12Z", + "id": 768065, + "issues": [ + { + "id": 41344951, + "labels": ["bug"], + "number": 1885, + "title": "Handler timeout with onPreResponse asserts on bad protect", + "url": "https://github.com/hapijs/hapi/issues/1885" + } + ], + "number": 115, + "url": "https://github.com/hapijs/hapi/milestone/115", + "version": "6.7.1" + }, + { + "date": "2014-08-27T23:38:00Z", + "id": 763675, + "issues": [ + { + "id": 41341873, + "labels": ["feature"], + "number": 1884, + "title": "Improve protect logging", + "url": "https://github.com/hapijs/hapi/issues/1884" + }, + { + "id": 41100300, + "labels": ["feature"], + "number": 1881, + "title": "update qs dependency", + "url": "https://github.com/hapijs/hapi/pull/1881" + } + ], + "number": 114, + "url": "https://github.com/hapijs/hapi/milestone/114", + "version": "6.7.0" + }, + { + "date": "2014-08-24T07:04:25Z", + "id": 752804, + "issues": [ + { + "id": 40969837, + "labels": ["bug"], + "number": 1878, + "title": "Rename private route members", + "url": "https://github.com/hapijs/hapi/issues/1878" + }, + { + "id": 40872804, + "labels": ["dependency"], + "number": 1877, + "title": "Move state.js to statehood module", + "url": "https://github.com/hapijs/hapi/issues/1877" + }, + { + "id": 40810285, + "labels": ["bug"], + "number": 1875, + "title": "Session scope does not match one to many auth.scope on route.", + "url": "https://github.com/hapijs/hapi/issues/1875" + }, + { + "id": 40532468, + "labels": ["dependency"], + "number": 1871, + "title": "Switch to wreck", + "url": "https://github.com/hapijs/hapi/issues/1871" + }, + { + "id": 40294883, + "labels": ["feature"], + "number": 1863, + "title": "Allow agent to be set on proxy options and passed into Nipple.", + "url": "https://github.com/hapijs/hapi/pull/1863" + }, + { + "id": 40194279, + "labels": ["bug"], + "number": 1858, + "title": "Fix typo in defaults.js", + "url": "https://github.com/hapijs/hapi/pull/1858" + }, + { + "id": 40193696, + "labels": ["feature"], + "number": 1856, + "title": "Allow view options override on handler object", + "url": "https://github.com/hapijs/hapi/pull/1856" + } + ], + "number": 113, + "url": "https://github.com/hapijs/hapi/milestone/113", + "version": "6.6.0" + }, + { + "date": "2014-08-13T20:13:10Z", + "id": 752623, + "issues": [ + { + "id": 40193948, + "labels": ["bug"], + "number": 1857, + "title": "Manifest validation tests server config before defaults applies", + "url": "https://github.com/hapijs/hapi/issues/1857" + } + ], + "number": 112, + "url": "https://github.com/hapijs/hapi/milestone/112", + "version": "6.5.1" + }, + { + "date": "2014-08-13T18:50:55Z", + "id": 742901, + "issues": [ + { + "id": 39962695, + "labels": ["documentation"], + "number": 1851, + "title": "Updated route documentation.", + "url": "https://github.com/hapijs/hapi/pull/1851" + }, + { + "id": 39796085, + "labels": ["dependency"], + "number": 1844, + "title": "Replace async", + "url": "https://github.com/hapijs/hapi/issues/1844" + }, + { + "id": 39746008, + "labels": ["test"], + "number": 1842, + "title": "Lab 4.00", + "url": "https://github.com/hapijs/hapi/pull/1842" + }, + { + "id": 39663331, + "labels": ["bug"], + "number": 1840, + "title": "No longer possible to load caches using CLI?", + "url": "https://github.com/hapijs/hapi/issues/1840" + }, + { + "id": 39509793, + "labels": ["bug"], + "number": 1835, + "title": "server.state ttl must be a number ", + "url": "https://github.com/hapijs/hapi/issues/1835" + }, + { + "id": 39479229, + "labels": ["dependency"], + "number": 1832, + "title": "Replace mime with mime-type", + "url": "https://github.com/hapijs/hapi/issues/1832" + }, + { + "id": 39340416, + "labels": ["bug"], + "number": 1822, + "title": "Added joi validation to manifest.", + "url": "https://github.com/hapijs/hapi/pull/1822" + }, + { + "id": 38338167, + "labels": ["feature"], + "number": 1795, + "title": "request.server._views in plugin", + "url": "https://github.com/hapijs/hapi/issues/1795" + }, + { + "id": 35743185, + "labels": ["bug"], + "number": 1722, + "title": "Validate compose manifest", + "url": "https://github.com/hapijs/hapi/issues/1722" + } + ], + "number": 111, + "url": "https://github.com/hapijs/hapi/milestone/111", + "version": "6.5.0" + }, + { + "date": "2014-08-05T01:11:44Z", + "id": 740881, + "issues": [ + { + "id": 39476631, + "labels": ["feature", "breaking changes", "security"], + "number": 1831, + "title": "Upgrade to qs 1.0.0", + "url": "https://github.com/hapijs/hapi/issues/1831" + }, + { + "id": 38806717, + "labels": ["feature", "security"], + "number": 1810, + "title": "set X-Content-Type-Options to nosnif for jsonp responses", + "url": "https://github.com/hapijs/hapi/pull/1810" + } + ], + "number": 110, + "url": "https://github.com/hapijs/hapi/milestone/110", + "version": "6.4.0" + }, + { + "date": "2014-08-04T20:19:30Z", + "id": 740167, + "issues": [ + { + "id": 39378738, + "labels": ["bug"], + "number": 1827, + "title": "Cannot call setTimeout with non-integer msec value", + "url": "https://github.com/hapijs/hapi/issues/1827" + }, + { + "id": 39365217, + "labels": ["feature"], + "number": 1826, + "title": "Support cache generateTimeout setting", + "url": "https://github.com/hapijs/hapi/issues/1826" + } + ], + "number": 109, + "url": "https://github.com/hapijs/hapi/milestone/109", + "version": "6.3.0" + }, + { + "date": "2014-08-01T20:14:34Z", + "id": 729752, + "issues": [ + { + "id": 39323531, + "labels": ["documentation"], + "number": 1820, + "title": "Rename spumko to hapijs", + "url": "https://github.com/hapijs/hapi/issues/1820" + } + ], + "number": 108, + "url": "https://github.com/hapijs/hapi/milestone/108", + "version": "6.2.2" + }, + { + "date": "2014-07-23T14:08:30Z", + "id": 724196, + "issues": [ + { + "id": 38532098, + "labels": ["bug"], + "number": 1801, + "title": "Stale dependencies", + "url": "https://github.com/hapijs/hapi/issues/1801" + } + ], + "number": 107, + "url": "https://github.com/hapijs/hapi/milestone/107", + "version": "6.2.1" + }, + { + "date": "2014-07-17T12:36:05Z", + "id": 723005, + "issues": [ + { + "id": 38069870, + "labels": ["feature"], + "number": 1790, + "title": "Expose authentication mode", + "url": "https://github.com/hapijs/hapi/issues/1790" + }, + { + "id": 37477399, + "labels": ["feature"], + "number": 1767, + "title": "plugin.location", + "url": "https://github.com/hapijs/hapi/issues/1767" + } + ], + "number": 106, + "url": "https://github.com/hapijs/hapi/milestone/106", + "version": "6.2.0" + }, + { + "date": "2014-07-16T14:29:21Z", + "id": 693239, + "issues": [ + { + "id": 37973176, + "labels": ["non issue"], + "number": 1788, + "title": "Last-Modified comparison needs to account for 1 second precision", + "url": "https://github.com/hapijs/hapi/issues/1788" + }, + { + "id": 37747052, + "labels": ["bug"], + "number": 1783, + "title": "Change etag when content-encoding is used", + "url": "https://github.com/hapijs/hapi/issues/1783" + }, + { + "id": 37725548, + "labels": ["bug"], + "number": 1782, + "title": "server.inject() res.result does not reflect actual payload sent on 304/204", + "url": "https://github.com/hapijs/hapi/issues/1782" + }, + { + "id": 37725455, + "labels": ["bug"], + "number": 1781, + "title": "Send empty payload on 204", + "url": "https://github.com/hapijs/hapi/issues/1781" + }, + { + "id": 37712505, + "labels": ["bug"], + "number": 1778, + "title": "Do not create a duplicate Content-Type header on proxy passthrough", + "url": "https://github.com/hapijs/hapi/pull/1778" + }, + { + "id": 37704536, + "labels": ["bug"], + "number": 1777, + "title": "Duplicated \"Content-Type\" header on proxy requests", + "url": "https://github.com/hapijs/hapi/issues/1777" + }, + { + "id": 37698886, + "labels": ["bug"], + "number": 1776, + "title": "Proxy pass-through with onResponse fails to preserve vary header values", + "url": "https://github.com/hapijs/hapi/issues/1776" + }, + { + "id": 37630826, + "labels": ["test", "non issue"], + "number": 1774, + "title": "Style fixes", + "url": "https://github.com/hapijs/hapi/pull/1774" + }, + { + "id": 37614494, + "labels": ["bug"], + "number": 1773, + "title": "Windows path fails on trailing slash on view helpers", + "url": "https://github.com/hapijs/hapi/issues/1773" + }, + { + "id": 37612102, + "labels": ["bug"], + "number": 1772, + "title": "HEAD requests should retail etag header", + "url": "https://github.com/hapijs/hapi/issues/1772" + }, + { + "id": 37610676, + "labels": ["bug"], + "number": 1771, + "title": "Open open one file stream when using precompressed file", + "url": "https://github.com/hapijs/hapi/issues/1771" + }, + { + "id": 37536985, + "labels": ["bug"], + "number": 1769, + "title": "Plugin X missing dependency Y in server if manifest.plugins key order not carefully managed", + "url": "https://github.com/hapijs/hapi/issues/1769" + }, + { + "id": 37406301, + "labels": ["security"], + "number": 1766, + "title": "prepend jsonp callbacks with a comment to prevent the rosetta-flash vulnerability", + "url": "https://github.com/hapijs/hapi/pull/1766" + }, + { + "id": 37335229, + "labels": ["bug"], + "number": 1763, + "title": "fixes #1755 - stripTrailingSlash doesn't work when query variables are used", + "url": "https://github.com/hapijs/hapi/pull/1763" + }, + { + "id": 37292446, + "labels": ["bug"], + "number": 1762, + "title": "fix content-type overriding issue #1760.", + "url": "https://github.com/hapijs/hapi/pull/1762" + }, + { + "id": 37277845, + "labels": ["bug"], + "number": 1760, + "title": "How can I set Content-Type header to the content generated from reply.view?", + "url": "https://github.com/hapijs/hapi/issues/1760" + }, + { + "id": 37211901, + "labels": ["non issue"], + "number": 1756, + "title": "Follow coding conventions concerning semicolons; Don't initialize variab...", + "url": "https://github.com/hapijs/hapi/pull/1756" + }, + { + "id": 37179358, + "labels": ["bug"], + "number": 1755, + "title": "Server Options for Router: stripTrailingSlash doesn't work with query string", + "url": "https://github.com/hapijs/hapi/issues/1755" + }, + { + "id": 37102331, + "labels": ["feature"], + "number": 1754, + "title": "File handler to handle 206 Partial Content?", + "url": "https://github.com/hapijs/hapi/issues/1754" + }, + { + "id": 36984954, + "labels": ["bug"], + "number": 1752, + "title": "Adding helpful error message when pack.register is missing a callback", + "url": "https://github.com/hapijs/hapi/pull/1752" + }, + { + "id": 36984893, + "labels": ["bug"], + "number": 1751, + "title": "Calling pack.register without a callback has an unfriendly error", + "url": "https://github.com/hapijs/hapi/issues/1751" + }, + { + "id": 36749778, + "labels": ["feature"], + "number": 1745, + "title": "Add joi validation of pack options", + "url": "https://github.com/hapijs/hapi/pull/1745" + }, + { + "id": 36081683, + "labels": ["bug"], + "number": 1733, + "title": "log function should only emit once if _server object", + "url": "https://github.com/hapijs/hapi/pull/1733" + }, + { + "id": 35953854, + "labels": ["bug"], + "number": 1728, + "title": "6.x breaks plugin modules exporting functions", + "url": "https://github.com/hapijs/hapi/issues/1728" + }, + { + "id": 35743181, + "labels": ["bug"], + "number": 1721, + "title": "Validate pack options", + "url": "https://github.com/hapijs/hapi/issues/1721" + }, + { + "id": 34730475, + "labels": ["bug"], + "number": 1676, + "title": "Problem serving precompressed files with directory handler", + "url": "https://github.com/hapijs/hapi/issues/1676" + }, + { + "id": 27250311, + "labels": ["bug"], + "number": 1407, + "title": "Skip opening file or rendering view on head or 304", + "url": "https://github.com/hapijs/hapi/issues/1407" + } + ], + "number": 105, + "url": "https://github.com/hapijs/hapi/milestone/105", + "version": "6.1.0" + }, + { + "date": "2014-06-17T07:26:13Z", + "id": 689574, + "issues": [ + { + "id": 35739067, + "labels": ["bug"], + "number": 1720, + "title": "No way to handle root routes with `route: {prefix: '...'}`", + "url": "https://github.com/hapijs/hapi/issues/1720" + }, + { + "id": 35738835, + "labels": ["bug"], + "number": 1719, + "title": "Fixes undefined error in `plugin.dependency`", + "url": "https://github.com/hapijs/hapi/pull/1719" + } + ], + "number": 104, + "url": "https://github.com/hapijs/hapi/milestone/104", + "version": "6.0.2" + }, + { + "date": "2014-06-12T17:28:50Z", + "id": 688887, + "issues": [ + { + "id": 35564369, + "labels": ["bug"], + "number": 1710, + "title": "Buffer based passwords fail schema validation (6.0 regression)", + "url": "https://github.com/hapijs/hapi/issues/1710" + } + ], + "number": 103, + "url": "https://github.com/hapijs/hapi/milestone/103", + "version": "6.0.1" + }, + { + "date": "2014-06-12T05:03:02Z", + "id": 668412, + "issues": [ + { + "id": 39663877, + "labels": ["breaking changes"], + "number": 1841, + "title": "Missing plugin error on migrating from 5.0 provides no useful information", + "url": "https://github.com/hapijs/hapi/issues/1841" + }, + { + "id": 35527493, + "labels": ["bug"], + "number": 1708, + "title": "Hapi 6.0 no longer invalidates auth strategy on registration of route", + "url": "https://github.com/hapijs/hapi/issues/1708" + }, + { + "id": 35500950, + "labels": ["breaking changes", "release notes"], + "number": 1707, + "title": "6.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/1707" + }, + { + "id": 35453709, + "labels": ["breaking changes"], + "number": 1703, + "title": "Catbox 3.0 and drop internal require support", + "url": "https://github.com/hapijs/hapi/issues/1703" + }, + { + "id": 35434647, + "labels": ["bug"], + "number": 1701, + "title": "MODULE_NOT_FOUND on Windows when requirePath is absolute", + "url": "https://github.com/hapijs/hapi/issues/1701" + }, + { + "id": 35411709, + "labels": ["bug", "breaking changes"], + "number": 1700, + "title": "Change the order of actions when starting a pack", + "url": "https://github.com/hapijs/hapi/issues/1700" + }, + { + "id": 35262246, + "labels": ["bug", "breaking changes"], + "number": 1696, + "title": "Non-Error auth err responses are ignored in try mode", + "url": "https://github.com/hapijs/hapi/issues/1696" + }, + { + "id": 35260925, + "labels": ["feature"], + "number": 1695, + "title": "Preserve auth error on try", + "url": "https://github.com/hapijs/hapi/issues/1695" + }, + { + "id": 35228395, + "labels": ["feature"], + "number": 1694, + "title": "Minor error tweaks", + "url": "https://github.com/hapijs/hapi/issues/1694" + }, + { + "id": 35227068, + "labels": ["feature", "breaking changes"], + "number": 1693, + "title": "Enhance setting authentication defaults", + "url": "https://github.com/hapijs/hapi/issues/1693" + }, + { + "id": 35223414, + "labels": ["feature"], + "number": 1692, + "title": "Allow testing a request against any configured authentication strategy", + "url": "https://github.com/hapijs/hapi/issues/1692" + }, + { + "id": 35159547, + "labels": ["feature", "bug", "breaking changes"], + "number": 1691, + "title": "V6.0", + "url": "https://github.com/hapijs/hapi/pull/1691" + }, + { + "id": 35030922, + "labels": ["feature"], + "number": 1688, + "title": "Bring back reply.redirect()", + "url": "https://github.com/hapijs/hapi/issues/1688" + }, + { + "id": 35029890, + "labels": ["bug"], + "number": 1687, + "title": "Don't log auth non-error responses with 'error' tag", + "url": "https://github.com/hapijs/hapi/issues/1687" + }, + { + "id": 34824024, + "labels": ["feature"], + "number": 1679, + "title": "Allow cookie-specific settings for failAction, strictHeader, and clearInvalid", + "url": "https://github.com/hapijs/hapi/issues/1679" + }, + { + "id": 34807871, + "labels": ["feature"], + "number": 1678, + "title": "Expose the location header logic", + "url": "https://github.com/hapijs/hapi/issues/1678" + }, + { + "id": 34739893, + "labels": ["feature"], + "number": 1677, + "title": "Enhance manifest format to support registration options (select, prefix, vhost)", + "url": "https://github.com/hapijs/hapi/issues/1677" + }, + { + "id": 34723733, + "labels": ["breaking changes"], + "number": 1675, + "title": "Remove pack.list", + "url": "https://github.com/hapijs/hapi/issues/1675" + }, + { + "id": 34723536, + "labels": ["feature"], + "number": 1674, + "title": "Make plugin register() and dependency() selectable", + "url": "https://github.com/hapijs/hapi/issues/1674" + }, + { + "id": 34723332, + "labels": ["feature"], + "number": 1673, + "title": "Make plugin.events selectable", + "url": "https://github.com/hapijs/hapi/issues/1673" + }, + { + "id": 34486186, + "labels": ["feature", "breaking changes"], + "number": 1668, + "title": "Delete 'Accept-Encoding' header on proxy requests", + "url": "https://github.com/hapijs/hapi/issues/1668" + }, + { + "id": 34405582, + "labels": ["feature"], + "number": 1666, + "title": "Allow loading different plugins (or same plugins) to different servers in pack", + "url": "https://github.com/hapijs/hapi/issues/1666" + }, + { + "id": 34401817, + "labels": ["bug"], + "number": 1665, + "title": "duplicate require calls in hapi/lib/views.js", + "url": "https://github.com/hapijs/hapi/issues/1665" + }, + { + "id": 34344301, + "labels": ["breaking changes"], + "number": 1664, + "title": "Upgrading plugins to hapi 6.0 (preview)", + "url": "https://github.com/hapijs/hapi/issues/1664" + }, + { + "id": 34330401, + "labels": ["feature"], + "number": 1663, + "title": "Allow register to pre-select servers", + "url": "https://github.com/hapijs/hapi/issues/1663" + }, + { + "id": 34323488, + "labels": ["bug", "breaking changes"], + "number": 1662, + "title": "Config clones bind, app, and plugins", + "url": "https://github.com/hapijs/hapi/issues/1662" + }, + { + "id": 34319712, + "labels": ["bug"], + "number": 1661, + "title": "View manager clones engines including modules", + "url": "https://github.com/hapijs/hapi/issues/1661" + }, + { + "id": 34291571, + "labels": ["bug"], + "number": 1659, + "title": "plugin.view() modifies options' basePath", + "url": "https://github.com/hapijs/hapi/issues/1659" + }, + { + "id": 34291350, + "labels": ["feature"], + "number": 1658, + "title": "Set route path prefix when loading plugin", + "url": "https://github.com/hapijs/hapi/issues/1658" + }, + { + "id": 34274930, + "labels": ["breaking changes"], + "number": 1656, + "title": "Remove pack.require() and plugin.require()", + "url": "https://github.com/hapijs/hapi/issues/1656" + }, + { + "id": 34253624, + "labels": ["breaking changes"], + "number": 1655, + "title": "Remove support for string view engine config", + "url": "https://github.com/hapijs/hapi/issues/1655" + }, + { + "id": 34252199, + "labels": ["breaking changes"], + "number": 1653, + "title": "Move Composer into Pack.compose()", + "url": "https://github.com/hapijs/hapi/issues/1653" + }, + { + "id": 34248625, + "labels": ["breaking changes"], + "number": 1652, + "title": "Remove composer support for multiple packs", + "url": "https://github.com/hapijs/hapi/issues/1652" + }, + { + "id": 34248478, + "labels": ["breaking changes"], + "number": 1651, + "title": "6.0.0 Breaking Changes", + "url": "https://github.com/hapijs/hapi/issues/1651" + }, + { + "id": 29520030, + "labels": ["bug"], + "number": 1499, + "title": "Composer not resolving plugins correctly", + "url": "https://github.com/hapijs/hapi/issues/1499" + }, + { + "id": 29401362, + "labels": ["feature"], + "number": 1490, + "title": "Feature Request: composer.log", + "url": "https://github.com/hapijs/hapi/issues/1490" + }, + { + "id": 28938025, + "labels": ["bug"], + "number": 1471, + "title": "pack.requirePath vs view engine loader", + "url": "https://github.com/hapijs/hapi/issues/1471" + }, + { + "id": 16842723, + "labels": ["feature"], + "number": 981, + "title": "Scope plugin routes to a virtual host", + "url": "https://github.com/hapijs/hapi/issues/981" + } + ], "number": 102, - "title": "v0.6.0 merge", - "url": "https://github.com/hapijs/hapi/pull/102" - }, - { - "id": 6588234, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/102", + "version": "6.0.0" + }, + { + "date": "2014-05-24T23:30:34Z", + "id": 663669, + "issues": [ + { + "id": 31826841, + "labels": ["bug"], + "number": 1581, + "title": "Authentication throws are treated as valid reply()", + "url": "https://github.com/hapijs/hapi/issues/1581" + }, + { + "id": 31774411, + "labels": ["feature"], + "number": 1579, + "title": "Add option to remove trailing slashes to router", + "url": "https://github.com/hapijs/hapi/issues/1579" + }, + { + "id": 31517848, + "labels": ["feature"], + "number": 1574, + "title": "Document the best way to implement a 404 from the directory handler when using path callback", + "url": "https://github.com/hapijs/hapi/issues/1574" + }, + { + "id": 31517802, + "labels": ["feature"], + "number": 1573, + "title": "Server throttling controls do not log execution", + "url": "https://github.com/hapijs/hapi/issues/1573" + }, + { + "id": 29982952, + "labels": ["bug"], + "number": 1508, + "title": "Escaped error message with regex validation", + "url": "https://github.com/hapijs/hapi/issues/1508" + }, + { + "id": 29139773, + "labels": ["bug"], + "number": 1477, + "title": "proxy xforward option will set bad headers in some cases", + "url": "https://github.com/hapijs/hapi/issues/1477" + } + ], "number": 101, - "title": "modified new validation fns to use Utils.assert", - "url": "https://github.com/hapijs/hapi/pull/101" - }, - { - "id": 6587988, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/101", + "version": "5.1.0" + }, + { + "date": "2014-05-19T19:43:23Z", + "id": 662089, + "issues": [ + { + "id": 33825498, + "labels": ["breaking changes", "release notes"], + "number": 1645, + "title": "5.0.0 Release Notes", + "url": "https://github.com/hapijs/hapi/issues/1645" + }, + { + "id": 33822739, + "labels": ["bug", "breaking changes"], + "number": 1644, + "title": "request.params contains empty strings for missing optional params", + "url": "https://github.com/hapijs/hapi/issues/1644" + }, + { + "id": 33763537, + "labels": ["feature"], + "number": 1643, + "title": "Expose cross inputs as validation context", + "url": "https://github.com/hapijs/hapi/issues/1643" + }, + { + "id": 33763396, + "labels": ["feature"], + "number": 1642, + "title": "Cjihrig header validation", + "url": "https://github.com/hapijs/hapi/pull/1642" + }, + { + "id": 33763011, + "labels": ["feature", "breaking changes"], + "number": 1641, + "title": "Upgrade to joi 4.x", + "url": "https://github.com/hapijs/hapi/pull/1641" + }, + { + "id": 33762752, + "labels": ["breaking changes"], + "number": 1640, + "title": "Rename route `config.validate.path` to `config.validate.params`", + "url": "https://github.com/hapijs/hapi/issues/1640" + }, + { + "id": 33760725, + "labels": ["bug", "breaking changes"], + "number": 1639, + "title": "Response validation modifies payload", + "url": "https://github.com/hapijs/hapi/issues/1639" + }, + { + "id": 32929402, + "labels": ["feature"], + "number": 1622, + "title": "Extend Hapi cli to enable loading a module before loading hapi", + "url": "https://github.com/hapijs/hapi/pull/1622" + }, + { + "id": 32112873, + "labels": ["feature"], + "number": 1589, + "title": "Added validation for request headers.", + "url": "https://github.com/hapijs/hapi/pull/1589" + }, + { + "id": 32079306, + "labels": ["feature"], + "number": 1588, + "title": "Validation for cookies and other headers", + "url": "https://github.com/hapijs/hapi/issues/1588" + } + ], "number": 100, - "title": "New Query Validation Fns Added", - "url": "https://github.com/hapijs/hapi/pull/100" - }, - { - "id": 6586587, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/100", + "version": "5.0.0" + }, + { + "date": "2014-05-17T18:35:49Z", + "id": 661897, + "issues": [ + { + "id": 33696915, + "labels": ["bug"], + "number": 1638, + "title": "Unahndled Exception when a request is aborted", + "url": "https://github.com/hapijs/hapi/issues/1638" + } + ], "number": 99, - "title": "Simplified request log interface", - "url": "https://github.com/hapijs/hapi/pull/99" - }, - { - "id": 6531360, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/99", + "version": "4.1.4" + }, + { + "date": "2014-05-17T08:17:23Z", + "id": 657958, + "issues": [], + "number": 98, + "url": "https://github.com/hapijs/hapi/milestone/98", + "version": "4.1.3" + }, + { + "date": "2014-05-13T20:36:18Z", + "id": 657732, + "issues": [ + { + "id": 33433898, + "labels": ["bug"], + "number": 1635, + "title": "Remove reference to request in domain. Closes #1634", + "url": "https://github.com/hapijs/hapi/pull/1635" + }, + { + "id": 33433646, + "labels": ["bug"], + "number": 1634, + "title": "Request domain leaks request object", + "url": "https://github.com/hapijs/hapi/issues/1634" + } + ], + "number": 97, + "url": "https://github.com/hapijs/hapi/milestone/97", + "version": "4.1.2" + }, + { + "date": "2014-05-13T17:13:19Z", + "id": 646228, + "issues": [ + { + "id": 33345305, + "labels": ["bug"], + "number": 1633, + "title": "Rework domains to single entry", + "url": "https://github.com/hapijs/hapi/pull/1633" + }, + { + "id": 33334886, + "labels": ["bug"], + "number": 1632, + "title": "Clean response objects for aborted requests", + "url": "https://github.com/hapijs/hapi/pull/1632" + }, + { + "id": 32864332, + "labels": ["bug"], + "number": 1619, + "title": "Avoid async operations while protect is running", + "url": "https://github.com/hapijs/hapi/pull/1619" + } + ], "number": 96, - "title": "Small utils", - "url": "https://github.com/hapijs/hapi/pull/96" - }, - { - "id": 6370707, - "labels": [], - "number": 94, - "title": "debug interface, log interface", - "url": "https://github.com/hapijs/hapi/pull/94" - }, - { - "id": 6370459, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/96", + "version": "4.1.1" + }, + { + "date": "2014-05-01T16:33:46Z", + "id": 640014, + "issues": [ + { + "id": 31908458, + "labels": ["feature"], + "number": 1583, + "title": "Support JSON-derived media types", + "url": "https://github.com/hapijs/hapi/pull/1583" + }, + { + "id": 28377295, + "labels": ["feature", "security"], + "number": 1461, + "title": "Security headers", + "url": "https://github.com/hapijs/hapi/pull/1461" + } + ], "number": 93, - "title": "fix error on subsequent url accesses for queryval", - "url": "https://github.com/hapijs/hapi/pull/93" - }, - { - "id": 6370283, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/93", + "version": "4.1.0" + }, + { + "date": "2014-04-28T21:07:56Z", + "id": 641458, + "issues": [ + { + "id": 32398660, + "labels": ["bug"], + "number": 1604, + "title": "response emitter fails to retain custom event listeners once sent", + "url": "https://github.com/hapijs/hapi/issues/1604" + }, + { + "id": 32273012, + "labels": ["bug"], + "number": 1597, + "title": "Template helpers fail on relative paths", + "url": "https://github.com/hapijs/hapi/issues/1597" + } + ], + "number": 95, + "url": "https://github.com/hapijs/hapi/milestone/95", + "version": "4.0.3" + }, + { + "date": "2014-04-26T00:21:31Z", + "id": 640880, + "issues": [ + { + "id": 32275919, + "labels": ["bug"], + "number": 1598, + "title": "Throws when response does not have _close()", + "url": "https://github.com/hapijs/hapi/issues/1598" + } + ], + "number": 94, + "url": "https://github.com/hapijs/hapi/milestone/94", + "version": "4.0.2" + }, + { + "date": "2014-04-25T07:38:21Z", + "id": 626909, + "issues": [ + { + "id": 32159262, + "labels": ["bug"], + "number": 1594, + "title": "Can jsonp be optional?", + "url": "https://github.com/hapijs/hapi/issues/1594" + }, + { + "id": 32125444, + "labels": ["bug"], + "number": 1591, + "title": "Find better way to drain non file/socket stream than read()", + "url": "https://github.com/hapijs/hapi/issues/1591" + }, + { + "id": 32124988, + "labels": ["bug"], + "number": 1590, + "title": "RSS leak occurs when request does not read entire stream response", + "url": "https://github.com/hapijs/hapi/issues/1590" + }, + { + "id": 31519732, + "labels": ["feature"], + "number": 1575, + "title": "Precompile joi response validation", + "url": "https://github.com/hapijs/hapi/issues/1575" + }, + { + "id": 31397584, + "labels": ["feature"], + "number": 1569, + "title": "Move ext topo sort to its own module", + "url": "https://github.com/hapijs/hapi/issues/1569" + }, + { + "id": 31302876, + "labels": ["bug"], + "number": 1567, + "title": "allow defaultExtension", + "url": "https://github.com/hapijs/hapi/pull/1567" + }, + { + "id": 31300889, + "labels": ["feature"], + "number": 1566, + "title": "Precompile joi validation", + "url": "https://github.com/hapijs/hapi/issues/1566" + } + ], "number": 92, - "title": "Fix example", - "url": "https://github.com/hapijs/hapi/pull/92" - }, - { - "id": 6367866, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/92", + "version": "4.0.1" + }, + { + "date": "2014-04-08T07:22:36Z", + "id": 613856, + "issues": [ + { + "id": 31028615, + "labels": ["breaking changes"], + "number": 1560, + "title": "4.0.0", + "url": "https://github.com/hapijs/hapi/issues/1560" + }, + { + "id": 31028254, + "labels": ["feature", "breaking changes"], + "number": 1559, + "title": "joi 3.0", + "url": "https://github.com/hapijs/hapi/issues/1559" + }, + { + "id": 31028168, + "labels": ["breaking changes"], + "number": 1558, + "title": "Change Hapi.utils.version() to Hapi.version and remove Hoek alias", + "url": "https://github.com/hapijs/hapi/issues/1558" + }, + { + "id": 30806050, + "labels": ["test"], + "number": 1554, + "title": "coverage, closes #1524", + "url": "https://github.com/hapijs/hapi/pull/1554" + }, + { + "id": 30798078, + "labels": ["bug"], + "number": 1551, + "title": "add an insecureAgent when maxSockets is set, closes #1512", + "url": "https://github.com/hapijs/hapi/pull/1551" + }, + { + "id": 30736930, + "labels": ["bug"], + "number": 1548, + "title": "wip: fix windows bugs", + "url": "https://github.com/hapijs/hapi/pull/1548" + }, + { + "id": 30643712, + "labels": ["bug"], + "number": 1547, + "title": "Make certain that path is relative before joining it to relativeTo", + "url": "https://github.com/hapijs/hapi/pull/1547" + }, + { + "id": 30102493, + "labels": ["test"], + "number": 1524, + "title": "Coverage after lab partial condition result coverage", + "url": "https://github.com/hapijs/hapi/issues/1524" + }, + { + "id": 30088910, + "labels": ["feature"], + "number": 1521, + "title": "Allow plugins to register handler types", + "url": "https://github.com/hapijs/hapi/pull/1521" + } + ], "number": 91, - "title": "QueryValidation fixes, add default behavior for unspecified params, added small tests", - "url": "https://github.com/hapijs/hapi/pull/91" - }, - { - "id": 5746131, - "labels": [], + "url": "https://github.com/hapijs/hapi/milestone/91", + "version": "4.0.0" + }, + { + "date": "2014-03-29T08:27:53Z", + "id": 607421, + "issues": [ + { + "id": 30432972, + "labels": ["bug", "documentation"], + "number": 1541, + "title": "Clarify that statusCode key of stream response passed in response", + "url": "https://github.com/hapijs/hapi/issues/1541" + }, + { + "id": 30432641, + "labels": ["bug"], + "number": 1540, + "title": "Pre-gzipped source stream not properly tested for being the active source", + "url": "https://github.com/hapijs/hapi/issues/1540" + }, + { + "id": 30412496, + "labels": ["bug"], + "number": 1538, + "title": "Passing Error objects can leak message in 500 response", + "url": "https://github.com/hapijs/hapi/issues/1538" + }, + { + "id": 30368792, + "labels": ["bug"], + "number": 1536, + "title": "maxEventLoopDelay fails to catch when load is too high to reach next sample interval", + "url": "https://github.com/hapijs/hapi/issues/1536" + }, + { + "id": 30368133, + "labels": ["bug", "breaking changes"], + "number": 1535, + "title": "Cannot set maxSockets to node default", + "url": "https://github.com/hapijs/hapi/issues/1535" + }, + { + "id": 30350368, + "labels": ["bug"], + "number": 1533, + "title": "Proxy without passThrough fails to set cache-control header", + "url": "https://github.com/hapijs/hapi/issues/1533" + }, + { + "id": 30279410, + "labels": ["bug"], + "number": 1532, + "title": "Multipart payload to files with multiple files skips second file when large", + "url": "https://github.com/hapijs/hapi/issues/1532" + }, + { + "id": 30264489, + "labels": ["bug"], + "number": 1531, + "title": "pack.log() doesn't retain server debug false setting", + "url": "https://github.com/hapijs/hapi/issues/1531" + }, + { + "id": 30262806, + "labels": ["bug"], + "number": 1530, + "title": "plugin.method() should use method bind before plugin bind", + "url": "https://github.com/hapijs/hapi/issues/1530" + }, + { + "id": 30141325, + "labels": ["feature"], + "number": 1525, + "title": "expose filename and headers for streams in a multipart form", + "url": "https://github.com/hapijs/hapi/pull/1525" + }, + { + "id": 30101811, + "labels": ["feature", "support"], + "number": 1523, + "title": "Question: How to validate payload with templated response properly ?", + "url": "https://github.com/hapijs/hapi/issues/1523" + }, + { + "id": 30084128, + "labels": ["feature", "bug", "documentation"], + "number": 1520, + "title": "server.table() mis-documented, missing args, and route.table() is wrong", + "url": "https://github.com/hapijs/hapi/issues/1520" + }, + { + "id": 30064158, + "labels": ["bug"], + "number": 1518, + "title": "Server timeout config allows invalid values", + "url": "https://github.com/hapijs/hapi/issues/1518" + }, + { + "id": 30056072, + "labels": ["bug"], + "number": 1517, + "title": "Proxy handler payload config validation using incorrect variable", + "url": "https://github.com/hapijs/hapi/issues/1517" + }, + { + "id": 30013788, + "labels": ["test"], + "number": 1515, + "title": "Coverage to 100% after lab logical statement support", + "url": "https://github.com/hapijs/hapi/issues/1515" + }, + { + "id": 30013363, + "labels": ["bug"], + "number": 1514, + "title": "Server allows duplicate lables", + "url": "https://github.com/hapijs/hapi/issues/1514" + }, + { + "id": 30012147, + "labels": ["bug"], + "number": 1513, + "title": "Authentication userland code not protected by domain", + "url": "https://github.com/hapijs/hapi/issues/1513" + } + ], + "number": 90, + "url": "https://github.com/hapijs/hapi/milestone/90", + "version": "3.1.0" + }, + { + "date": "2014-03-24T06:38:33Z", + "id": 606695, + "issues": [ + { + "id": 29972843, + "labels": ["bug"], + "number": 1507, + "title": "request.setUrl('') throws", + "url": "https://github.com/hapijs/hapi/issues/1507" + } + ], + "number": 89, + "url": "https://github.com/hapijs/hapi/milestone/89", + "version": "3.0.2" + }, + { + "date": "2014-03-22T21:20:35Z", + "id": 602268, + "issues": [ + { + "id": 29666316, + "labels": ["bug"], + "number": 1503, + "title": "plugin.method(name, fn, [options]) fails ", + "url": "https://github.com/hapijs/hapi/issues/1503" + } + ], + "number": 88, + "url": "https://github.com/hapijs/hapi/milestone/88", + "version": "3.0.1" + }, + { + "date": "2014-03-12T23:45:58Z", + "id": 580001, + "issues": [ + { + "id": 29278257, + "labels": ["test"], + "number": 1485, + "title": "Bring coverage back to 100% after lab fix", + "url": "https://github.com/hapijs/hapi/issues/1485" + }, + { + "id": 29207071, + "labels": ["bug"], + "number": 1483, + "title": "server.helper cache hit causing the object type to be different", + "url": "https://github.com/hapijs/hapi/issues/1483" + }, + { + "id": 29155250, + "labels": [], + "number": 1479, + "title": "Less major version drama", + "url": "https://github.com/hapijs/hapi/issues/1479" + }, + { + "id": 29154770, + "labels": ["feature"], + "number": 1478, + "title": "Use joi 2.8 alternatives()", + "url": "https://github.com/hapijs/hapi/issues/1478" + }, + { + "id": 29123940, + "labels": ["feature"], + "number": 1476, + "title": "add PATCH to default cors methods, closes #1475", + "url": "https://github.com/hapijs/hapi/pull/1476" + }, + { + "id": 29122304, + "labels": ["feature"], + "number": 1475, + "title": "Include PATCH method in options/cors/methods default", + "url": "https://github.com/hapijs/hapi/issues/1475" + }, + { + "id": 29015182, + "labels": ["breaking changes"], + "number": 1474, + "title": "v3.0.0 Breaking Changes", + "url": "https://github.com/hapijs/hapi/issues/1474" + }, + { + "id": 29014934, + "labels": ["breaking changes"], + "number": 1473, + "title": "Drop dtrace support", + "url": "https://github.com/hapijs/hapi/issues/1473" + }, + { + "id": 28589222, + "labels": ["breaking changes"], + "number": 1466, + "title": "Drop support for server helpers", + "url": "https://github.com/hapijs/hapi/issues/1466" + }, + { + "id": 28567641, + "labels": ["feature", "breaking changes"], + "number": 1465, + "title": "Migrate to catbox 2.0", + "url": "https://github.com/hapijs/hapi/issues/1465" + }, + { + "id": 28471154, + "labels": ["bug"], + "number": 1464, + "title": "When in a route config, Joi.any.rename(, {move:true}) doesnt move item in the payload", + "url": "https://github.com/hapijs/hapi/issues/1464" + }, + { + "id": 28270244, + "labels": ["feature", "bug"], + "number": 1458, + "title": "Removed Http(s) globalAgent settings", + "url": "https://github.com/hapijs/hapi/pull/1458" + } + ], + "number": 86, + "url": "https://github.com/hapijs/hapi/milestone/86", + "version": "3.0.0" + }, + { + "date": "2014-02-25T15:49:24Z", + "id": 576257, + "issues": [ + { + "id": 28145808, + "labels": ["feature", "breaking changes"], + "number": 1455, + "title": "Print to console server logs based on debug config", + "url": "https://github.com/hapijs/hapi/issues/1455" + }, + { + "id": 28115430, + "labels": ["feature"], + "number": 1453, + "title": "Include prerequisites in default view context. #1452", + "url": "https://github.com/hapijs/hapi/pull/1453" + }, + { + "id": 28113128, + "labels": ["feature"], + "number": 1452, + "title": "Perhaps include `request.pre` in handler view context ", + "url": "https://github.com/hapijs/hapi/issues/1452" + }, + { + "id": 28108912, + "labels": ["bug"], + "number": 1451, + "title": "Objects created in plugin.dependency or plugin.after are monitored by the wrong domain", + "url": "https://github.com/hapijs/hapi/issues/1451" + }, + { + "id": 28107871, + "labels": ["feature"], + "number": 1450, + "title": "Enable handlers to use the prerequisite method string notation", + "url": "https://github.com/hapijs/hapi/issues/1450" + }, + { + "id": 28107861, + "labels": ["feature"], + "number": 1449, + "title": "Allow server methods names to include '.' (nested)", + "url": "https://github.com/hapijs/hapi/issues/1449" + }, + { + "id": 28107836, + "labels": ["bug"], + "number": 1448, + "title": "Prerequisite string notation parsing errors", + "url": "https://github.com/hapijs/hapi/issues/1448" + }, + { + "id": 28107823, + "labels": ["feature"], + "number": 1447, + "title": "Allow prerequisites string notation to use method name without ()", + "url": "https://github.com/hapijs/hapi/issues/1447" + }, + { + "id": 28107802, + "labels": ["documentation"], + "number": 1446, + "title": "Document server method callback 'isUncacheable' argument", + "url": "https://github.com/hapijs/hapi/issues/1446" + }, + { + "id": 28107788, + "labels": ["feature"], + "number": 1445, + "title": "Server method bind option", + "url": "https://github.com/hapijs/hapi/issues/1445" + }, + { + "id": 28052225, + "labels": ["bug"], + "number": 1442, + "title": "Response 304", + "url": "https://github.com/hapijs/hapi/pull/1442" + }, + { + "id": 27978477, + "labels": ["bug"], + "number": 1437, + "title": "Safari 6 reload bug using directory handler", + "url": "https://github.com/hapijs/hapi/issues/1437" + } + ], + "number": 85, + "url": "https://github.com/hapijs/hapi/milestone/85", + "version": "2.6.0" + }, + { + "date": "2014-02-21T07:57:24Z", + "id": 571322, + "issues": [ + { + "id": 27997942, + "labels": ["bug"], + "number": 1440, + "title": "Redirecting from within an Auth.Scheme generates a Circular Reference", + "url": "https://github.com/hapijs/hapi/issues/1440" + }, + { + "id": 27988781, + "labels": ["bug"], + "number": 1439, + "title": "proper etag formatting", + "url": "https://github.com/hapijs/hapi/pull/1439" + }, + { + "id": 27923789, + "labels": ["feature"], + "number": 1434, + "title": "Allow overriding the filename in content-disposition headers", + "url": "https://github.com/hapijs/hapi/pull/1434" + }, + { + "id": 27814764, + "labels": ["feature", "breaking changes"], + "number": 1432, + "title": "Replace server helpers with server methods", + "url": "https://github.com/hapijs/hapi/issues/1432" + }, + { + "id": 27489774, + "labels": ["feature"], + "number": 1418, + "title": "normalise callback API usage OR outsmart callback API inconsistency", + "url": "https://github.com/hapijs/hapi/issues/1418" + }, + { + "id": 25106588, + "labels": ["bug"], + "number": 1299, + "title": "thrown errors inside server.inject does not propagate", + "url": "https://github.com/hapijs/hapi/issues/1299" + } + ], + "number": 84, + "url": "https://github.com/hapijs/hapi/milestone/84", + "version": "2.5.0" + }, + { + "date": "2014-02-17T06:39:52Z", + "id": 568382, + "issues": [ + { + "id": 27694794, + "labels": ["bug"], + "number": 1430, + "title": "Server fails to parse \"\" cookie value", + "url": "https://github.com/hapijs/hapi/issues/1430" + }, + { + "id": 27595788, + "labels": ["bug"], + "number": 1428, + "title": "request.getLog() includes same event multiple times when using multiple tags", + "url": "https://github.com/hapijs/hapi/issues/1428" + }, + { + "id": 27546665, + "labels": ["feature"], + "number": 1425, + "title": "return a reference to the server when adding via pack.server", + "url": "https://github.com/hapijs/hapi/pull/1425" + }, + { + "id": 27546446, + "labels": ["feature", "documentation"], + "number": 1424, + "title": "Searching actual working SSE example (#1008 does not work for me)", + "url": "https://github.com/hapijs/hapi/issues/1424" + }, + { + "id": 27506581, + "labels": ["feature"], + "number": 1419, + "title": "Send newline \\n after all responses", + "url": "https://github.com/hapijs/hapi/issues/1419" + } + ], + "number": 83, + "url": "https://github.com/hapijs/hapi/milestone/83", + "version": "2.4.0" + }, + { + "date": "2014-02-13T13:16:52Z", + "id": 565476, + "issues": [ + { + "id": 25884301, + "labels": ["bug"], + "number": 1341, + "title": "Cookie validation does not respect the \"strict\" option", + "url": "https://github.com/hapijs/hapi/issues/1341" + }, + { + "id": 25459331, + "labels": ["bug", "breaking changes"], + "number": 1320, + "title": "Add support for asynchronous view rendering", + "url": "https://github.com/hapijs/hapi/issues/1320" + } + ], + "number": 82, + "url": "https://github.com/hapijs/hapi/milestone/82", + "version": "2.3.0" + }, + { + "date": "2014-02-10T23:37:03Z", + "id": 548513, + "issues": [ + { + "id": 27586120, + "labels": ["security"], + "number": 1427, + "title": "File descriptor leak can cause DoS vulnerability in v2.0 and v2.1", + "url": "https://github.com/hapijs/hapi/issues/1427" + }, + { + "id": 27250771, + "labels": ["bug"], + "number": 1414, + "title": "Sending incorrect status code (200) when file fails to open before transmit", + "url": "https://github.com/hapijs/hapi/issues/1414" + }, + { + "id": 27250728, + "labels": ["bug"], + "number": 1413, + "title": "File stream is opened before necessary (e.g. if replaced by another response in ext)", + "url": "https://github.com/hapijs/hapi/issues/1413" + }, + { + "id": 27250671, + "labels": ["bug"], + "number": 1412, + "title": "Missing file (404) not captured by onPreResponse", + "url": "https://github.com/hapijs/hapi/issues/1412" + }, + { + "id": 27250634, + "labels": ["bug"], + "number": 1411, + "title": "Wasteful encoder prep when response is 304 or head", + "url": "https://github.com/hapijs/hapi/issues/1411" + }, + { + "id": 27250607, + "labels": ["bug"], + "number": 1410, + "title": "passThrough statusCode overrides manual code value", + "url": "https://github.com/hapijs/hapi/issues/1410" + }, + { + "id": 27250538, + "labels": ["bug"], + "number": 1409, + "title": "Status code set from upstream without passThrough flag", + "url": "https://github.com/hapijs/hapi/issues/1409" + }, + { + "id": 27250504, + "labels": ["bug"], + "number": 1408, + "title": "precompressed file handle not closed when using head or 304", + "url": "https://github.com/hapijs/hapi/issues/1408" + }, + { + "id": 27206958, + "labels": ["bug"], + "number": 1405, + "title": "Call parseInt() for Joi-validated integers", + "url": "https://github.com/hapijs/hapi/issues/1405" + }, + { + "id": 27197108, + "labels": ["bug"], + "number": 1404, + "title": "Protect JSON.stringify from throwing.", + "url": "https://github.com/hapijs/hapi/issues/1404" + }, + { + "id": 27103534, + "labels": ["bug"], + "number": 1401, + "title": "route.payload.allow as Array never matches", + "url": "https://github.com/hapijs/hapi/issues/1401" + }, + { + "id": 27070865, + "labels": ["feature", "bug"], + "number": 1400, + "title": "Question: Can you get a log of requests that don't pass validation?", + "url": "https://github.com/hapijs/hapi/issues/1400" + }, + { + "id": 27039241, + "labels": ["bug"], + "number": 1395, + "title": "JSON circular structure error in authentication error logging", + "url": "https://github.com/hapijs/hapi/issues/1395" + }, + { + "id": 26916095, + "labels": ["feature"], + "number": 1393, + "title": "add `gunzip` as third option to `parse`; resolves #1391", + "url": "https://github.com/hapijs/hapi/pull/1393" + }, + { + "id": 26905894, + "labels": ["feature"], + "number": 1391, + "title": "Disable autoparsing without losing gzip", + "url": "https://github.com/hapijs/hapi/issues/1391" + }, + { + "id": 26848684, + "labels": ["bug", "security"], + "number": 1387, + "title": "EMFILE error when hapi serves static files over period of time in hapi 2.1.2", + "url": "https://github.com/hapijs/hapi/issues/1387" + }, + { + "id": 26766789, + "labels": ["feature"], + "number": 1382, + "title": "Make joi optional for route validation", + "url": "https://github.com/hapijs/hapi/issues/1382" + }, + { + "id": 26755930, + "labels": ["feature"], + "number": 1380, + "title": "Allow bind context for view handler", + "url": "https://github.com/hapijs/hapi/pull/1380" + }, + { + "id": 26726953, + "labels": ["feature"], + "number": 1379, + "title": "plugin.bind does not apply to proxy handlers", + "url": "https://github.com/hapijs/hapi/issues/1379" + }, + { + "id": 26725944, + "labels": ["feature", "breaking changes"], + "number": 1378, + "title": "add failureResponse option to proxy handler", + "url": "https://github.com/hapijs/hapi/pull/1378" + }, + { + "id": 26648586, + "labels": ["test"], + "number": 1372, + "title": "test that handler isn't called when a request is interrupted", + "url": "https://github.com/hapijs/hapi/issues/1372" + }, + { + "id": 26366450, + "labels": ["bug"], + "number": 1362, + "title": "(cookies) TypeError: Cannot call method 'match' of undefined", + "url": "https://github.com/hapijs/hapi/issues/1362" + }, + { + "id": 26333762, + "labels": ["bug"], + "number": 1357, + "title": "specify hoek minor version", + "url": "https://github.com/hapijs/hapi/pull/1357" + }, + { + "id": 26316322, + "labels": ["feature"], + "number": 1354, + "title": "Use configuration objects to register helpers", + "url": "https://github.com/hapijs/hapi/pull/1354" + }, + { + "id": 25819356, + "labels": ["bug", "support"], + "number": 1333, + "title": "Clarification on 'stream' changes from 1.20.x to 2.0.x", + "url": "https://github.com/hapijs/hapi/issues/1333" + }, + { + "id": 25630130, + "labels": ["feature"], + "number": 1328, + "title": "How to handle custom POST content-types", + "url": "https://github.com/hapijs/hapi/issues/1328" + } + ], + "number": 81, + "url": "https://github.com/hapijs/hapi/milestone/81", + "version": "2.2.0" + }, + { + "date": "2014-01-27T08:45:55Z", + "id": 542295, + "issues": [ + { + "id": 26338082, + "labels": ["bug"], + "number": 1359, + "title": "Ext reply(null).state() race condition", + "url": "https://github.com/hapijs/hapi/issues/1359" + }, + { + "id": 26299986, + "labels": ["feature"], + "number": 1351, + "title": "Prepare for node 0.12", + "url": "https://github.com/hapijs/hapi/issues/1351" + } + ], + "number": 80, + "url": "https://github.com/hapijs/hapi/milestone/80", + "version": "2.1.2" + }, + { + "date": "2014-01-21T09:12:12Z", + "id": 542008, + "issues": [ + { + "id": 25973253, + "labels": ["bug"], + "number": 1347, + "title": "Views should not use basePath when path is absolute", + "url": "https://github.com/hapijs/hapi/issues/1347" + } + ], + "number": 79, + "url": "https://github.com/hapijs/hapi/milestone/79", + "version": "2.1.1" + }, + { + "date": "2014-01-21T00:13:49Z", + "id": 525367, + "issues": [ + { + "id": 25950914, + "labels": ["feature", "breaking changes"], + "number": 1344, + "title": "Use the plugin loader when configured to load view engines", + "url": "https://github.com/hapijs/hapi/issues/1344" + }, + { + "id": 25853763, + "labels": ["feature"], + "number": 1336, + "title": "Allow custom view layout folder", + "url": "https://github.com/hapijs/hapi/issues/1336" + }, + { + "id": 25853746, + "labels": ["bug"], + "number": 1335, + "title": "Allow view layout to contain a string and boolean", + "url": "https://github.com/hapijs/hapi/issues/1335" + }, + { + "id": 24761932, + "labels": ["test"], + "number": 1245, + "title": "Replace request with nipple in tests", + "url": "https://github.com/hapijs/hapi/issues/1245" + } + ], + "number": 78, + "url": "https://github.com/hapijs/hapi/milestone/78", + "version": "2.1.0" + }, + { + "date": "2014-01-17T09:18:31Z", + "id": 486093, + "issues": [ + { + "id": 25769294, + "labels": ["bug"], + "number": 1332, + "title": "Payload always logging an error regardless of error state", + "url": "https://github.com/hapijs/hapi/issues/1332" + }, + { + "id": 25702988, + "labels": [], + "number": 1331, + "title": "Fix query(string) regression", + "url": "https://github.com/hapijs/hapi/pull/1331" + }, + { + "id": 25624890, + "labels": [], + "number": 1327, + "title": "Better debug support for object data", + "url": "https://github.com/hapijs/hapi/pull/1327" + }, + { + "id": 25543300, + "labels": ["bug"], + "number": 1324, + "title": "When no query params are sent, request.params is null instead of {}.", + "url": "https://github.com/hapijs/hapi/issues/1324" + }, + { + "id": 25471515, + "labels": ["feature"], + "number": 1322, + "title": "Does Hapi support multiple view templates?", + "url": "https://github.com/hapijs/hapi/issues/1322" + }, + { + "id": 25367273, + "labels": ["feature"], + "number": 1317, + "title": "Cannot Parse form-encoded arrays", + "url": "https://github.com/hapijs/hapi/issues/1317" + }, + { + "id": 25300507, + "labels": ["breaking changes"], + "number": 1314, + "title": "Replace old payload try mode with failAction", + "url": "https://github.com/hapijs/hapi/issues/1314" + }, + { + "id": 25299052, + "labels": ["breaking changes"], + "number": 1313, + "title": "Change redirectToSlash default value to true", + "url": "https://github.com/hapijs/hapi/issues/1313" + }, + { + "id": 25280844, + "labels": ["breaking changes"], + "number": 1312, + "title": "Remove special values for server config 'files.relativeTo'", + "url": "https://github.com/hapijs/hapi/issues/1312" + }, + { + "id": 25271035, + "labels": ["feature"], + "number": 1311, + "title": "Implement saving payload to file when not using mutlipart", + "url": "https://github.com/hapijs/hapi/issues/1311" + }, + { + "id": 25259073, + "labels": ["feature"], + "number": 1309, + "title": "Migrate all the plugins to 2.0", + "url": "https://github.com/hapijs/hapi/issues/1309" + }, + { + "id": 25224198, + "labels": ["feature"], + "number": 1304, + "title": "Request 'peek' event", + "url": "https://github.com/hapijs/hapi/issues/1304" + }, + { + "id": 25115520, + "labels": ["feature"], + "number": 1301, + "title": "`querystring` => `qs`, adds support for nested objects", + "url": "https://github.com/hapijs/hapi/pull/1301" + }, + { + "id": 25110485, + "labels": ["bug"], + "number": 1300, + "title": "Do not overwrite Access-Control-Allow-Origin", + "url": "https://github.com/hapijs/hapi/issues/1300" + }, + { + "id": 25079709, + "labels": [], + "number": 1297, + "title": "Document validation option in settings", + "url": "https://github.com/hapijs/hapi/pull/1297" + }, + { + "id": 25070603, + "labels": ["support"], + "number": 1296, + "title": "Possible to overwrite plugin options on a per server scope?", + "url": "https://github.com/hapijs/hapi/issues/1296" + }, + { + "id": 25067130, + "labels": ["feature", "breaking changes"], + "number": 1295, + "title": "Replace route payload.mode with payload.output and payload.parse", + "url": "https://github.com/hapijs/hapi/issues/1295" + }, + { + "id": 25051041, + "labels": ["feature"], + "number": 1294, + "title": "Allow 'domain' option in cookie authentication scheme config", + "url": "https://github.com/hapijs/hapi/issues/1294" + }, + { + "id": 25046914, + "labels": ["feature"], + "number": 1292, + "title": "Skip loading entire multipart to memory and stream directly to multiparty", + "url": "https://github.com/hapijs/hapi/issues/1292" + }, + { + "id": 25046840, + "labels": ["feature", "breaking changes"], + "number": 1291, + "title": "Remove server config normalizeRequestPath and default to true", + "url": "https://github.com/hapijs/hapi/issues/1291" + }, + { + "id": 25046333, + "labels": ["bug"], + "number": 1290, + "title": "Partial path param match /a{b}c does not apply isCaseSensitive", + "url": "https://github.com/hapijs/hapi/issues/1290" + }, + { + "id": 25046247, + "labels": ["support"], + "number": 1289, + "title": "Problem in very large file upload", + "url": "https://github.com/hapijs/hapi/issues/1289" + }, + { + "id": 25003518, + "labels": ["breaking changes"], + "number": 1288, + "title": "Move auth schemes to plugins", + "url": "https://github.com/hapijs/hapi/issues/1288" + }, + { + "id": 25000827, + "labels": ["feature", "breaking changes"], + "number": 1287, + "title": "Split server.auth() into server.auth.scheme() and server.auth.strategy()", + "url": "https://github.com/hapijs/hapi/issues/1287" + }, + { + "id": 24991526, + "labels": ["feature"], + "number": 1286, + "title": "Expose response preview as public API", + "url": "https://github.com/hapijs/hapi/issues/1286" + }, + { + "id": 24976868, + "labels": ["feature", "breaking changes"], + "number": 1285, + "title": "Change authenticate() callback to reply interface", + "url": "https://github.com/hapijs/hapi/issues/1285" + }, + { + "id": 24976844, + "labels": ["feature", "breaking changes"], + "number": 1284, + "title": "Expose request.response and change it to direct ref from func", + "url": "https://github.com/hapijs/hapi/issues/1284" + }, + { + "id": 24955113, + "labels": ["bug", "test"], + "number": 1282, + "title": "Security tests using reply().setState() which throws", + "url": "https://github.com/hapijs/hapi/issues/1282" + }, + { + "id": 24954052, + "labels": ["breaking changes"], + "number": 1281, + "title": "Change authenticate() callback signature", + "url": "https://github.com/hapijs/hapi/issues/1281" + }, + { + "id": 24953717, + "labels": ["feature"], + "number": 1280, + "title": "Support node callback pattern (err, result) for reply()", + "url": "https://github.com/hapijs/hapi/issues/1280" + }, + { + "id": 24928975, + "labels": ["feature", "breaking changes"], + "number": 1279, + "title": "Convert ext method signature to handler", + "url": "https://github.com/hapijs/hapi/issues/1279" + }, + { + "id": 24926637, + "labels": ["bug", "breaking changes"], + "number": 1277, + "title": "Emit 'internalError' for every 500, not just the one sent back", + "url": "https://github.com/hapijs/hapi/issues/1277" + }, + { + "id": 24926265, + "labels": ["bug"], + "number": 1276, + "title": "Retain headers in 304 response", + "url": "https://github.com/hapijs/hapi/issues/1276" + }, + { + "id": 24910679, + "labels": ["feature", "breaking changes"], + "number": 1275, + "title": "Boom 2.0", + "url": "https://github.com/hapijs/hapi/issues/1275" + }, + { + "id": 24900569, + "labels": [], + "number": 1274, + "title": "Fixed code example in README to comply with 2.0.x", + "url": "https://github.com/hapijs/hapi/pull/1274" + }, + { + "id": 24864151, + "labels": ["feature"], + "number": 1272, + "title": "Redo reply.close()", + "url": "https://github.com/hapijs/hapi/issues/1272" + }, + { + "id": 24856617, + "labels": ["bug"], + "number": 1270, + "title": "Apply encoding to Response.Payload operations consistently", + "url": "https://github.com/hapijs/hapi/issues/1270" + }, + { + "id": 24856599, + "labels": ["feature", "breaking changes"], + "number": 1269, + "title": "Manage state all in the request", + "url": "https://github.com/hapijs/hapi/issues/1269" + }, + { + "id": 24856155, + "labels": ["feature"], + "number": 1268, + "title": "Expose more response properties", + "url": "https://github.com/hapijs/hapi/issues/1268" + }, + { + "id": 24852398, + "labels": ["feature"], + "number": 1267, + "title": "Add 'app' and 'plugins' to response object", + "url": "https://github.com/hapijs/hapi/issues/1267" + }, + { + "id": 24850760, + "labels": ["breaking changes"], + "number": 1266, + "title": "Remove 'response.variety' support", + "url": "https://github.com/hapijs/hapi/issues/1266" + }, + { + "id": 24812590, + "labels": ["bug", "breaking changes"], + "number": 1264, + "title": "requesting url that is not encoded correctly should return 400, not 404", + "url": "https://github.com/hapijs/hapi/issues/1264" + }, + { + "id": 24806722, + "labels": ["breaking changes"], + "number": 1262, + "title": "Remove response.getTtl()", + "url": "https://github.com/hapijs/hapi/issues/1262" + }, + { + "id": 24802681, + "labels": ["breaking changes"], + "number": 1261, + "title": "Rename response.uri() to response.location()", + "url": "https://github.com/hapijs/hapi/issues/1261" + }, + { + "id": 24792922, + "labels": ["bug"], + "number": 1259, + "title": "onPreResponse not getting 404 for missing directory files", + "url": "https://github.com/hapijs/hapi/issues/1259" + }, + { + "id": 24779374, + "labels": ["feature", "breaking changes"], + "number": 1258, + "title": "Default Buffer responses to application/octet-stream", + "url": "https://github.com/hapijs/hapi/issues/1258" + }, + { + "id": 24779095, + "labels": ["documentation"], + "number": 1257, + "title": "Validate all examples", + "url": "https://github.com/hapijs/hapi/issues/1257" + }, + { + "id": 24779068, + "labels": ["breaking changes"], + "number": 1256, + "title": "Remove access to internal response types", + "url": "https://github.com/hapijs/hapi/issues/1256" + }, + { + "id": 24773989, + "labels": ["bug"], + "number": 1254, + "title": "File response leaks fd if gzipped stream used instead and the other way.", + "url": "https://github.com/hapijs/hapi/issues/1254" + }, + { + "id": 24772000, + "labels": ["bug"], + "number": 1253, + "title": "in directory, fix the listing of subdirs that reside in a subdirs that have spaces", + "url": "https://github.com/hapijs/hapi/pull/1253" + }, + { + "id": 24763092, + "labels": ["bug"], + "number": 1252, + "title": "Protect response payload stream wrapper from multiple replays", + "url": "https://github.com/hapijs/hapi/issues/1252" + }, + { + "id": 24763031, + "labels": ["feature", "breaking changes"], + "number": 1251, + "title": "Replace File from response type to reply.file() helper", + "url": "https://github.com/hapijs/hapi/issues/1251" + }, + { + "id": 24762881, + "labels": ["feature"], + "number": 1249, + "title": "Cleanup use of request._route.cache and request.route.cache", + "url": "https://github.com/hapijs/hapi/issues/1249" + }, + { + "id": 24762671, + "labels": ["non issue"], + "number": 1248, + "title": "Review proxy upstream ttl passing", + "url": "https://github.com/hapijs/hapi/issues/1248" + }, + { + "id": 24762458, + "labels": ["feature", "breaking changes"], + "number": 1247, + "title": "Clean up postResponse in proxy config", + "url": "https://github.com/hapijs/hapi/issues/1247" + }, + { + "id": 24762053, + "labels": ["feature", "breaking changes"], + "number": 1246, + "title": "Allow zero key helpers with cache", + "url": "https://github.com/hapijs/hapi/issues/1246" + }, + { + "id": 24760718, + "labels": ["breaking changes"], + "number": 1242, + "title": "Remove server-side route caching", + "url": "https://github.com/hapijs/hapi/issues/1242" + }, + { + "id": 24758551, + "labels": ["feature", "breaking changes"], + "number": 1241, + "title": "Add user/private flag to state variable", + "url": "https://github.com/hapijs/hapi/issues/1241" + }, + { + "id": 24758174, + "labels": ["feature"], + "number": 1239, + "title": "Disable cache when Authorization header is included", + "url": "https://github.com/hapijs/hapi/issues/1239" + }, + { + "id": 24758110, + "labels": ["feature"], + "number": 1238, + "title": "Special handling for '*' Vary response header", + "url": "https://github.com/hapijs/hapi/issues/1238" + }, + { + "id": 24698274, + "labels": ["bug"], + "number": 1236, + "title": "Review lru-cache settings", + "url": "https://github.com/hapijs/hapi/issues/1236" + }, + { + "id": 24689143, + "labels": ["feature", "bug"], + "number": 1235, + "title": "Vary support in internal routes cache", + "url": "https://github.com/hapijs/hapi/issues/1235" + }, + { + "id": 24687283, + "labels": ["breaking changes"], + "number": 1234, + "title": "Move client out to separate module", + "url": "https://github.com/hapijs/hapi/issues/1234" + }, + { + "id": 24686494, + "labels": ["documentation"], + "number": 1233, + "title": "Clarify server app config usage", + "url": "https://github.com/hapijs/hapi/issues/1233" + }, + { + "id": 24676888, + "labels": ["breaking changes"], + "number": 1231, + "title": "request.log() no longer adds 'error' tag if data is Error", + "url": "https://github.com/hapijs/hapi/issues/1231" + }, + { + "id": 24671354, + "labels": ["breaking changes"], + "number": 1230, + "title": "Remove plugin permissions", + "url": "https://github.com/hapijs/hapi/issues/1230" + }, + { + "id": 24670655, + "labels": ["feature"], + "number": 1229, + "title": "Add req.on('error'/'close') to request object processing", + "url": "https://github.com/hapijs/hapi/issues/1229" + }, + { + "id": 24670550, + "labels": ["bug"], + "number": 1228, + "title": "Client request timeout and downstream listener not set when payload is a stream", + "url": "https://github.com/hapijs/hapi/issues/1228" + }, + { + "id": 24539376, + "labels": ["feature"], + "number": 1223, + "title": "views.helpersPath requires .js files", + "url": "https://github.com/hapijs/hapi/issues/1223" + }, + { + "id": 24538624, + "labels": ["feature"], + "number": 1222, + "title": "Proxy passthrough does not allow for cookie domain modification", + "url": "https://github.com/hapijs/hapi/issues/1222" + }, + { + "id": 24428120, + "labels": ["documentation"], + "number": 1219, + "title": "`pack.require` doc is somewhat incorrect", + "url": "https://github.com/hapijs/hapi/issues/1219" + }, + { + "id": 24307912, + "labels": ["breaking changes"], + "number": 1216, + "title": "Remove support for `notFound` handler string", + "url": "https://github.com/hapijs/hapi/issues/1216" + }, + { + "id": 24300682, + "labels": ["bug", "breaking changes"], + "number": 1215, + "title": "Content-type charset attribute not added to streams", + "url": "https://github.com/hapijs/hapi/issues/1215" + }, + { + "id": 24298642, + "labels": ["feature"], + "number": 1214, + "title": "Allow specifying a list of method in route config", + "url": "https://github.com/hapijs/hapi/issues/1214" + }, + { + "id": 24234735, + "labels": ["feature", "breaking changes"], + "number": 1211, + "title": "Move all response payload processing to _prepare", + "url": "https://github.com/hapijs/hapi/issues/1211" + }, + { + "id": 24177245, + "labels": ["bug"], + "number": 1209, + "title": "Duplicate parameter error is missing route information", + "url": "https://github.com/hapijs/hapi/issues/1209" + }, + { + "id": 24154748, + "labels": ["bug"], + "number": 1208, + "title": "Route error message does not include information about which route failed", + "url": "https://github.com/hapijs/hapi/issues/1208" + }, + { + "id": 24147095, + "labels": ["feature"], + "number": 1207, + "title": "Accessing the response stream.", + "url": "https://github.com/hapijs/hapi/issues/1207" + }, + { + "id": 24143427, + "labels": ["bug"], + "number": 1205, + "title": "Honor options.bind in ext", + "url": "https://github.com/hapijs/hapi/issues/1205" + }, + { + "id": 24141337, + "labels": ["breaking changes"], + "number": 1204, + "title": "Rename handler/ext context to bind", + "url": "https://github.com/hapijs/hapi/issues/1204" + }, + { + "id": 24138760, + "labels": ["breaking changes"], + "number": 1202, + "title": "Move handler and ext context to use this", + "url": "https://github.com/hapijs/hapi/issues/1202" + }, + { + "id": 24060145, + "labels": [], + "number": 1200, + "title": "Removing confidence, alce from composer and CLI", + "url": "https://github.com/hapijs/hapi/pull/1200" + }, + { + "id": 24060108, + "labels": ["breaking changes"], + "number": 1199, + "title": "Remove confidence and alce dependency", + "url": "https://github.com/hapijs/hapi/issues/1199" + }, + { + "id": 24007432, + "labels": ["breaking changes"], + "number": 1195, + "title": "Move request.context to request.reply.context", + "url": "https://github.com/hapijs/hapi/issues/1195" + }, + { + "id": 24007133, + "labels": ["breaking changes"], + "number": 1194, + "title": "Remove support for decorating request with reply()", + "url": "https://github.com/hapijs/hapi/issues/1194" + }, + { + "id": 24001548, + "labels": ["breaking changes"], + "number": 1192, + "title": "Change pre type to always use handler mode", + "url": "https://github.com/hapijs/hapi/issues/1192" + }, + { + "id": 24001389, + "labels": ["bug"], + "number": 1191, + "title": "Cannot use multiple parallel pre methods in handler mode", + "url": "https://github.com/hapijs/hapi/issues/1191" + }, + { + "id": 23993302, + "labels": ["feature", "breaking changes"], + "number": 1190, + "title": "Move Obj stringify step to _prepare", + "url": "https://github.com/hapijs/hapi/issues/1190" + }, + { + "id": 23988811, + "labels": ["feature"], + "number": 1189, + "title": "Attaching a websocket to a server in a pack", + "url": "https://github.com/hapijs/hapi/issues/1189" + }, + { + "id": 23945675, + "labels": ["feature", "breaking changes"], + "number": 1187, + "title": "Change pre to use nested arrays instead of mode (serial, parallel)", + "url": "https://github.com/hapijs/hapi/issues/1187" + }, + { + "id": 23683749, + "labels": [], + "number": 1185, + "title": "be more careful about options in _provisionCache", + "url": "https://github.com/hapijs/hapi/pull/1185" + }, + { + "id": 23586263, + "labels": ["bug"], + "number": 1183, + "title": "Remove use of removeAllListeners()", + "url": "https://github.com/hapijs/hapi/issues/1183" + }, + { + "id": 23519746, + "labels": ["bug"], + "number": 1182, + "title": "Error transformation does not work when serving static files", + "url": "https://github.com/hapijs/hapi/issues/1182" + }, + { + "id": 23228212, + "labels": ["breaking changes"], + "number": 1178, + "title": "2.0 Breaking Changes", + "url": "https://github.com/hapijs/hapi/issues/1178" + }, + { + "id": 23211633, + "labels": [], + "number": 1176, + "title": "Unify stream and buffer responses", + "url": "https://github.com/hapijs/hapi/pull/1176" + }, + { + "id": 23155310, + "labels": ["feature"], + "number": 1168, + "title": "Save stream to file like {mode: 'file' ...}", + "url": "https://github.com/hapijs/hapi/issues/1168" + }, + { + "id": 22861659, + "labels": ["bug"], + "number": 1155, + "title": "404 not being caught by onPreResponse function", + "url": "https://github.com/hapijs/hapi/issues/1155" + }, + { + "id": 22237248, + "labels": ["support"], + "number": 1134, + "title": "Joi 2.0 integration feedback", + "url": "https://github.com/hapijs/hapi/issues/1134" + }, + { + "id": 19226566, + "labels": ["feature"], + "number": 1059, + "title": "Allow route prerequisites to takeover() and preempt handler", + "url": "https://github.com/hapijs/hapi/issues/1059" + }, + { + "id": 19089729, + "labels": ["feature"], + "number": 1049, + "title": "Validate pre config schema", + "url": "https://github.com/hapijs/hapi/issues/1049" + } + ], + "number": 69, + "url": "https://github.com/hapijs/hapi/milestone/69", + "version": "2.0.0" + }, + { + "date": "2013-11-24T19:44:41Z", + "id": 494063, + "issues": [ + { + "id": 23211458, + "labels": ["feature"], + "number": 1175, + "title": "Allow disabling CORS for individual route", + "url": "https://github.com/hapijs/hapi/issues/1175" + }, + { + "id": 23210211, + "labels": ["feature"], + "number": 1174, + "title": "Adjust CORS origin header options", + "url": "https://github.com/hapijs/hapi/issues/1174" + }, + { + "id": 23167306, + "labels": [], + "number": 1171, + "title": "Only emit vary origin for CORS wildcard mode", + "url": "https://github.com/hapijs/hapi/pull/1171" + } + ], + "number": 77, + "url": "https://github.com/hapijs/hapi/milestone/77", + "version": "1.20.0" + }, + { + "date": "2013-11-22T19:48:43Z", + "id": 493028, + "issues": [ + { + "id": 23162378, + "labels": ["feature", "breaking changes"], + "number": 1169, + "title": "Remove load samples and add protection against interval sample falling behind", + "url": "https://github.com/hapijs/hapi/issues/1169" + }, + { + "id": 23101281, + "labels": ["feature", "bug"], + "number": 1165, + "title": "Switch benchmarks to use Hoek.Bench instead of Date.now()", + "url": "https://github.com/hapijs/hapi/issues/1165" + } + ], + "number": 76, + "url": "https://github.com/hapijs/hapi/milestone/76", + "version": "1.19.5" + }, + { + "date": "2013-11-21T22:05:28Z", + "id": 490786, + "issues": [ + { + "id": 22974250, + "labels": ["bug"], + "number": 1163, + "title": "CORS response doesn't set Vary header in all cases", + "url": "https://github.com/hapijs/hapi/issues/1163" + } + ], + "number": 75, + "url": "https://github.com/hapijs/hapi/milestone/75", + "version": "1.19.4" + }, + { + "date": "2013-11-19T22:05:58Z", + "id": 490501, + "issues": [ + { + "id": 22953073, + "labels": ["bug"], + "number": 1161, + "title": "Schema issues", + "url": "https://github.com/hapijs/hapi/issues/1161" + } + ], + "number": 74, + "url": "https://github.com/hapijs/hapi/milestone/74", + "version": "1.19.3" + }, + { + "date": "2013-11-19T21:49:52Z", + "id": 490465, + "issues": [ + { + "id": 22952152, + "labels": ["bug"], + "number": 1160, + "title": "Missing null test", + "url": "https://github.com/hapijs/hapi/issues/1160" + } + ], + "number": 73, + "url": "https://github.com/hapijs/hapi/milestone/73", + "version": "1.19.2" + }, + { + "date": "2013-11-19T21:48:54Z", + "id": 490464, + "issues": [ + { + "id": 22951985, + "labels": ["feature"], + "number": 1159, + "title": "Allow multiple provisions of the same segment per cache", + "url": "https://github.com/hapijs/hapi/issues/1159" + } + ], + "number": 72, + "url": "https://github.com/hapijs/hapi/milestone/72", + "version": "1.19.1" + }, + { + "date": "2013-11-19T07:45:42Z", + "id": 488914, + "issues": [ + { + "id": 22893578, + "labels": ["bug"], + "number": 1157, + "title": "route cache config does not allow specifying name", + "url": "https://github.com/hapijs/hapi/issues/1157" + }, + { + "id": 22878382, + "labels": [], + "number": 1156, + "title": "Honor upstream ttl when proxying", + "url": "https://github.com/hapijs/hapi/pull/1156" + }, + { + "id": 18484316, + "labels": ["feature"], + "number": 1021, + "title": "Configure proxy handlers to cache according to upstream policy", + "url": "https://github.com/hapijs/hapi/issues/1021" + } + ], + "number": 71, + "url": "https://github.com/hapijs/hapi/milestone/71", + "version": "1.19.0" + }, + { + "date": "2013-11-18T19:22:10Z", + "id": 486841, + "issues": [ + { + "id": 22819986, + "labels": [], + "number": 1152, + "title": "Load sampling and limits", + "url": "https://github.com/hapijs/hapi/pull/1152" + }, + { + "id": 22793928, + "labels": ["feature"], + "number": 1151, + "title": "Max load configuration", + "url": "https://github.com/hapijs/hapi/issues/1151" + }, + { + "id": 22793490, + "labels": [], + "number": 1150, + "title": "Support multiple cache instances", + "url": "https://github.com/hapijs/hapi/pull/1150" + }, + { + "id": 22782638, + "labels": ["feature"], + "number": 1149, + "title": "Allow multiple cache containers", + "url": "https://github.com/hapijs/hapi/issues/1149" + }, + { + "id": 22763325, + "labels": ["bug"], + "number": 1148, + "title": "Return 401 when allowEmptyUsername is false and username missing", + "url": "https://github.com/hapijs/hapi/issues/1148" + } + ], + "number": 70, + "url": "https://github.com/hapijs/hapi/milestone/70", + "version": "1.18.0" + }, + { + "date": "2013-11-15T17:35:12Z", + "id": 479440, + "issues": [ + { + "id": 22744484, + "labels": [], + "number": 1147, + "title": "Add request.reply.proxy()", + "url": "https://github.com/hapijs/hapi/pull/1147" + }, + { + "id": 22739119, + "labels": ["feature"], + "number": 1146, + "title": "Expose proxy functionality as a utility", + "url": "https://github.com/hapijs/hapi/issues/1146" + }, + { + "id": 22711070, + "labels": ["bug"], + "number": 1145, + "title": "Proxy errors should use 502 and 504 instead of 500 for most errors", + "url": "https://github.com/hapijs/hapi/issues/1145" + }, + { + "id": 22695656, + "labels": [], + "number": 1144, + "title": "Support pre-compressed files", + "url": "https://github.com/hapijs/hapi/pull/1144" + }, + { + "id": 22648245, + "labels": [], + "number": 1142, + "title": "Fix ext function plugin env binding", + "url": "https://github.com/hapijs/hapi/pull/1142" + }, + { + "id": 22541366, + "labels": ["bug"], + "number": 1140, + "title": "Not able to login after attempting without user name", + "url": "https://github.com/hapijs/hapi/issues/1140" + }, + { + "id": 22541024, + "labels": ["bug"], + "number": 1139, + "title": "Auth validator does not log useful information", + "url": "https://github.com/hapijs/hapi/issues/1139" + }, + { + "id": 22475851, + "labels": ["bug"], + "number": 1138, + "title": "Apply plugin views during onRequest phase when route is not yet setup", + "url": "https://github.com/hapijs/hapi/issues/1138" + }, + { + "id": 22416115, + "labels": ["bug"], + "number": 1137, + "title": "generateView at 'onRequest' extension point", + "url": "https://github.com/hapijs/hapi/issues/1137" + }, + { + "id": 21976013, + "labels": ["feature"], + "number": 1126, + "title": "serve pre-compressed files when available ", + "url": "https://github.com/hapijs/hapi/issues/1126" + }, + { + "id": 20780705, + "labels": ["feature"], + "number": 1102, + "title": "How to exclude views from layout", + "url": "https://github.com/hapijs/hapi/issues/1102" + }, + { + "id": 19887076, + "labels": ["bug"], + "number": 1070, + "title": "TypeError when validate.* is set to false", + "url": "https://github.com/hapijs/hapi/issues/1070" + } + ], + "number": 68, + "url": "https://github.com/hapijs/hapi/milestone/68", + "version": "1.17.0" + }, + { + "date": "2013-11-09T08:54:32Z", + "id": 477008, + "issues": [ + { + "id": 22381217, + "labels": ["bug"], + "number": 1136, + "title": "Handlebars 1.1.x uses prototype for registerPartials which breaks its use in Hapi", + "url": "https://github.com/hapijs/hapi/issues/1136" + }, + { + "id": 22332419, + "labels": ["documentation"], + "number": 1135, + "title": "Formatting problem in Reference.md", + "url": "https://github.com/hapijs/hapi/issues/1135" + } + ], + "number": 67, + "url": "https://github.com/hapijs/hapi/milestone/67", + "version": "1.16.1" + }, + { + "date": "2013-11-07T00:50:25Z", + "id": 469446, + "issues": [ + { + "id": 22180283, + "labels": [], + "number": 1133, + "title": "Joi 2.0", + "url": "https://github.com/hapijs/hapi/pull/1133" + }, + { + "id": 22151837, + "labels": ["feature", "bug"], + "number": 1132, + "title": "Migrate to joi 2.0", + "url": "https://github.com/hapijs/hapi/issues/1132" + }, + { + "id": 22149941, + "labels": ["bug"], + "number": 1131, + "title": "Debug mode should log thrown and returned errors similarly", + "url": "https://github.com/hapijs/hapi/issues/1131" + }, + { + "id": 22103566, + "labels": [], + "number": 1129, + "title": "support for iisnode and windows named pipes", + "url": "https://github.com/hapijs/hapi/pull/1129" + }, + { + "id": 22100450, + "labels": ["bug"], + "number": 1128, + "title": "Server fails ot start when debug is defined as array", + "url": "https://github.com/hapijs/hapi/issues/1128" + }, + { + "id": 22041345, + "labels": ["feature"], + "number": 1127, + "title": "Add ability to listen listen on windows named pipe", + "url": "https://github.com/hapijs/hapi/issues/1127" + }, + { + "id": 21896611, + "labels": [], + "number": 1124, + "title": "Use ALCE for manifest loading.", + "url": "https://github.com/hapijs/hapi/pull/1124" + }, + { + "id": 21896047, + "labels": ["feature"], + "number": 1123, + "title": "add ability to listen on unix domain socket", + "url": "https://github.com/hapijs/hapi/pull/1123" + } + ], + "number": 66, + "url": "https://github.com/hapijs/hapi/milestone/66", + "version": "1.16.0" + }, + { + "date": "2013-10-30T19:52:38Z", + "id": 445937, + "issues": [ + { + "id": 21852859, + "labels": ["breaking changes"], + "number": 1122, + "title": "Turns multipart processing off by default", + "url": "https://github.com/hapijs/hapi/issues/1122" + }, + { + "id": 21751564, + "labels": ["feature"], + "number": 1119, + "title": "Would it be worth adding a pretty print option to all JSON payloads?", + "url": "https://github.com/hapijs/hapi/issues/1119" + }, + { + "id": 21637418, + "labels": [], + "number": 1116, + "title": "CORS origin bug fixes and enhancements", + "url": "https://github.com/hapijs/hapi/pull/1116" + }, + { + "id": 21355490, + "labels": ["feature"], + "number": 1114, + "title": "What is the best way to access request headers?", + "url": "https://github.com/hapijs/hapi/issues/1114" + }, + { + "id": 21352641, + "labels": [], + "number": 1113, + "title": "updates plugin.views Reference.md entry to a clear and working example", + "url": "https://github.com/hapijs/hapi/pull/1113" + }, + { + "id": 21278174, + "labels": ["feature"], + "number": 1112, + "title": "Too strict cookie parsing?", + "url": "https://github.com/hapijs/hapi/issues/1112" + }, + { + "id": 21175648, + "labels": ["feature"], + "number": 1111, + "title": "Allow safe CORS origins list", + "url": "https://github.com/hapijs/hapi/issues/1111" + }, + { + "id": 20897883, + "labels": [], + "number": 1103, + "title": "allow arrays of scopes on routes", + "url": "https://github.com/hapijs/hapi/pull/1103" + }, + { + "id": 20701782, + "labels": ["feature"], + "number": 1101, + "title": "Multipart configuration options (upload dir, hash)", + "url": "https://github.com/hapijs/hapi/issues/1101" + }, + { + "id": 20481032, + "labels": ["non issue"], + "number": 1094, + "title": "404 not being caught by onPreResponse function", + "url": "https://github.com/hapijs/hapi/issues/1094" + }, + { + "id": 20427815, + "labels": [], + "number": 1091, + "title": "Only set access-control-allow-origin if the origin header value matches (or '*' is allowed)", + "url": "https://github.com/hapijs/hapi/pull/1091" + } + ], + "number": 65, + "url": "https://github.com/hapijs/hapi/milestone/65", + "version": "1.15.0" + }, + { + "date": "2013-10-04T20:32:50Z", + "id": 443464, + "issues": [ + { + "id": 20537209, + "labels": ["feature"], + "number": 1098, + "title": "Add criteria support to CLI", + "url": "https://github.com/hapijs/hapi/issues/1098" + }, + { + "id": 20537088, + "labels": ["feature"], + "number": 1097, + "title": "Initial (internal) confidence integration", + "url": "https://github.com/hapijs/hapi/issues/1097" + }, + { + "id": 20430695, + "labels": ["bug", "breaking changes"], + "number": 1092, + "title": "Empty path parameter should have empty string value, not undefined", + "url": "https://github.com/hapijs/hapi/issues/1092" + }, + { + "id": 18613079, + "labels": ["feature"], + "number": 1028, + "title": "Expose requests content-type/mime & accept", + "url": "https://github.com/hapijs/hapi/issues/1028" + }, + { + "id": 18517380, + "labels": ["bug"], + "number": 1024, + "title": "Hapi.Composer.compose() requires \"plugins\" but won't warn if it's not there", + "url": "https://github.com/hapijs/hapi/issues/1024" + }, + { + "id": 17021555, + "labels": ["bug"], + "number": 995, + "title": "Block response.created() from methods other than POST and PUT", + "url": "https://github.com/hapijs/hapi/issues/995" + } + ], + "number": 64, + "url": "https://github.com/hapijs/hapi/milestone/64", + "version": "1.14.0" + }, + { + "date": "2013-10-02T14:55:11Z", + "id": 442719, + "issues": [ + { + "id": 20378290, + "labels": [], + "number": 1090, + "title": "Support partial path segment parameter", + "url": "https://github.com/hapijs/hapi/pull/1090" + }, + { + "id": 19304725, + "labels": ["bug"], + "number": 1061, + "title": "POST requests with Content-Type=text/plain", + "url": "https://github.com/hapijs/hapi/issues/1061" + }, + { + "id": 18055579, + "labels": ["bug"], + "number": 1012, + "title": "Escaped error responses", + "url": "https://github.com/hapijs/hapi/issues/1012" + }, + { + "id": 17313910, + "labels": ["feature"], + "number": 1000, + "title": "Routing using file extensions", + "url": "https://github.com/hapijs/hapi/issues/1000" + } + ], "number": 63, - "title": "Added in SSL cert passphrase to https server creation from settings.", - "url": "https://github.com/hapijs/hapi/pull/63" - } - ], - "number": 1, - "url": "https://github.com/hapijs/hapi/milestone/1", - "version": "0.6.0" - } + "url": "https://github.com/hapijs/hapi/milestone/63", + "version": "1.13.0" + }, + { + "date": "2013-10-01T19:06:45Z", + "id": 430275, + "issues": [ + { + "id": 20349590, + "labels": [], + "number": 1088, + "title": "Plugin dependencies", + "url": "https://github.com/hapijs/hapi/pull/1088" + }, + { + "id": 20312326, + "labels": ["feature", "breaking changes"], + "number": 1086, + "title": "Allow plugins to specify code executed once a plugin dependency has been loaded", + "url": "https://github.com/hapijs/hapi/issues/1086" + }, + { + "id": 20307351, + "labels": [], + "number": 1085, + "title": "Validation options", + "url": "https://github.com/hapijs/hapi/pull/1085" + }, + { + "id": 20291663, + "labels": ["feature", "breaking changes"], + "number": 1084, + "title": "Restructure validation route configuration", + "url": "https://github.com/hapijs/hapi/issues/1084" + }, + { + "id": 20246594, + "labels": ["bug"], + "number": 1083, + "title": "Normalize response headers to lowercase field name", + "url": "https://github.com/hapijs/hapi/issues/1083" + }, + { + "id": 20245709, + "labels": ["feature", "breaking changes"], + "number": 1081, + "title": "Migrate to Iron 1.0", + "url": "https://github.com/hapijs/hapi/issues/1081" + }, + { + "id": 20197853, + "labels": [], + "number": 1077, + "title": "Add compileMode to schema.js", + "url": "https://github.com/hapijs/hapi/pull/1077" + }, + { + "id": 20154805, + "labels": [], + "number": 1076, + "title": "Test for both formats of Content-Encoding header", + "url": "https://github.com/hapijs/hapi/pull/1076" + }, + { + "id": 20057723, + "labels": [], + "number": 1074, + "title": "Route-specific validation error handler", + "url": "https://github.com/hapijs/hapi/pull/1074" + }, + { + "id": 19221310, + "labels": ["feature"], + "number": 1055, + "title": "Migrate to new method of configuring joi", + "url": "https://github.com/hapijs/hapi/issues/1055" + }, + { + "id": 17880294, + "labels": ["feature"], + "number": 1009, + "title": "Validation fail response status code", + "url": "https://github.com/hapijs/hapi/issues/1009" + }, + { + "id": 17554861, + "labels": ["bug"], + "number": 1004, + "title": "validation fails when using Hapi.types.Object() at the root", + "url": "https://github.com/hapijs/hapi/issues/1004" + } + ], + "number": 62, + "url": "https://github.com/hapijs/hapi/milestone/62", + "version": "1.12.0" + }, + { + "date": "2013-09-18T00:41:06Z", + "id": 430256, + "issues": [ + { + "id": 19655273, + "labels": [], + "number": 1067, + "title": "Bug fix for loading ext auth scheme into multiple servers", + "url": "https://github.com/hapijs/hapi/pull/1067" + }, + { + "id": 19654484, + "labels": ["bug"], + "number": 1065, + "title": "plugin.auth fails to load the same ext into multiple servers", + "url": "https://github.com/hapijs/hapi/issues/1065" + } + ], + "number": 61, + "url": "https://github.com/hapijs/hapi/milestone/61", + "version": "1.11.1" + }, + { + "date": "2013-09-17T23:47:30Z", + "id": 423387, + "issues": [ + { + "id": 19577140, + "labels": [], + "number": 1064, + "title": "Helper cache drop interface", + "url": "https://github.com/hapijs/hapi/pull/1064" + }, + { + "id": 19567439, + "labels": ["feature"], + "number": 1063, + "title": "Provide interface to drop internal cache records for helpers", + "url": "https://github.com/hapijs/hapi/issues/1063" + } + ], + "number": 60, + "url": "https://github.com/hapijs/hapi/milestone/60", + "version": "1.11.0" + }, + { + "date": "2013-09-09T22:16:39Z", + "id": 420763, + "issues": [ + { + "id": 19225889, + "labels": [], + "number": 1058, + "title": "Closes #1056 and #1057", + "url": "https://github.com/hapijs/hapi/pull/1058" + }, + { + "id": 19224505, + "labels": ["bug"], + "number": 1057, + "title": "'/{p*}' is sorted ahead of '/{a}/b/{p*}'", + "url": "https://github.com/hapijs/hapi/issues/1057" + }, + { + "id": 19222980, + "labels": ["feature"], + "number": 1056, + "title": "Allow directory paths to include multiple params and use last for resource selection", + "url": "https://github.com/hapijs/hapi/issues/1056" + }, + { + "id": 19220706, + "labels": [], + "number": 1054, + "title": "Enhance prerequisites configuration options", + "url": "https://github.com/hapijs/hapi/pull/1054" + }, + { + "id": 18682883, + "labels": ["bug"], + "number": 1030, + "title": "Problems with routes", + "url": "https://github.com/hapijs/hapi/issues/1030" + } + ], + "number": 59, + "url": "https://github.com/hapijs/hapi/milestone/59", + "version": "1.10.0" + }, + { + "date": "2013-09-06T06:34:30Z", + "id": 415144, + "issues": [ + { + "id": 19090422, + "labels": ["bug"], + "number": 1050, + "title": "Memory leak due to missing stream destroy", + "url": "https://github.com/hapijs/hapi/issues/1050" + }, + { + "id": 18985237, + "labels": [], + "number": 1044, + "title": "Reverting changes to generic/stream responses", + "url": "https://github.com/hapijs/hapi/pull/1044" + } + ], + "number": 58, + "url": "https://github.com/hapijs/hapi/milestone/58", + "version": "1.9.7" + }, + { + "date": "2013-08-29T20:26:44Z", + "id": 414272, + "issues": [ + { + "id": 18745442, + "labels": [], + "number": 1037, + "title": "Stream responses emit response event", + "url": "https://github.com/hapijs/hapi/pull/1037" + }, + { + "id": 18745343, + "labels": ["bug"], + "number": 1036, + "title": "Stream responses don't emit response event", + "url": "https://github.com/hapijs/hapi/issues/1036" + } + ], + "number": 57, + "url": "https://github.com/hapijs/hapi/milestone/57", + "version": "1.9.6" + }, + { + "date": "2013-08-28T23:52:20Z", + "id": 413971, + "issues": [ + { + "id": 18692882, + "labels": [], + "number": 1034, + "title": "Upping shot dep version", + "url": "https://github.com/hapijs/hapi/pull/1034" + }, + { + "id": 18687228, + "labels": ["bug"], + "number": 1033, + "title": "Node 0.11 bug fixes", + "url": "https://github.com/hapijs/hapi/issues/1033" + }, + { + "id": 18686299, + "labels": [], + "number": 1032, + "title": "Updating boom version to 1.0.0", + "url": "https://github.com/hapijs/hapi/pull/1032" + }, + { + "id": 18380140, + "labels": [], + "number": 1019, + "title": "Depend on Joi v1.1.x", + "url": "https://github.com/hapijs/hapi/pull/1019" + } + ], + "number": 56, + "url": "https://github.com/hapijs/hapi/milestone/56", + "version": "1.9.5" + }, + { + "date": "2013-08-28T18:27:56Z", + "id": 402927, + "issues": [ + { + "id": 18632260, + "labels": [], + "number": 1029, + "title": "Using latest hoek and moved to AUTHORS file", + "url": "https://github.com/hapijs/hapi/pull/1029" + }, + { + "id": 18126861, + "labels": ["bug"], + "number": 1017, + "title": "Overrides Cache-Control in proxy even when no local policy is defined", + "url": "https://github.com/hapijs/hapi/issues/1017" + } + ], + "number": 55, + "url": "https://github.com/hapijs/hapi/milestone/55", + "version": "1.9.4" + }, + { + "date": "2013-08-15T20:07:46Z", + "id": 402895, + "issues": [ + { + "id": 18124646, + "labels": ["bug"], + "number": 1016, + "title": "Adding helper with cache to pack with multiple server crash", + "url": "https://github.com/hapijs/hapi/issues/1016" + } + ], + "number": 54, + "url": "https://github.com/hapijs/hapi/milestone/54", + "version": "1.9.3" + }, + { + "date": "2013-08-15T19:14:05Z", + "id": 402862, + "issues": [ + { + "id": 18121853, + "labels": ["bug"], + "number": 1015, + "title": "Undo #1014", + "url": "https://github.com/hapijs/hapi/issues/1015" + } + ], + "number": 53, + "url": "https://github.com/hapijs/hapi/milestone/53", + "version": "1.9.2" + }, + { + "date": "2013-08-15T18:40:43Z", + "id": 388963, + "issues": [ + { + "id": 18119379, + "labels": ["bug"], + "number": 1014, + "title": "plugin.helper should be selectable", + "url": "https://github.com/hapijs/hapi/issues/1014" + }, + { + "id": 17648127, + "labels": [], + "number": 1005, + "title": "Improve server constructor argument validation error reporting", + "url": "https://github.com/hapijs/hapi/pull/1005" + }, + { + "id": 17542176, + "labels": [], + "number": 1003, + "title": "Ensure request.response function exists before response event", + "url": "https://github.com/hapijs/hapi/pull/1003" + }, + { + "id": 17522108, + "labels": [], + "number": 1001, + "title": "Pack event handlers now support correct args", + "url": "https://github.com/hapijs/hapi/pull/1001" + } + ], + "number": 52, + "url": "https://github.com/hapijs/hapi/milestone/52", + "version": "1.9.1" + }, + { + "date": "2013-07-29T02:57:32Z", + "id": 378871, + "issues": [ + { + "id": 17074138, + "labels": [], + "number": 998, + "title": "Adding dtrace probes", + "url": "https://github.com/hapijs/hapi/pull/998" + }, + { + "id": 17021694, + "labels": [], + "number": 996, + "title": "Remove Directory and View from cacheable responses", + "url": "https://github.com/hapijs/hapi/pull/996" + }, + { + "id": 17009663, + "labels": [], + "number": 994, + "title": "Server level cache", + "url": "https://github.com/hapijs/hapi/pull/994" + }, + { + "id": 17009089, + "labels": [], + "number": 993, + "title": "Plugin context", + "url": "https://github.com/hapijs/hapi/pull/993" + }, + { + "id": 16994630, + "labels": ["feature"], + "number": 991, + "title": "Configurable shared context in plugins", + "url": "https://github.com/hapijs/hapi/issues/991" + }, + { + "id": 16948789, + "labels": ["bug"], + "number": 987, + "title": "View routes caching empty payload (with redis)", + "url": "https://github.com/hapijs/hapi/issues/987" + }, + { + "id": 16876515, + "labels": ["bug", "breaking changes"], + "number": 983, + "title": "Response method terms - encoding() vs charset()", + "url": "https://github.com/hapijs/hapi/issues/983" + }, + { + "id": 16841975, + "labels": ["feature"], + "number": 980, + "title": "Add interface to register local `require` function with plugin api", + "url": "https://github.com/hapijs/hapi/issues/980" + }, + { + "id": 16824474, + "labels": ["bug"], + "number": 979, + "title": "Confusing error message when configuring auth using default strategy when none configured", + "url": "https://github.com/hapijs/hapi/issues/979" + }, + { + "id": 16822298, + "labels": ["feature", "breaking changes"], + "number": 978, + "title": "Change plugin `ext` permission default to true", + "url": "https://github.com/hapijs/hapi/issues/978" + }, + { + "id": 16790264, + "labels": [], + "number": 976, + "title": "plugin.require support", + "url": "https://github.com/hapijs/hapi/pull/976" + }, + { + "id": 16788648, + "labels": ["feature"], + "number": 975, + "title": "Allow plugins to require other plugins", + "url": "https://github.com/hapijs/hapi/issues/975" + }, + { + "id": 16784105, + "labels": [], + "number": 974, + "title": "Pack start/stop events", + "url": "https://github.com/hapijs/hapi/pull/974" + }, + { + "id": 16780153, + "labels": ["feature"], + "number": 973, + "title": "Expose pack start/stop events", + "url": "https://github.com/hapijs/hapi/issues/973" + }, + { + "id": 16778570, + "labels": ["feature"], + "number": 972, + "title": "Add dtrace probes to hapi", + "url": "https://github.com/hapijs/hapi/issues/972" + }, + { + "id": 16648799, + "labels": ["feature"], + "number": 959, + "title": "Adding foundation for dtrace probe support", + "url": "https://github.com/hapijs/hapi/pull/959" + }, + { + "id": 16434637, + "labels": ["feature", "support"], + "number": 954, + "title": "Question: Is it OK to use _cache as general purpose cache?", + "url": "https://github.com/hapijs/hapi/issues/954" + } + ], + "number": 51, + "url": "https://github.com/hapijs/hapi/milestone/51", + "version": "1.9.0" + }, + { + "date": "2013-07-15T20:58:12Z", + "id": 369781, + "issues": [ + { + "id": 16768356, + "labels": ["bug"], + "number": 971, + "title": "Use instanceof Error + isBoom to replace instanceof Boom", + "url": "https://github.com/hapijs/hapi/issues/971" + }, + { + "id": 16758483, + "labels": [], + "number": 970, + "title": "Removing complexity-report", + "url": "https://github.com/hapijs/hapi/pull/970" + }, + { + "id": 16736292, + "labels": [], + "number": 968, + "title": "Changes to `plugin.hapi` and the `cookie` scheme", + "url": "https://github.com/hapijs/hapi/pull/968" + }, + { + "id": 16733320, + "labels": ["bug"], + "number": 967, + "title": "Authentication defaultMode allowed invalid values", + "url": "https://github.com/hapijs/hapi/issues/967" + }, + { + "id": 16732342, + "labels": ["feature"], + "number": 966, + "title": "Expose the hapi module on the request object", + "url": "https://github.com/hapijs/hapi/issues/966" + }, + { + "id": 16730614, + "labels": [], + "number": 965, + "title": "Change parameter name pack to plugin to resolve #963", + "url": "https://github.com/hapijs/hapi/pull/965" + }, + { + "id": 16723535, + "labels": ["documentation"], + "number": 963, + "title": "Question: should pack.register's register pack parameter should be renamed to plugin?", + "url": "https://github.com/hapijs/hapi/issues/963" + }, + { + "id": 16717205, + "labels": ["bug"], + "number": 962, + "title": "Server config schema does not allow single string labels", + "url": "https://github.com/hapijs/hapi/issues/962" + }, + { + "id": 16697016, + "labels": [], + "number": 960, + "title": "Updates to case sensitive routing", + "url": "https://github.com/hapijs/hapi/pull/960" + }, + { + "id": 16543408, + "labels": [], + "number": 958, + "title": "Path params are no longer lowercased in router", + "url": "https://github.com/hapijs/hapi/pull/958" + }, + { + "id": 16446692, + "labels": [], + "number": 955, + "title": "Update Reference.md plugin.lenght to plugin.length", + "url": "https://github.com/hapijs/hapi/pull/955" + }, + { + "id": 16412311, + "labels": ["bug"], + "number": 953, + "title": "Path Parameters case changed when setting isCaseSensitive to false", + "url": "https://github.com/hapijs/hapi/issues/953" + }, + { + "id": 16409444, + "labels": ["documentation"], + "number": 952, + "title": "Document the importance of using hapi.error over separate Boom module", + "url": "https://github.com/hapijs/hapi/issues/952" + }, + { + "id": 16335872, + "labels": [], + "number": 951, + "title": "use .isBoom instead of instanceof Boom", + "url": "https://github.com/hapijs/hapi/pull/951" + }, + { + "id": 16296472, + "labels": [], + "number": 949, + "title": "Error when hawk payload validation is required but the request contains no hash", + "url": "https://github.com/hapijs/hapi/pull/949" + }, + { + "id": 16247468, + "labels": [], + "number": 948, + "title": "reference multiparty instead of formidable", + "url": "https://github.com/hapijs/hapi/pull/948" + }, + { + "id": 16198337, + "labels": [], + "number": 946, + "title": "Updating example to be clearer", + "url": "https://github.com/hapijs/hapi/pull/946" + }, + { + "id": 16055954, + "labels": [], + "number": 944, + "title": "Found some small typos/formatting issues in Reference.md", + "url": "https://github.com/hapijs/hapi/pull/944" + }, + { + "id": 15932212, + "labels": ["bug"], + "number": 940, + "title": "Proxy response gets truncated", + "url": "https://github.com/hapijs/hapi/issues/940" + } + ], + "number": 50, + "url": "https://github.com/hapijs/hapi/milestone/50", + "version": "1.8.3" + }, + { + "date": "2013-06-26T22:26:19Z", + "id": 361215, + "issues": [ + { + "id": 16035187, + "labels": [], + "number": 943, + "title": "Updating version", + "url": "https://github.com/hapijs/hapi/pull/943" + }, + { + "id": 15984439, + "labels": [], + "number": 942, + "title": "Layouts work correctly in jade", + "url": "https://github.com/hapijs/hapi/pull/942" + }, + { + "id": 15932689, + "labels": [], + "number": 941, + "title": "No longer destroying request socket", + "url": "https://github.com/hapijs/hapi/pull/941" + }, + { + "id": 15929282, + "labels": [], + "number": 939, + "title": "JSON response body truncated", + "url": "https://github.com/hapijs/hapi/issues/939" + }, + { + "id": 15920195, + "labels": [], + "number": 938, + "title": "Fixed the code example to get Hapi's version", + "url": "https://github.com/hapijs/hapi/pull/938" + }, + { + "id": 15859629, + "labels": [], + "number": 936, + "title": "Allow omitting trailing slash when last segment is an optional parameter", + "url": "https://github.com/hapijs/hapi/pull/936" + }, + { + "id": 15839679, + "labels": ["bug"], + "number": 935, + "title": "Path matching should allow omitting trailing slash before an optional path parameter", + "url": "https://github.com/hapijs/hapi/issues/935" + }, + { + "id": 15536703, + "labels": ["bug", "documentation"], + "number": 926, + "title": "'layout' option seems broken when using jade as template engine", + "url": "https://github.com/hapijs/hapi/issues/926" + } + ], + "number": 49, + "url": "https://github.com/hapijs/hapi/milestone/49", + "version": "1.8.2" + }, + { + "date": "2013-06-17T22:15:43Z", + "id": 355471, + "issues": [ + { + "id": 15655093, + "labels": [], + "number": 933, + "title": "Updating version to 1.8.1", + "url": "https://github.com/hapijs/hapi/pull/933" + }, + { + "id": 15566281, + "labels": [], + "number": 928, + "title": "Removing listeners on domain when exiting", + "url": "https://github.com/hapijs/hapi/pull/928" + }, + { + "id": 15563888, + "labels": [], + "number": 927, + "title": "Removing global variable", + "url": "https://github.com/hapijs/hapi/pull/927" + } + ], + "number": 48, + "url": "https://github.com/hapijs/hapi/milestone/48", + "version": "1.8.1" + }, + { + "date": "2013-06-13T18:06:05Z", + "id": 352611, + "issues": [ + { + "id": 15519782, + "labels": ["bug"], + "number": 925, + "title": "Fixing edge case where bad path can cause issues with url.parse", + "url": "https://github.com/hapijs/hapi/pull/925" + }, + { + "id": 15446310, + "labels": [], + "number": 924, + "title": "Issue/922", + "url": "https://github.com/hapijs/hapi/pull/924" + }, + { + "id": 15369885, + "labels": ["bug"], + "number": 923, + "title": "remove connection event listeners when server stops", + "url": "https://github.com/hapijs/hapi/pull/923" + }, + { + "id": 15357669, + "labels": ["feature"], + "number": 922, + "title": "Handling directory routes that end both with and without a trailing slash", + "url": "https://github.com/hapijs/hapi/issues/922" + } + ], + "number": 47, + "url": "https://github.com/hapijs/hapi/milestone/47", + "version": "1.8.0" + }, + { + "date": "2013-06-08T02:47:12Z", + "id": 348530, + "issues": [ + { + "id": 15293997, + "labels": [], + "number": 920, + "title": "Upping version to 1.7.3", + "url": "https://github.com/hapijs/hapi/pull/920" + }, + { + "id": 15257104, + "labels": [], + "number": 919, + "title": "Client now handles downstreamRes close event", + "url": "https://github.com/hapijs/hapi/pull/919" + }, + { + "id": 15253118, + "labels": ["bug"], + "number": 918, + "title": "Handle potential edge cases in client errors", + "url": "https://github.com/hapijs/hapi/issues/918" + } + ], + "number": 46, + "url": "https://github.com/hapijs/hapi/milestone/46", + "version": "1.7.3" + }, + { + "date": "2013-06-04T21:25:19Z", + "id": 348504, + "issues": [ + { + "id": 15131368, + "labels": ["bug"], + "number": 915, + "title": "custom cache engine support", + "url": "https://github.com/hapijs/hapi/issues/915" + } + ], + "number": 45, + "url": "https://github.com/hapijs/hapi/milestone/45", + "version": "1.7.2" + }, + { + "date": "2013-06-04T20:59:48Z", + "id": 348230, + "issues": [ + { + "id": 15125665, + "labels": ["bug"], + "number": 913, + "title": "Remove duplicated listener", + "url": "https://github.com/hapijs/hapi/issues/913" + } + ], + "number": 44, + "url": "https://github.com/hapijs/hapi/milestone/44", + "version": "1.7.1" + }, + { + "date": "2013-06-04T06:05:14Z", + "id": 345973, + "issues": [ + { + "id": 15101781, + "labels": ["bug"], + "number": 912, + "title": "Fixing aborted causing duplicate res.ends issue with incoming request", + "url": "https://github.com/hapijs/hapi/pull/912" + }, + { + "id": 15078263, + "labels": ["feature"], + "number": 911, + "title": "Allow client.request calls without a callback (ignoring response)", + "url": "https://github.com/hapijs/hapi/issues/911" + }, + { + "id": 15078077, + "labels": ["bug"], + "number": 910, + "title": "Client does not destroy request on redirection error", + "url": "https://github.com/hapijs/hapi/issues/910" + }, + { + "id": 15008509, + "labels": [], + "number": 907, + "title": "Adding test", + "url": "https://github.com/hapijs/hapi/pull/907" + }, + { + "id": 13691939, + "labels": ["feature"], + "number": 795, + "title": "Request support for HEAD routes", + "url": "https://github.com/hapijs/hapi/issues/795" + } + ], + "number": 43, + "url": "https://github.com/hapijs/hapi/milestone/43", + "version": "1.7.0" + }, + { + "date": "2013-05-31T04:42:16Z", + "id": 345373, + "issues": [ + { + "id": 14975235, + "labels": [], + "number": 906, + "title": "Proxy requests are closed when server response already sent", + "url": "https://github.com/hapijs/hapi/pull/906" + } + ], + "number": 42, + "url": "https://github.com/hapijs/hapi/milestone/42", + "version": "1.6.2" + }, + { + "date": "2013-05-30T19:38:04Z", + "id": 344497, + "issues": [ + { + "id": 14956981, + "labels": [], + "number": 904, + "title": "Issue/902", + "url": "https://github.com/hapijs/hapi/pull/904" + }, + { + "id": 14954028, + "labels": [], + "number": 903, + "title": "Fixing issue where timeout occurs after socket close in client", + "url": "https://github.com/hapijs/hapi/pull/903" + }, + { + "id": 14947753, + "labels": ["bug"], + "number": 902, + "title": "Handle socket errors after done working with the socket", + "url": "https://github.com/hapijs/hapi/issues/902" + }, + { + "id": 14947631, + "labels": [], + "number": 901, + "title": "Performance tweaks", + "url": "https://github.com/hapijs/hapi/pull/901" + }, + { + "id": 14915626, + "labels": [], + "number": 897, + "title": "Hapi node_modules_path now supports symlinks", + "url": "https://github.com/hapijs/hapi/pull/897" + }, + { + "id": 14914250, + "labels": ["bug"], + "number": 896, + "title": "resolve the real path of node_modules_path ", + "url": "https://github.com/hapijs/hapi/issues/896" + } + ], + "number": 41, + "url": "https://github.com/hapijs/hapi/milestone/41", + "version": "1.6.1" + }, + { + "date": "2013-05-29T17:45:18Z", + "id": 344253, + "issues": [ + { + "id": 14898667, + "labels": ["feature"], + "number": 892, + "title": "Expose internal Client to plugins", + "url": "https://github.com/hapijs/hapi/issues/892" + }, + { + "id": 14898558, + "labels": [], + "number": 891, + "title": "Exposing rejectUnauthorized property on proxy", + "url": "https://github.com/hapijs/hapi/pull/891" + } + ], + "number": 40, + "url": "https://github.com/hapijs/hapi/milestone/40", + "version": "1.6.0" + }, + { + "date": "2013-05-28T15:06:36Z", + "id": 342297, + "issues": [ + { + "id": 14783701, + "labels": ["bug"], + "number": 889, + "title": "Plugin view engine required from hapi's module path, not plugin", + "url": "https://github.com/hapijs/hapi/issues/889" + }, + { + "id": 14782966, + "labels": ["bug", "breaking changes"], + "number": 887, + "title": "Default auth scheme only works when scheme is added with 'default' name", + "url": "https://github.com/hapijs/hapi/issues/887" + }, + { + "id": 14781472, + "labels": ["bug", "documentation"], + "number": 886, + "title": "Cookie auth -- unknown auth strategy: default", + "url": "https://github.com/hapijs/hapi/issues/886" + } + ], + "number": 39, + "url": "https://github.com/hapijs/hapi/milestone/39", + "version": "1.5.0" + }, + { + "date": "2013-05-25T06:21:23Z", + "id": 341436, + "issues": [ + { + "id": 14747252, + "labels": [], + "number": 885, + "title": "Fix plugin.path", + "url": "https://github.com/hapijs/hapi/pull/885" + }, + { + "id": 14742968, + "labels": [], + "number": 883, + "title": "Cleanup pack requirePath", + "url": "https://github.com/hapijs/hapi/pull/883" + }, + { + "id": 14600134, + "labels": ["bug"], + "number": 876, + "title": "Leading \".\"s should be removed before matching against domainLabelLenRegx in state.js", + "url": "https://github.com/hapijs/hapi/issues/876" + }, + { + "id": 14562178, + "labels": ["bug"], + "number": 873, + "title": "using a plugin with a package in node_modules doesn't work if cwd other than the main directory", + "url": "https://github.com/hapijs/hapi/issues/873" + }, + { + "id": 14553603, + "labels": ["test"], + "number": 872, + "title": "Test for invalid incoming path without leading '/'", + "url": "https://github.com/hapijs/hapi/issues/872" + }, + { + "id": 14536893, + "labels": ["bug"], + "number": 870, + "title": "Response treats objects as errors based on too trivial keys", + "url": "https://github.com/hapijs/hapi/issues/870" + }, + { + "id": 14508147, + "labels": ["bug"], + "number": 869, + "title": "Request._replyInterface called twice but does not share wasProcessed state", + "url": "https://github.com/hapijs/hapi/issues/869" + }, + { + "id": 14506936, + "labels": ["bug"], + "number": 868, + "title": "Potential leak when aborting reading a payload if max size reached", + "url": "https://github.com/hapijs/hapi/issues/868" + }, + { + "id": 14393867, + "labels": ["bug"], + "number": 857, + "title": "pack.path sometimes not ending in a '/'", + "url": "https://github.com/hapijs/hapi/issues/857" + } + ], + "number": 38, + "url": "https://github.com/hapijs/hapi/milestone/38", + "version": "1.4.0" + }, + { + "date": "2013-05-23T07:12:37Z", + "id": 334568, + "issues": [ + { + "id": 14658192, + "labels": [], + "number": 880, + "title": "Performance and hawk options", + "url": "https://github.com/hapijs/hapi/pull/880" + }, + { + "id": 14657855, + "labels": ["feature"], + "number": 879, + "title": "Support all Hawk and Bewit options", + "url": "https://github.com/hapijs/hapi/issues/879" + }, + { + "id": 14603116, + "labels": [], + "number": 878, + "title": "Adding Client request socket timeout", + "url": "https://github.com/hapijs/hapi/pull/878" + }, + { + "id": 14552850, + "labels": ["bug", "breaking changes"], + "number": 871, + "title": "* allowed in path but used as special character in route fingerprint", + "url": "https://github.com/hapijs/hapi/issues/871" + }, + { + "id": 14423416, + "labels": [], + "number": 863, + "title": "Absolute paths now work correctly with hapi command", + "url": "https://github.com/hapijs/hapi/pull/863" + }, + { + "id": 14419988, + "labels": [], + "number": 862, + "title": "Minor performance tweaks", + "url": "https://github.com/hapijs/hapi/pull/862" + }, + { + "id": 14417484, + "labels": ["bug"], + "number": 861, + "title": "hapi -p argument no longer supports absolute path to node_modules", + "url": "https://github.com/hapijs/hapi/issues/861" + }, + { + "id": 14416045, + "labels": [], + "number": 860, + "title": "Adding hapi bin test and fixing issue with no plugins", + "url": "https://github.com/hapijs/hapi/pull/860" + }, + { + "id": 14413828, + "labels": [], + "number": 859, + "title": "Fixing test", + "url": "https://github.com/hapijs/hapi/pull/859" + }, + { + "id": 14410150, + "labels": [], + "number": 858, + "title": "Added missing done() call in test", + "url": "https://github.com/hapijs/hapi/pull/858" + }, + { + "id": 14369233, + "labels": ["feature"], + "number": 856, + "title": "Remove _log() wrapper", + "url": "https://github.com/hapijs/hapi/issues/856" + } + ], + "number": 37, + "url": "https://github.com/hapijs/hapi/milestone/37", + "version": "1.3.0" + }, + { + "date": "2013-05-14T06:42:23Z", + "id": 331381, + "issues": [ + { + "id": 14291094, + "labels": [], + "number": 854, + "title": "Move to use multiparty", + "url": "https://github.com/hapijs/hapi/pull/854" + }, + { + "id": 14287008, + "labels": [], + "number": 853, + "title": "New internal proxy handler", + "url": "https://github.com/hapijs/hapi/pull/853" + }, + { + "id": 14286949, + "labels": ["breaking changes"], + "number": 852, + "title": "Replace internal proxy implementation", + "url": "https://github.com/hapijs/hapi/issues/852" + }, + { + "id": 14278106, + "labels": [], + "number": 851, + "title": "warning about formidable during npm install", + "url": "https://github.com/hapijs/hapi/issues/851" + }, + { + "id": 14277951, + "labels": [], + "number": 850, + "title": "Increasing allowed sockets to 10 for client", + "url": "https://github.com/hapijs/hapi/pull/850" + }, + { + "id": 14264441, + "labels": [], + "number": 848, + "title": "Template settings override fix", + "url": "https://github.com/hapijs/hapi/pull/848" + }, + { + "id": 14226768, + "labels": ["bug"], + "number": 847, + "title": "POST to routes with payload 'parse' doesn't work with NODE 0.10.0 and 0.10.1", + "url": "https://github.com/hapijs/hapi/issues/847" + }, + { + "id": 14218871, + "labels": ["feature"], + "number": 846, + "title": "Request: View configuration to autoload helepers", + "url": "https://github.com/hapijs/hapi/issues/846" + }, + { + "id": 14218303, + "labels": ["bug"], + "number": 845, + "title": "Generic response fails to account for all possible res events", + "url": "https://github.com/hapijs/hapi/issues/845" + }, + { + "id": 14218297, + "labels": ["bug"], + "number": 844, + "title": "Proxy to outside site fails due to request's old stream api and node 0.10 wrap()", + "url": "https://github.com/hapijs/hapi/issues/844" + }, + { + "id": 14218291, + "labels": ["feature"], + "number": 843, + "title": "Allow setting custom headers via proxy mapUri", + "url": "https://github.com/hapijs/hapi/issues/843" + } + ], + "number": 36, + "url": "https://github.com/hapijs/hapi/milestone/36", + "version": "1.2.0" + }, + { + "date": "2013-05-10T16:08:56Z", + "id": 322747, + "issues": [ + { + "id": 14181729, + "labels": [], + "number": 839, + "title": "Cleanup listeners", + "url": "https://github.com/hapijs/hapi/pull/839" + }, + { + "id": 14180378, + "labels": [], + "number": 838, + "title": "Issue/808", + "url": "https://github.com/hapijs/hapi/pull/838" + }, + { + "id": 14180223, + "labels": [], + "number": 837, + "title": "Issue/812", + "url": "https://github.com/hapijs/hapi/pull/837" + }, + { + "id": 14128171, + "labels": [], + "number": 835, + "title": "`Pack`: Automatically resolve the `requirePath` if provided", + "url": "https://github.com/hapijs/hapi/pull/835" + }, + { + "id": 14081904, + "labels": ["feature"], + "number": 834, + "title": "`Pack` throws an `AssertionError` if the `requirePath` is not absolute", + "url": "https://github.com/hapijs/hapi/issues/834" + }, + { + "id": 14053750, + "labels": [], + "number": 833, + "title": "closes #832", + "url": "https://github.com/hapijs/hapi/pull/833" + }, + { + "id": 14053084, + "labels": ["feature"], + "number": 832, + "title": "Allow route.payload config to be an object with `mode`", + "url": "https://github.com/hapijs/hapi/issues/832" + }, + { + "id": 14053027, + "labels": [], + "number": 831, + "title": "Closes #830", + "url": "https://github.com/hapijs/hapi/pull/831" + }, + { + "id": 14052257, + "labels": ["feature"], + "number": 830, + "title": "Add payload 'try' parsing mode", + "url": "https://github.com/hapijs/hapi/issues/830" + }, + { + "id": 14037819, + "labels": [], + "number": 828, + "title": "Add HttpOnly support to cookie auth", + "url": "https://github.com/hapijs/hapi/pull/828" + }, + { + "id": 14037161, + "labels": [], + "number": 827, + "title": "request debug printout format and condition", + "url": "https://github.com/hapijs/hapi/pull/827" + }, + { + "id": 14017910, + "labels": [], + "number": 824, + "title": "Issue/821", + "url": "https://github.com/hapijs/hapi/pull/824" + }, + { + "id": 13978845, + "labels": ["feature"], + "number": 821, + "title": "Allow to render templates asynchronously", + "url": "https://github.com/hapijs/hapi/issues/821" + }, + { + "id": 13977385, + "labels": [], + "number": 820, + "title": "Clarified the format of payload in server.inject in the Reference doc", + "url": "https://github.com/hapijs/hapi/pull/820" + }, + { + "id": 13916251, + "labels": ["feature"], + "number": 812, + "title": "Allow specifying the supported content-type of each route", + "url": "https://github.com/hapijs/hapi/issues/812" + }, + { + "id": 13910507, + "labels": ["bug"], + "number": 809, + "title": "Error Stack Trace is not printed to the console", + "url": "https://github.com/hapijs/hapi/issues/809" + }, + { + "id": 13902664, + "labels": ["feature"], + "number": 808, + "title": "Add an override config to route.payload", + "url": "https://github.com/hapijs/hapi/issues/808" + }, + { + "id": 13900493, + "labels": ["feature"], + "number": 807, + "title": "Allow HttpOnly Flag for authentication cookies", + "url": "https://github.com/hapijs/hapi/issues/807" + }, + { + "id": 13796504, + "labels": ["feature"], + "number": 801, + "title": "Switch view from using sync file ready to async", + "url": "https://github.com/hapijs/hapi/issues/801" + } + ], + "number": 32, + "url": "https://github.com/hapijs/hapi/milestone/32", + "version": "1.1.0" + }, + { + "date": "2013-05-06T18:44:24Z", + "id": 328000, + "issues": [ + { + "id": 14014550, + "labels": [], + "number": 823, + "title": "Issue/822", + "url": "https://github.com/hapijs/hapi/pull/823" + }, + { + "id": 13986233, + "labels": ["bug"], + "number": 822, + "title": "JSONP doesn't seem to be working", + "url": "https://github.com/hapijs/hapi/issues/822" + }, + { + "id": 13976756, + "labels": [], + "number": 818, + "title": "Tiny composer documentation fix", + "url": "https://github.com/hapijs/hapi/pull/818" + }, + { + "id": 13971839, + "labels": [], + "number": 817, + "title": "Payload bugfix for PATCH method", + "url": "https://github.com/hapijs/hapi/pull/817" + }, + { + "id": 13958241, + "labels": [], + "number": 814, + "title": "Fixed jade compile issues and updated tests to verify fix.", + "url": "https://github.com/hapijs/hapi/pull/814" + }, + { + "id": 13850387, + "labels": ["bug"], + "number": 804, + "title": "Remove restriction on params in path for static file handler", + "url": "https://github.com/hapijs/hapi/issues/804" + } + ], + "number": 35, + "url": "https://github.com/hapijs/hapi/milestone/35", + "version": "1.0.3" + }, + { + "date": "2013-05-04T16:51:51Z", + "id": 326097, + "issues": [ + { + "id": 13962934, + "labels": [], + "number": 815, + "title": "Using TLS settings with Buffer", + "url": "https://github.com/hapijs/hapi/issues/815" + }, + { + "id": 13924088, + "labels": ["bug"], + "number": 813, + "title": "text/* content-type always echo back the received content", + "url": "https://github.com/hapijs/hapi/issues/813" + } + ], + "number": 34, + "url": "https://github.com/hapijs/hapi/milestone/34", + "version": "1.0.2" + }, + { + "date": "2013-05-02T22:35:03Z", + "id": 325928, + "issues": [ + { + "id": 13913740, + "labels": ["bug"], + "number": 811, + "title": "Does not work with formidable 1.0.14", + "url": "https://github.com/hapijs/hapi/issues/811" + } + ], + "number": 33, + "url": "https://github.com/hapijs/hapi/milestone/33", + "version": "1.0.1" + }, + { + "date": "2013-04-30T16:50:51Z", + "id": 288288, + "issues": [ + { + "id": 13709114, + "labels": ["feature"], + "number": 796, + "title": "Allow unencoded double quote and backslash in the cookie value", + "url": "https://github.com/hapijs/hapi/issues/796" + }, + { + "id": 13676023, + "labels": ["feature"], + "number": 793, + "title": "Use new assert with passed parameters instead of concat string", + "url": "https://github.com/hapijs/hapi/issues/793" + }, + { + "id": 13675336, + "labels": ["non issue"], + "number": 792, + "title": "Allow validation of any type, not just objects (except errors, still ignored)", + "url": "https://github.com/hapijs/hapi/issues/792" + }, + { + "id": 13674433, + "labels": ["bug", "test"], + "number": 791, + "title": "Test fails: Auth Hawk includes authorization header in response when the response is a stream", + "url": "https://github.com/hapijs/hapi/issues/791" + }, + { + "id": 13614406, + "labels": ["bug"], + "number": 789, + "title": "Streams not properly being closed for static files when browser gets cache hit", + "url": "https://github.com/hapijs/hapi/issues/789" + }, + { + "id": 13603940, + "labels": ["documentation"], + "number": 788, + "title": "Need more detailed documentation for \"next\" callback for event handlers", + "url": "https://github.com/hapijs/hapi/issues/788" + }, + { + "id": 13602050, + "labels": ["feature"], + "number": 787, + "title": "Expose Plugin File Path", + "url": "https://github.com/hapijs/hapi/issues/787" + }, + { + "id": 13497160, + "labels": ["bug"], + "number": 786, + "title": "View handlers uses `request.querystring` instead of `request.query`", + "url": "https://github.com/hapijs/hapi/issues/786" + }, + { + "id": 13445014, + "labels": ["feature"], + "number": 784, + "title": "Change server helper options.generateKey to receive the same arguments as the helper method", + "url": "https://github.com/hapijs/hapi/issues/784" + }, + { + "id": 13438493, + "labels": ["bug"], + "number": 782, + "title": "Payload parsing should be based on request method, not path method", + "url": "https://github.com/hapijs/hapi/issues/782" + }, + { + "id": 13430971, + "labels": ["bug"], + "number": 781, + "title": "Do not set request.state[name] when value is invalid regardless of failAction", + "url": "https://github.com/hapijs/hapi/issues/781" + }, + { + "id": 13423395, + "labels": ["feature"], + "number": 780, + "title": "Relative path redirection should have vhost support", + "url": "https://github.com/hapijs/hapi/issues/780" + }, + { + "id": 13375783, + "labels": ["feature"], + "number": 779, + "title": "Add server config `location` for Location header prefix", + "url": "https://github.com/hapijs/hapi/issues/779" + }, + { + "id": 13354112, + "labels": ["feature", "breaking changes"], + "number": 776, + "title": "Streamline request.reply()", + "url": "https://github.com/hapijs/hapi/issues/776" + }, + { + "id": 13353381, + "labels": ["feature"], + "number": 775, + "title": "Log cookie errors when failAction set to 'error'", + "url": "https://github.com/hapijs/hapi/issues/775" + }, + { + "id": 13286017, + "labels": ["bug"], + "number": 771, + "title": "Multipart upload issue", + "url": "https://github.com/hapijs/hapi/issues/771" + }, + { + "id": 13233764, + "labels": ["documentation"], + "number": 769, + "title": "View handler example", + "url": "https://github.com/hapijs/hapi/issues/769" + }, + { + "id": 13233600, + "labels": ["documentation"], + "number": 768, + "title": "Directory handler example", + "url": "https://github.com/hapijs/hapi/issues/768" + }, + { + "id": 13212806, + "labels": ["documentation"], + "number": 767, + "title": "Verify every example works with 1.0", + "url": "https://github.com/hapijs/hapi/issues/767" + }, + { + "id": 13204237, + "labels": ["feature"], + "number": 765, + "title": "Refactor views manager configuration", + "url": "https://github.com/hapijs/hapi/issues/765" + }, + { + "id": 13163765, + "labels": ["breaking changes"], + "number": 761, + "title": "Hapi.Types is undefined", + "url": "https://github.com/hapijs/hapi/issues/761" + }, + { + "id": 13135275, + "labels": [], + "number": 759, + "title": "Feature/misc", + "url": "https://github.com/hapijs/hapi/pull/759" + }, + { + "id": 13100931, + "labels": ["bug", "documentation"], + "number": 758, + "title": "cookie authentication example fails with 1.0.0", + "url": "https://github.com/hapijs/hapi/issues/758" + }, + { + "id": 13072454, + "labels": [], + "number": 755, + "title": "Views now render without child path", + "url": "https://github.com/hapijs/hapi/pull/755" + }, + { + "id": 13052383, + "labels": ["bug"], + "number": 754, + "title": "Allow server config to contain uri and not override it if set", + "url": "https://github.com/hapijs/hapi/issues/754" + }, + { + "id": 13046661, + "labels": ["feature"], + "number": 752, + "title": "Shared config for plugins", + "url": "https://github.com/hapijs/hapi/issues/752" + }, + { + "id": 13045948, + "labels": ["bug"], + "number": 751, + "title": "Cleanup Unmonitored error", + "url": "https://github.com/hapijs/hapi/issues/751" + }, + { + "id": 13014068, + "labels": ["bug"], + "number": 749, + "title": "Debug stack trace", + "url": "https://github.com/hapijs/hapi/issues/749" + }, + { + "id": 12954193, + "labels": ["support"], + "number": 748, + "title": "request.reply.redirect going to '0.0.0.0'", + "url": "https://github.com/hapijs/hapi/issues/748" + }, + { + "id": 12928940, + "labels": [], + "number": 745, + "title": "Basic Authentication callback with no username/password returns 500", + "url": "https://github.com/hapijs/hapi/issues/745" + }, + { + "id": 12920612, + "labels": ["documentation"], + "number": 744, + "title": "Basic Authentication", + "url": "https://github.com/hapijs/hapi/issues/744" + }, + { + "id": 12905405, + "labels": ["feature"], + "number": 742, + "title": "Remove built-in Oz support", + "url": "https://github.com/hapijs/hapi/issues/742" + }, + { + "id": 12884522, + "labels": ["feature"], + "number": 741, + "title": "Remove Raw response type", + "url": "https://github.com/hapijs/hapi/issues/741" + }, + { + "id": 12862942, + "labels": [], + "number": 739, + "title": "Adding server.stop support for destroying connections after a timeout", + "url": "https://github.com/hapijs/hapi/pull/739" + }, + { + "id": 12861082, + "labels": [], + "number": 738, + "title": "Support for Access-Control-Expose-Headers in the CORS options", + "url": "https://github.com/hapijs/hapi/pull/738" + }, + { + "id": 12835349, + "labels": [], + "number": 736, + "title": "Node v0.10", + "url": "https://github.com/hapijs/hapi/pull/736" + }, + { + "id": 12817700, + "labels": ["breaking changes"], + "number": 735, + "title": "1.0.0 Breaking Changes", + "url": "https://github.com/hapijs/hapi/issues/735" + }, + { + "id": 11859746, + "labels": ["feature"], + "number": 651, + "title": "node 0.10", + "url": "https://github.com/hapijs/hapi/issues/651" + }, + { + "id": 11397131, + "labels": ["feature"], + "number": 582, + "title": "Require.js support", + "url": "https://github.com/hapijs/hapi/issues/582" + } + ], + "number": 26, + "url": "https://github.com/hapijs/hapi/milestone/26", + "version": "1.0.0" + }, + { + "date": "2013-04-03T07:45:24Z", + "id": 285258, + "issues": [ + { + "id": 12635355, + "labels": ["feature"], + "number": 728, + "title": "Hawk 0.11", + "url": "https://github.com/hapijs/hapi/issues/728" + }, + { + "id": 12634593, + "labels": [], + "number": 727, + "title": "Fix hawk response header edge cases", + "url": "https://github.com/hapijs/hapi/pull/727" + }, + { + "id": 12624628, + "labels": [], + "number": 726, + "title": "Misc features", + "url": "https://github.com/hapijs/hapi/pull/726" + }, + { + "id": 12621256, + "labels": [], + "number": 725, + "title": "Debug enhancements", + "url": "https://github.com/hapijs/hapi/pull/725" + }, + { + "id": 12617454, + "labels": [], + "number": 724, + "title": "Route validation is now using payload instead of schema", + "url": "https://github.com/hapijs/hapi/pull/724" + }, + { + "id": 12615604, + "labels": [], + "number": 721, + "title": "Rename the route validate.schema to validate.payload", + "url": "https://github.com/hapijs/hapi/issues/721" + }, + { + "id": 12613611, + "labels": ["bug"], + "number": 720, + "title": "Auth.responseHeader not called if error returned pre handler", + "url": "https://github.com/hapijs/hapi/issues/720" + }, + { + "id": 12543066, + "labels": ["feature"], + "number": 718, + "title": "Automatically set a cookie if none present", + "url": "https://github.com/hapijs/hapi/issues/718" + }, + { + "id": 12520802, + "labels": [], + "number": 716, + "title": "Errors when preparing a response now emit internalError correctly", + "url": "https://github.com/hapijs/hapi/pull/716" + }, + { + "id": 12467968, + "labels": [], + "number": 715, + "title": "Auth api refactor", + "url": "https://github.com/hapijs/hapi/pull/715" + }, + { + "id": 12466389, + "labels": [], + "number": 714, + "title": "Adding remote address and referrer information to request.info", + "url": "https://github.com/hapijs/hapi/pull/714" + }, + { + "id": 12459303, + "labels": ["bug"], + "number": 713, + "title": "internalError event not emitted on view error.", + "url": "https://github.com/hapijs/hapi/issues/713" + }, + { + "id": 12387120, + "labels": ["feature"], + "number": 711, + "title": "Add environment variable support when using composer", + "url": "https://github.com/hapijs/hapi/issues/711" + }, + { + "id": 12325809, + "labels": ["bug"], + "number": 707, + "title": "internalError event returns error handler stack trace not thrown trace", + "url": "https://github.com/hapijs/hapi/issues/707" + }, + { + "id": 12317704, + "labels": ["bug"], + "number": 706, + "title": "Hawk's Authorization Response Header", + "url": "https://github.com/hapijs/hapi/issues/706" + }, + { + "id": 12299900, + "labels": ["non issue"], + "number": 705, + "title": "Hawk's timestamp using Hapi", + "url": "https://github.com/hapijs/hapi/issues/705" + }, + { + "id": 12279230, + "labels": ["support"], + "number": 703, + "title": "taking a look at http data posted before 400 response", + "url": "https://github.com/hapijs/hapi/issues/703" + }, + { + "id": 12262195, + "labels": ["feature"], + "number": 702, + "title": "Client IP Address", + "url": "https://github.com/hapijs/hapi/issues/702" + }, + { + "id": 12261218, + "labels": ["documentation", "support"], + "number": 701, + "title": "A newbie question about Cookie Authentication example", + "url": "https://github.com/hapijs/hapi/issues/701" + }, + { + "id": 12243568, + "labels": [], + "number": 700, + "title": "Adding security tests and fixing security bugs", + "url": "https://github.com/hapijs/hapi/pull/700" + }, + { + "id": 12214582, + "labels": ["feature"], + "number": 698, + "title": "Reformat errors ability", + "url": "https://github.com/hapijs/hapi/issues/698" + }, + { + "id": 12214430, + "labels": ["feature"], + "number": 697, + "title": "Protect all error responses from echo attacks", + "url": "https://github.com/hapijs/hapi/issues/697" + }, + { + "id": 12214293, + "labels": ["feature"], + "number": 696, + "title": "Provide easier debugging defaults", + "url": "https://github.com/hapijs/hapi/issues/696" + }, + { + "id": 12214014, + "labels": ["feature"], + "number": 694, + "title": "Normalize handler signature (always bind this, and pass same args)", + "url": "https://github.com/hapijs/hapi/issues/694" + }, + { + "id": 12211394, + "labels": ["bug"], + "number": 693, + "title": "file handler includes internal information in the response", + "url": "https://github.com/hapijs/hapi/issues/693" + }, + { + "id": 12211081, + "labels": ["bug"], + "number": 692, + "title": "Missing handler error should provide more debug information", + "url": "https://github.com/hapijs/hapi/issues/692" + }, + { + "id": 12153633, + "labels": [], + "number": 686, + "title": "Pack auth api", + "url": "https://github.com/hapijs/hapi/pull/686" + }, + { + "id": 12126279, + "labels": ["documentation"], + "number": 685, + "title": "How to use State and Cookie Authentication?", + "url": "https://github.com/hapijs/hapi/issues/685" + }, + { + "id": 12117075, + "labels": ["feature"], + "number": 684, + "title": "Enable plugin registration of auth schemes", + "url": "https://github.com/hapijs/hapi/issues/684" + }, + { + "id": 12116333, + "labels": [], + "number": 683, + "title": "Pack and cache API refactor", + "url": "https://github.com/hapijs/hapi/pull/683" + }, + { + "id": 12006207, + "labels": ["breaking changes"], + "number": 673, + "title": "0.16.0 Breaking Changes", + "url": "https://github.com/hapijs/hapi/issues/673" + }, + { + "id": 11889554, + "labels": ["bug", "support"], + "number": 656, + "title": "Support for virtual hosts", + "url": "https://github.com/hapijs/hapi/issues/656" + }, + { + "id": 11491876, + "labels": ["feature"], + "number": 605, + "title": "Plugin-level cache setup", + "url": "https://github.com/hapijs/hapi/issues/605" + }, + { + "id": 11397040, + "labels": ["feature"], + "number": 578, + "title": "Graceful Restart", + "url": "https://github.com/hapijs/hapi/issues/578" + } + ], + "number": 24, + "url": "https://github.com/hapijs/hapi/milestone/24", + "version": "0.16.0" + }, + { + "date": "2013-03-29T20:46:00Z", + "id": 299322, + "issues": [ + { + "id": 12617208, + "labels": ["bug"], + "number": 723, + "title": "Global autoValue cookie overwrites other cookies", + "url": "https://github.com/hapijs/hapi/issues/723" + }, + { + "id": 12617033, + "labels": ["bug"], + "number": 722, + "title": "Proxy shares cookies across different sessions", + "url": "https://github.com/hapijs/hapi/issues/722" + } + ], + "number": 31, + "url": "https://github.com/hapijs/hapi/milestone/31", + "version": "0.15.8" + }, + { + "date": "2013-03-28T02:15:43Z", + "id": 298149, + "issues": [ + { + "id": 12543039, + "labels": [], + "number": 717, + "title": "Auto cookie value", + "url": "https://github.com/hapijs/hapi/pull/717" + } + ], + "number": 30, + "url": "https://github.com/hapijs/hapi/milestone/30", + "version": "0.15.7" + }, + { + "date": "2013-03-19T05:16:24Z", + "id": 291137, + "issues": [ + { + "id": 12156548, + "labels": [], + "number": 687, + "title": "Proxy is double encoding gziped responses", + "url": "https://github.com/hapijs/hapi/issues/687" + } + ], + "number": 29, + "url": "https://github.com/hapijs/hapi/milestone/29", + "version": "0.15.6" + }, + { + "date": "2013-03-15T23:15:47Z", + "id": 289574, + "issues": [ + { + "id": 12085246, + "labels": [], + "number": 682, + "title": "Bypass node http bug in writeHead", + "url": "https://github.com/hapijs/hapi/pull/682" + }, + { + "id": 12083581, + "labels": ["bug"], + "number": 681, + "title": "CORS headers need to override proxy CORS headers", + "url": "https://github.com/hapijs/hapi/issues/681" + }, + { + "id": 12075076, + "labels": ["non issue"], + "number": 679, + "title": "Add test for proxy with passThrough and server caching", + "url": "https://github.com/hapijs/hapi/issues/679" + }, + { + "id": 12074622, + "labels": [], + "number": 678, + "title": "Updating tutorials and adding a plugins list doc", + "url": "https://github.com/hapijs/hapi/pull/678" + }, + { + "id": 12030722, + "labels": [], + "number": 674, + "title": "Adding missing branch tests", + "url": "https://github.com/hapijs/hapi/pull/674" + } + ], + "number": 28, + "url": "https://github.com/hapijs/hapi/milestone/28", + "version": "0.15.4" + }, + { + "date": "2013-03-15T07:41:16Z", + "id": 289031, + "issues": [ + { + "id": 12052793, + "labels": [], + "number": 677, + "title": "Fix ext() with function array bug", + "url": "https://github.com/hapijs/hapi/pull/677" + } + ], + "number": 27, + "url": "https://github.com/hapijs/hapi/milestone/27", + "version": "0.15.3" + }, + { + "date": "2013-03-14T05:16:42Z", + "id": 287419, + "issues": [ + { + "id": 11999714, + "labels": ["feature"], + "number": 672, + "title": "Emit 'internalError' on 500 responses", + "url": "https://github.com/hapijs/hapi/issues/672" + }, + { + "id": 11999707, + "labels": ["feature"], + "number": 671, + "title": "Emit 'internalError' on 500 responses", + "url": "https://github.com/hapijs/hapi/issues/671" + }, + { + "id": 11999635, + "labels": [], + "number": 670, + "title": "internalError event", + "url": "https://github.com/hapijs/hapi/pull/670" + }, + { + "id": 11992474, + "labels": [], + "number": 669, + "title": "Optimize prerequisites and protect", + "url": "https://github.com/hapijs/hapi/pull/669" + }, + { + "id": 11992462, + "labels": ["feature"], + "number": 668, + "title": "Run prerequisites inside a domain", + "url": "https://github.com/hapijs/hapi/issues/668" + }, + { + "id": 11989535, + "labels": ["feature"], + "number": 667, + "title": "Ensure all assertions inside request handling result in 500 response", + "url": "https://github.com/hapijs/hapi/issues/667" + }, + { + "id": 11989497, + "labels": ["feature"], + "number": 666, + "title": "Asserts throw instead of exit", + "url": "https://github.com/hapijs/hapi/issues/666" + }, + { + "id": 11987039, + "labels": ["breaking changes"], + "number": 665, + "title": "0.15.2 Breaking Changes", + "url": "https://github.com/hapijs/hapi/issues/665" + }, + { + "id": 11770720, + "labels": ["feature"], + "number": 644, + "title": "Log but ignore cookie errors", + "url": "https://github.com/hapijs/hapi/issues/644" + } + ], + "number": 25, + "url": "https://github.com/hapijs/hapi/milestone/25", + "version": "0.15.2" + }, + { + "date": "2013-03-13T06:13:06Z", + "id": 284695, + "issues": [ + { + "id": 11961231, + "labels": [], + "number": 663, + "title": "Full plugin deps", + "url": "https://github.com/hapijs/hapi/pull/663" + }, + { + "id": 11957496, + "labels": [], + "number": 662, + "title": "Plugin deps", + "url": "https://github.com/hapijs/hapi/pull/662" + }, + { + "id": 11944990, + "labels": [], + "number": 659, + "title": "handler interface api styles", + "url": "https://github.com/hapijs/hapi/pull/659" + }, + { + "id": 11892690, + "labels": ["feature"], + "number": 657, + "title": "Route prerequisite detection for route handler request object.", + "url": "https://github.com/hapijs/hapi/issues/657" + }, + { + "id": 11863568, + "labels": [], + "number": 653, + "title": "Add request defensive protection", + "url": "https://github.com/hapijs/hapi/pull/653" + }, + { + "id": 11860425, + "labels": ["feature"], + "number": 652, + "title": "Plugin dependencies", + "url": "https://github.com/hapijs/hapi/issues/652" + }, + { + "id": 11854961, + "labels": ["documentation"], + "number": 650, + "title": "Document plugin API", + "url": "https://github.com/hapijs/hapi/issues/650" + }, + { + "id": 11849858, + "labels": [], + "number": 649, + "title": "Migrate to lab (from mocha)", + "url": "https://github.com/hapijs/hapi/pull/649" + }, + { + "id": 11796135, + "labels": ["feature", "test"], + "number": 646, + "title": "Replace mocha with lab", + "url": "https://github.com/hapijs/hapi/issues/646" + }, + { + "id": 11723205, + "labels": [], + "number": 642, + "title": "Adding hawk response auth header", + "url": "https://github.com/hapijs/hapi/pull/642" + }, + { + "id": 11718430, + "labels": [], + "number": 641, + "title": "Question: generic internal error handler", + "url": "https://github.com/hapijs/hapi/issues/641" + }, + { + "id": 11609162, + "labels": ["feature"], + "number": 623, + "title": "Hawk 0.10 server response authentication", + "url": "https://github.com/hapijs/hapi/issues/623" + }, + { + "id": 9811425, + "labels": ["feature"], + "number": 361, + "title": "Node domains", + "url": "https://github.com/hapijs/hapi/issues/361" + } + ], + "number": 23, + "url": "https://github.com/hapijs/hapi/milestone/23", + "version": "0.15.1" + }, + { + "date": "2013-03-10T17:27:19Z", + "id": 276291, + "issues": [ + { + "id": 11651412, + "labels": [], + "number": 638, + "title": "Event tags", + "url": "https://github.com/hapijs/hapi/pull/638" + }, + { + "id": 11648641, + "labels": ["feature", "support"], + "number": 637, + "title": "Parsing the request form-encoded payload using qs", + "url": "https://github.com/hapijs/hapi/issues/637" + }, + { + "id": 11645713, + "labels": ["feature"], + "number": 636, + "title": "Add event tags object in callback", + "url": "https://github.com/hapijs/hapi/issues/636" + }, + { + "id": 11645418, + "labels": [], + "number": 635, + "title": "Cleanup", + "url": "https://github.com/hapijs/hapi/pull/635" + }, + { + "id": 11644070, + "labels": [], + "number": 634, + "title": "Domains", + "url": "https://github.com/hapijs/hapi/pull/634" + }, + { + "id": 11640098, + "labels": [], + "number": 633, + "title": "pack interface cleanup", + "url": "https://github.com/hapijs/hapi/pull/633" + }, + { + "id": 11640082, + "labels": [], + "number": 632, + "title": "Adding example of cookie failAction", + "url": "https://github.com/hapijs/hapi/pull/632" + }, + { + "id": 11633228, + "labels": [], + "number": 630, + "title": "shot 0.1.0, Buffer response type, encoding", + "url": "https://github.com/hapijs/hapi/pull/630" + }, + { + "id": 11632843, + "labels": ["feature"], + "number": 628, + "title": "Support text/* encoding for incoming payloads", + "url": "https://github.com/hapijs/hapi/issues/628" + }, + { + "id": 11632828, + "labels": ["bug"], + "number": 627, + "title": "Allow unknown content-type when not parsing", + "url": "https://github.com/hapijs/hapi/issues/627" + }, + { + "id": 11632770, + "labels": ["feature"], + "number": 626, + "title": "shot 0.1.0", + "url": "https://github.com/hapijs/hapi/issues/626" + }, + { + "id": 11632744, + "labels": ["feature"], + "number": 625, + "title": "Buffer response type", + "url": "https://github.com/hapijs/hapi/issues/625" + }, + { + "id": 11600107, + "labels": ["documentation"], + "number": 622, + "title": "Document response object header method", + "url": "https://github.com/hapijs/hapi/issues/622" + }, + { + "id": 11596102, + "labels": ["feature"], + "number": 621, + "title": "Setting charset to UTF-8", + "url": "https://github.com/hapijs/hapi/issues/621" + }, + { + "id": 11587790, + "labels": ["feature"], + "number": 619, + "title": "hawk 0.10, payload cleanup, text/* parse support", + "url": "https://github.com/hapijs/hapi/pull/619" + }, + { + "id": 11587784, + "labels": ["feature"], + "number": 618, + "title": "Support parsing text/* mime types", + "url": "https://github.com/hapijs/hapi/issues/618" + }, + { + "id": 11573997, + "labels": [], + "number": 617, + "title": "Upgrade to Hawk 0.9.0", + "url": "https://github.com/hapijs/hapi/pull/617" + }, + { + "id": 11573032, + "labels": [], + "number": 616, + "title": "Cookie Max-Age is in seconds, not msec", + "url": "https://github.com/hapijs/hapi/pull/616" + }, + { + "id": 11572423, + "labels": [], + "number": 615, + "title": "Using path.join where possible", + "url": "https://github.com/hapijs/hapi/pull/615" + }, + { + "id": 11568653, + "labels": ["bug"], + "number": 614, + "title": "Cookie MaxAge set incorrectly", + "url": "https://github.com/hapijs/hapi/issues/614" + }, + { + "id": 11567096, + "labels": [], + "number": 613, + "title": "Fix proxy mapUri query bug, allow pack.api to specify key", + "url": "https://github.com/hapijs/hapi/pull/613" + }, + { + "id": 11560132, + "labels": [], + "number": 612, + "title": "Remove monitor", + "url": "https://github.com/hapijs/hapi/pull/612" + }, + { + "id": 11554936, + "labels": [], + "number": 611, + "title": "Adding vhost tests", + "url": "https://github.com/hapijs/hapi/pull/611" + }, + { + "id": 11551794, + "labels": [], + "number": 610, + "title": "Cleaning up test and stream response", + "url": "https://github.com/hapijs/hapi/pull/610" + }, + { + "id": 11534694, + "labels": [], + "number": 609, + "title": "Virtual hosts support", + "url": "https://github.com/hapijs/hapi/pull/609" + }, + { + "id": 11534140, + "labels": ["test"], + "number": 608, + "title": "Random test fails: Response Stream returns a deflated stream reply without a content-length header when accept-encoding is deflate", + "url": "https://github.com/hapijs/hapi/issues/608" + }, + { + "id": 11523270, + "labels": [], + "number": 607, + "title": "Adding basic crumb CSRF information to reference guide ", + "url": "https://github.com/hapijs/hapi/pull/607" + }, + { + "id": 11513175, + "labels": [], + "number": 606, + "title": "Handling request and response errors", + "url": "https://github.com/hapijs/hapi/pull/606" + }, + { + "id": 11491866, + "labels": ["feature"], + "number": 604, + "title": "Move good log utils back in, turn rest (monitor) to plugin", + "url": "https://github.com/hapijs/hapi/issues/604" + }, + { + "id": 11491814, + "labels": ["feature"], + "number": 603, + "title": "Move batch to a plugin", + "url": "https://github.com/hapijs/hapi/issues/603" + }, + { + "id": 11491760, + "labels": [], + "number": 602, + "title": "Relative paths", + "url": "https://github.com/hapijs/hapi/pull/602" + }, + { + "id": 11490642, + "labels": ["feature"], + "number": 601, + "title": "Use Path.join where possible", + "url": "https://github.com/hapijs/hapi/issues/601" + }, + { + "id": 11486006, + "labels": ["breaking changes"], + "number": 600, + "title": "0.15.0 Breaking Changes", + "url": "https://github.com/hapijs/hapi/issues/600" + }, + { + "id": 11483571, + "labels": ["bug", "documentation"], + "number": 599, + "title": "proxy with mapUri, example", + "url": "https://github.com/hapijs/hapi/issues/599" + }, + { + "id": 11479019, + "labels": ["feature"], + "number": 598, + "title": "Make resources references in a given plugin relative to that plugin", + "url": "https://github.com/hapijs/hapi/issues/598" + }, + { + "id": 11477288, + "labels": [], + "number": 597, + "title": "Create grunt template for scaffolding hapi plugin development", + "url": "https://github.com/hapijs/hapi/issues/597" + }, + { + "id": 11475115, + "labels": [], + "number": 596, + "title": "Adding request payload section", + "url": "https://github.com/hapijs/hapi/pull/596" + }, + { + "id": 11473553, + "labels": [], + "number": 595, + "title": "Fixing gzip stream test to use simple stream", + "url": "https://github.com/hapijs/hapi/pull/595" + }, + { + "id": 11467348, + "labels": [], + "number": 594, + "title": "Adding deflate support to stream response", + "url": "https://github.com/hapijs/hapi/pull/594" + }, + { + "id": 11462976, + "labels": [], + "number": 593, + "title": "Adding graceful shutdown from QUIT signal event", + "url": "https://github.com/hapijs/hapi/pull/593" + }, + { + "id": 11446630, + "labels": [], + "number": 592, + "title": "refactor router", + "url": "https://github.com/hapijs/hapi/pull/592" + }, + { + "id": 11442426, + "labels": [], + "number": 591, + "title": "Fixing test to be isolated", + "url": "https://github.com/hapijs/hapi/pull/591" + }, + { + "id": 11434541, + "labels": ["bug"], + "number": 589, + "title": "Sending a gzipped proxy response now works correctly", + "url": "https://github.com/hapijs/hapi/pull/589" + }, + { + "id": 11426358, + "labels": ["feature"], + "number": 588, + "title": "Support an array of directories in order of priority", + "url": "https://github.com/hapijs/hapi/issues/588" + }, + { + "id": 11418660, + "labels": [], + "number": 585, + "title": "Server.stop now stops gracefully", + "url": "https://github.com/hapijs/hapi/pull/585" + }, + { + "id": 11397197, + "labels": ["feature"], + "number": 583, + "title": "CSRF support", + "url": "https://github.com/hapijs/hapi/issues/583" + }, + { + "id": 11397112, + "labels": ["feature"], + "number": 581, + "title": "Enhanced HTML Form support for webdevs", + "url": "https://github.com/hapijs/hapi/issues/581" + }, + { + "id": 11397090, + "labels": ["feature"], + "number": 580, + "title": "Command line / ENV param to send Boom.Internal calls to (stdout || stderr)", + "url": "https://github.com/hapijs/hapi/issues/580" + }, + { + "id": 11397064, + "labels": ["feature"], + "number": 579, + "title": "Proper Request.flash support in Blammo/yar", + "url": "https://github.com/hapijs/hapi/issues/579" + }, + { + "id": 11229442, + "labels": ["documentation"], + "number": 566, + "title": "Better documentation for Cookie and Session handling.", + "url": "https://github.com/hapijs/hapi/issues/566" + }, + { + "id": 11222468, + "labels": ["feature"], + "number": 565, + "title": "Graceful shutdown", + "url": "https://github.com/hapijs/hapi/issues/565" + }, + { + "id": 11004338, + "labels": ["documentation"], + "number": 534, + "title": "Document multipart/form-data", + "url": "https://github.com/hapijs/hapi/issues/534" + }, + { + "id": 10762845, + "labels": ["documentation"], + "number": 495, + "title": "Document new 'try' auth mode", + "url": "https://github.com/hapijs/hapi/issues/495" + }, + { + "id": 10513914, + "labels": ["feature"], + "number": 437, + "title": "Support passport.js", + "url": "https://github.com/hapijs/hapi/issues/437" + } + ], + "number": 22, + "url": "https://github.com/hapijs/hapi/milestone/22", + "version": "0.15.0" + }, + { + "date": "2013-02-26T18:10:43Z", + "id": 271778, + "issues": [ + { + "id": 11420026, + "labels": [], + "number": 587, + "title": "Composer config options", + "url": "https://github.com/hapijs/hapi/pull/587" + }, + { + "id": 11390008, + "labels": [], + "number": 577, + "title": "Beef up file etag tests", + "url": "https://github.com/hapijs/hapi/pull/577" + }, + { + "id": 11270882, + "labels": ["bug"], + "number": 569, + "title": "Minor: Is 'description' still a valid attribute of the 'config' object when doing route configuration?", + "url": "https://github.com/hapijs/hapi/issues/569" + }, + { + "id": 11214424, + "labels": ["bug"], + "number": 562, + "title": "getRouteSourceFilePath doesn't work correctly on windows", + "url": "https://github.com/hapijs/hapi/issues/562" + }, + { + "id": 11016173, + "labels": ["feature"], + "number": 538, + "title": "Show a color error on config snippet when invalid", + "url": "https://github.com/hapijs/hapi/issues/538" + }, + { + "id": 11004577, + "labels": ["feature"], + "number": 536, + "title": "Support other encoding methods (deflate)", + "url": "https://github.com/hapijs/hapi/issues/536" + }, + { + "id": 9907684, + "labels": ["feature"], + "number": 378, + "title": "Hawk bewit support as a new authentication scheme", + "url": "https://github.com/hapijs/hapi/issues/378" + } + ], + "number": 21, + "url": "https://github.com/hapijs/hapi/milestone/21", + "version": "0.14.2" + }, + { + "date": "2013-02-20T21:59:12Z", + "id": 259099, + "issues": [ + { + "id": 11216800, + "labels": [], + "number": 563, + "title": "Using memory instead of redis for test", + "url": "https://github.com/hapijs/hapi/pull/563" + }, + { + "id": 11213907, + "labels": [], + "number": 561, + "title": "Composer", + "url": "https://github.com/hapijs/hapi/pull/561" + }, + { + "id": 11164697, + "labels": ["feature"], + "number": 554, + "title": "Support node server socket timeout override", + "url": "https://github.com/hapijs/hapi/issues/554" + }, + { + "id": 11162871, + "labels": [], + "number": 553, + "title": "Pack server event and socket timeout override", + "url": "https://github.com/hapijs/hapi/pull/553" + }, + { + "id": 11115188, + "labels": ["documentation"], + "number": 549, + "title": "\"Hello static server\" sample does not working on windows ", + "url": "https://github.com/hapijs/hapi/issues/549" + }, + { + "id": 11044908, + "labels": ["bug"], + "number": 543, + "title": "Fix scoping bug when using multiple helper prerequisites", + "url": "https://github.com/hapijs/hapi/pull/543" + }, + { + "id": 11015884, + "labels": [], + "number": 537, + "title": "Update docs/Reference.md", + "url": "https://github.com/hapijs/hapi/pull/537" + }, + { + "id": 11004550, + "labels": ["feature"], + "number": 535, + "title": "Optimize Generic gzip to reduce memory copies of payload.join()", + "url": "https://github.com/hapijs/hapi/issues/535" + }, + { + "id": 11004282, + "labels": [], + "number": 533, + "title": "Add make for generating complexity report", + "url": "https://github.com/hapijs/hapi/issues/533" + }, + { + "id": 10983041, + "labels": ["feature"], + "number": 532, + "title": "Validate route config schema", + "url": "https://github.com/hapijs/hapi/issues/532" + }, + { + "id": 10982908, + "labels": [], + "number": 531, + "title": "JSONP", + "url": "https://github.com/hapijs/hapi/pull/531" + }, + { + "id": 10967966, + "labels": ["documentation"], + "number": 529, + "title": "favicon example", + "url": "https://github.com/hapijs/hapi/issues/529" + }, + { + "id": 10963613, + "labels": ["feature"], + "number": 527, + "title": "Support Buffer response", + "url": "https://github.com/hapijs/hapi/issues/527" + }, + { + "id": 10886272, + "labels": [], + "number": 523, + "title": "Set CORS origin header to incoming request origin if allowed", + "url": "https://github.com/hapijs/hapi/pull/523" + }, + { + "id": 10880177, + "labels": [], + "number": 522, + "title": "rename helmet to tv", + "url": "https://github.com/hapijs/hapi/pull/522" + }, + { + "id": 10858782, + "labels": ["test"], + "number": 519, + "title": "Add coverage for 304 response logic", + "url": "https://github.com/hapijs/hapi/issues/519" + }, + { + "id": 10818434, + "labels": ["feature"], + "number": 516, + "title": "Auth scheme request extension interface", + "url": "https://github.com/hapijs/hapi/issues/516" + }, + { + "id": 10815415, + "labels": ["feature"], + "number": 515, + "title": "Option to automatically clear invalid cookies", + "url": "https://github.com/hapijs/hapi/issues/515" + }, + { + "id": 10814003, + "labels": ["bug"], + "number": 514, + "title": "Not found (404) handler method is case sensitive", + "url": "https://github.com/hapijs/hapi/issues/514" + }, + { + "id": 10813559, + "labels": ["feature"], + "number": 513, + "title": "Add server.api and request.api for storing application-specific state", + "url": "https://github.com/hapijs/hapi/issues/513" + }, + { + "id": 10812437, + "labels": [], + "number": 512, + "title": "Direct use of Boom (0.3.0)", + "url": "https://github.com/hapijs/hapi/pull/512" + }, + { + "id": 10771861, + "labels": ["bug"], + "number": 507, + "title": "Fix incorrect use of applyToDefaults in server constructor", + "url": "https://github.com/hapijs/hapi/issues/507" + }, + { + "id": 10771826, + "labels": ["feature"], + "number": 506, + "title": "Add route.config.plugins for plugin-specific config", + "url": "https://github.com/hapijs/hapi/issues/506" + }, + { + "id": 10771804, + "labels": ["feature"], + "number": 505, + "title": "Allow Location header with custom URI schemes", + "url": "https://github.com/hapijs/hapi/issues/505" + }, + { + "id": 10771770, + "labels": ["feature"], + "number": 504, + "title": "Refactor responses to make it easier to create external responses or manipulate", + "url": "https://github.com/hapijs/hapi/issues/504" + }, + { + "id": 10771719, + "labels": ["feature"], + "number": 503, + "title": "Expose request private properties", + "url": "https://github.com/hapijs/hapi/issues/503" + }, + { + "id": 10771678, + "labels": ["feature"], + "number": 502, + "title": "Remove server config format options", + "url": "https://github.com/hapijs/hapi/issues/502" + }, + { + "id": 10771660, + "labels": [], + "number": 501, + "title": "Response refactor, bug fixes", + "url": "https://github.com/hapijs/hapi/pull/501" + }, + { + "id": 10771487, + "labels": ["bug"], + "number": 500, + "title": "Cookie parsing fails if encoding set to 'none'", + "url": "https://github.com/hapijs/hapi/issues/500" + }, + { + "id": 10770317, + "labels": ["bug", "test"], + "number": 499, + "title": "Random test fails: Server Timeout doesn't return an error when server is responding when the timeout occurs", + "url": "https://github.com/hapijs/hapi/issues/499" + }, + { + "id": 10769009, + "labels": [], + "number": 498, + "title": "Adding code coverage support using blanket", + "url": "https://github.com/hapijs/hapi/pull/498" + }, + { + "id": 10768879, + "labels": ["documentation"], + "number": 497, + "title": "Document policy regarding undocumented features", + "url": "https://github.com/hapijs/hapi/issues/497" + }, + { + "id": 10768732, + "labels": ["feature"], + "number": 496, + "title": "Distributable cache for files", + "url": "https://github.com/hapijs/hapi/pull/496" + }, + { + "id": 10748617, + "labels": [], + "number": 494, + "title": "fix typo from issue/491", + "url": "https://github.com/hapijs/hapi/pull/494" + }, + { + "id": 10746995, + "labels": [], + "number": 493, + "title": "Fixing test that would fail periodically", + "url": "https://github.com/hapijs/hapi/pull/493" + }, + { + "id": 10735494, + "labels": ["bug", "documentation"], + "number": 491, + "title": "Example code is wrong", + "url": "https://github.com/hapijs/hapi/issues/491" + }, + { + "id": 10682356, + "labels": ["non issue"], + "number": 489, + "title": "Setting ttl(0) on cookie with definition with non zero ttl", + "url": "https://github.com/hapijs/hapi/issues/489" + }, + { + "id": 10681479, + "labels": ["bug"], + "number": 488, + "title": "Allow setting empty cookie", + "url": "https://github.com/hapijs/hapi/issues/488" + }, + { + "id": 10669275, + "labels": ["bug", "test"], + "number": 486, + "title": "Fails sometimes: Payload stream mode doesn't set the request payload when streaming data in and the connection is interrupted", + "url": "https://github.com/hapijs/hapi/issues/486" + }, + { + "id": 10668953, + "labels": ["feature"], + "number": 485, + "title": "Add authentication 'try' mode", + "url": "https://github.com/hapijs/hapi/issues/485" + }, + { + "id": 10664100, + "labels": ["feature"], + "number": 483, + "title": "CORS support for multiple origins", + "url": "https://github.com/hapijs/hapi/issues/483" + }, + { + "id": 10662096, + "labels": ["feature"], + "number": 482, + "title": "Parse cookies before authentication", + "url": "https://github.com/hapijs/hapi/pull/482" + }, + { + "id": 10659959, + "labels": [], + "number": 481, + "title": "Adding log tag filtering information to readme", + "url": "https://github.com/hapijs/hapi/pull/481" + }, + { + "id": 10658820, + "labels": [], + "number": 480, + "title": "Cleaning up this. use", + "url": "https://github.com/hapijs/hapi/pull/480" + }, + { + "id": 10641472, + "labels": ["non issue"], + "number": 479, + "title": "Review every 'this' to make sure it points to the right context", + "url": "https://github.com/hapijs/hapi/issues/479" + }, + { + "id": 10641416, + "labels": [], + "number": 478, + "title": "Cleanup ext options and error handling", + "url": "https://github.com/hapijs/hapi/pull/478" + }, + { + "id": 10641407, + "labels": ["feature"], + "number": 477, + "title": "Return error if received from onRequest", + "url": "https://github.com/hapijs/hapi/issues/477" + }, + { + "id": 10640578, + "labels": ["breaking changes"], + "number": 476, + "title": "0.14.0 Breaking Changes", + "url": "https://github.com/hapijs/hapi/issues/476" + }, + { + "id": 10634425, + "labels": [], + "number": 475, + "title": "Simplify path regex", + "url": "https://github.com/hapijs/hapi/pull/475" + }, + { + "id": 10612724, + "labels": ["documentation"], + "number": 459, + "title": "Add socket.io example", + "url": "https://github.com/hapijs/hapi/issues/459" + }, + { + "id": 10593638, + "labels": ["feature"], + "number": 451, + "title": "JSONP support", + "url": "https://github.com/hapijs/hapi/issues/451" + }, + { + "id": 10577100, + "labels": ["feature"], + "number": 441, + "title": "Configuration strict mode checking for any unknown config options", + "url": "https://github.com/hapijs/hapi/issues/441" + }, + { + "id": 10547272, + "labels": [], + "number": 438, + "title": "Adding support for payload authentication validation", + "url": "https://github.com/hapijs/hapi/pull/438" + }, + { + "id": 10408675, + "labels": ["feature"], + "number": 428, + "title": "Session authentication strategy", + "url": "https://github.com/hapijs/hapi/issues/428" + }, + { + "id": 10133592, + "labels": ["test"], + "number": 403, + "title": "Try out some new coverage tools", + "url": "https://github.com/hapijs/hapi/issues/403" + }, + { + "id": 9907691, + "labels": ["feature"], + "number": 379, + "title": "Hawk payload validation settings", + "url": "https://github.com/hapijs/hapi/issues/379" + }, + { + "id": 8381503, + "labels": ["documentation"], + "number": 243, + "title": "Rework Readme into tutorial and reference guides", + "url": "https://github.com/hapijs/hapi/issues/243" + } + ], + "number": 18, + "url": "https://github.com/hapijs/hapi/milestone/18", + "version": "0.14.0" + }, + { + "date": "2013-02-05T00:42:58Z", + "id": 259928, + "issues": [ + { + "id": 10633004, + "labels": [], + "number": 474, + "title": "0.13.2", + "url": "https://github.com/hapijs/hapi/pull/474" + }, + { + "id": 10632604, + "labels": [], + "number": 472, + "title": "Fix matching of wildcard path param with trailing /", + "url": "https://github.com/hapijs/hapi/pull/472" + }, + { + "id": 10632583, + "labels": ["bug"], + "number": 471, + "title": "/{p*} doesn't match /path/", + "url": "https://github.com/hapijs/hapi/issues/471" + }, + { + "id": 10624610, + "labels": [], + "number": 466, + "title": "Directory listing at top level folders now link correctly", + "url": "https://github.com/hapijs/hapi/pull/466" + }, + { + "id": 10621136, + "labels": ["bug"], + "number": 465, + "title": "directory list using the directory handler produces wrong URLs", + "url": "https://github.com/hapijs/hapi/issues/465" + }, + { + "id": 10620959, + "labels": ["bug"], + "number": 464, + "title": "index option for directory module doesn't work on subdirs", + "url": "https://github.com/hapijs/hapi/issues/464" + }, + { + "id": 10619747, + "labels": [], + "number": 463, + "title": "Typo: req.session.used -> req.session.user", + "url": "https://github.com/hapijs/hapi/pull/463" + } + ], + "number": 20, + "url": "https://github.com/hapijs/hapi/milestone/20", + "version": "0.13.2" + }, + { + "date": "2013-02-04T21:30:43Z", + "id": 259797, + "issues": [ + { + "id": 10626477, + "labels": ["feature", "breaking changes"], + "number": 467, + "title": "0.13.1 Change pack package.json version location", + "url": "https://github.com/hapijs/hapi/issues/467" + } + ], + "number": 19, + "url": "https://github.com/hapijs/hapi/milestone/19", + "version": "0.13.1" + }, + { + "date": "2013-02-04T17:43:39Z", + "id": 246812, + "issues": [ + { + "id": 10598072, + "labels": ["feature"], + "number": 457, + "title": "Remove server creation log messages", + "url": "https://github.com/hapijs/hapi/issues/457" + }, + { + "id": 10598026, + "labels": ["feature"], + "number": 456, + "title": "Bypass cache logic when not using cache around handler", + "url": "https://github.com/hapijs/hapi/issues/456" + }, + { + "id": 10597980, + "labels": ["bug"], + "number": 455, + "title": "Reintroduce the removed request.reply.close() method", + "url": "https://github.com/hapijs/hapi/issues/455" + }, + { + "id": 10597955, + "labels": ["feature"], + "number": 454, + "title": "Support wildcard HTTP method routing", + "url": "https://github.com/hapijs/hapi/issues/454" + }, + { + "id": 10597837, + "labels": ["test"], + "number": 452, + "title": "Test server format.error config option", + "url": "https://github.com/hapijs/hapi/issues/452" + }, + { + "id": 10593088, + "labels": [], + "number": 450, + "title": "typo", + "url": "https://github.com/hapijs/hapi/pull/450" + }, + { + "id": 10583216, + "labels": [], + "number": 448, + "title": "Fixed typos", + "url": "https://github.com/hapijs/hapi/pull/448" + }, + { + "id": 10582001, + "labels": ["feature"], + "number": 447, + "title": "Replace config.ext with Server.ext()", + "url": "https://github.com/hapijs/hapi/issues/447" + }, + { + "id": 10577329, + "labels": ["feature"], + "number": 446, + "title": "Replace setNotFound with wildcard method support", + "url": "https://github.com/hapijs/hapi/issues/446" + }, + { + "id": 10577323, + "labels": ["feature"], + "number": 445, + "title": "Streamline Server API", + "url": "https://github.com/hapijs/hapi/issues/445" + }, + { + "id": 10577315, + "labels": ["feature"], + "number": 444, + "title": "Server Packs", + "url": "https://github.com/hapijs/hapi/issues/444" + }, + { + "id": 10577303, + "labels": ["documentation"], + "number": 443, + "title": "Add a link to find breaking changes by release", + "url": "https://github.com/hapijs/hapi/issues/443" + }, + { + "id": 10576584, + "labels": ["breaking changes"], + "number": 440, + "title": "0.13.0 Breaking Changes", + "url": "https://github.com/hapijs/hapi/issues/440" + } + ], + "number": 17, + "url": "https://github.com/hapijs/hapi/milestone/17", + "version": "0.13.0" + }, + { + "date": "2013-02-02T21:45:38Z", + "id": 240363, + "issues": [ + { + "id": 10577219, + "labels": ["breaking changes"], + "number": 442, + "title": "0.12.0 Breaking Changes", + "url": "https://github.com/hapijs/hapi/issues/442" + }, + { + "id": 10509088, + "labels": [], + "number": 435, + "title": "Prerequisite helper shortcut interface", + "url": "https://github.com/hapijs/hapi/pull/435" + }, + { + "id": 10504945, + "labels": [], + "number": 434, + "title": "Bound handler to request, bump to 0.12.0", + "url": "https://github.com/hapijs/hapi/pull/434" + }, + { + "id": 10469960, + "labels": ["bug"], + "number": 431, + "title": "Response validation fails on response errors", + "url": "https://github.com/hapijs/hapi/issues/431" + }, + { + "id": 10407521, + "labels": [], + "number": 427, + "title": "CORS cleanup and Monitor defaults", + "url": "https://github.com/hapijs/hapi/pull/427" + }, + { + "id": 10407494, + "labels": ["feature", "bug"], + "number": 426, + "title": "CORS off by default, using catch-all instead of synthetic route", + "url": "https://github.com/hapijs/hapi/issues/426" + }, + { + "id": 10406658, + "labels": [], + "number": 425, + "title": "Route sorting rewrite", + "url": "https://github.com/hapijs/hapi/pull/425" + }, + { + "id": 10368914, + "labels": ["feature"], + "number": 422, + "title": "Allow raw (direct) responses to bail if header fails", + "url": "https://github.com/hapijs/hapi/issues/422" + }, + { + "id": 10368808, + "labels": ["bug"], + "number": 421, + "title": "onPostRoute called before response is sent", + "url": "https://github.com/hapijs/hapi/issues/421" + }, + { + "id": 10336265, + "labels": [], + "number": 420, + "title": "Goodies", + "url": "https://github.com/hapijs/hapi/pull/420" + }, + { + "id": 10321965, + "labels": [], + "number": 416, + "title": "Auth cleanup", + "url": "https://github.com/hapijs/hapi/pull/416" + }, + { + "id": 10221236, + "labels": ["non issue"], + "number": 409, + "title": "Error: listen EADDRNOTAVAIL when starting hapi server with foreman", + "url": "https://github.com/hapijs/hapi/issues/409" + }, + { + "id": 10202709, + "labels": [], + "number": 407, + "title": "Adding support for basic auth password hashing", + "url": "https://github.com/hapijs/hapi/pull/407" + }, + { + "id": 10183708, + "labels": [], + "number": 406, + "title": "Update auth dependencies", + "url": "https://github.com/hapijs/hapi/pull/406" + }, + { + "id": 10173996, + "labels": ["feature"], + "number": 405, + "title": "For basic auth run password through hashPassword function first", + "url": "https://github.com/hapijs/hapi/issues/405" + }, + { + "id": 10132740, + "labels": [], + "number": 402, + "title": "Use fixed time password comparison", + "url": "https://github.com/hapijs/hapi/pull/402" + }, + { + "id": 10112190, + "labels": [], + "number": 401, + "title": "Enable more than one jade template file to be used in hapi.", + "url": "https://github.com/hapijs/hapi/pull/401" + }, + { + "id": 10044635, + "labels": ["feature"], + "number": 397, + "title": "Arrange routes in descending order of specificity", + "url": "https://github.com/hapijs/hapi/issues/397" + }, + { + "id": 10043273, + "labels": ["feature", "documentation"], + "number": 396, + "title": "Accept cache mode 'client+server' as 'server+client'", + "url": "https://github.com/hapijs/hapi/issues/396" + }, + { + "id": 9949170, + "labels": ["documentation"], + "number": 387, + "title": "Create contributing guidelines", + "url": "https://github.com/hapijs/hapi/issues/387" + }, + { + "id": 9907623, + "labels": ["documentation"], + "number": 377, + "title": "Document and add examples for the authentication interface", + "url": "https://github.com/hapijs/hapi/issues/377" + }, + { + "id": 9907311, + "labels": ["test"], + "number": 376, + "title": "Switch all tests that listen on a port to use automatically allocated port", + "url": "https://github.com/hapijs/hapi/issues/376" + }, + { + "id": 9871188, + "labels": ["test"], + "number": 374, + "title": "Test Content-Length vs. actual payload size mismatch behaviour", + "url": "https://github.com/hapijs/hapi/issues/374" + }, + { + "id": 9852723, + "labels": ["feature"], + "number": 373, + "title": "Add support for private cache-control flag", + "url": "https://github.com/hapijs/hapi/issues/373" + }, + { + "id": 9827077, + "labels": ["non issue"], + "number": 367, + "title": "Potential headers duplication when mixing sources due to case", + "url": "https://github.com/hapijs/hapi/issues/367" + }, + { + "id": 9817959, + "labels": [], + "number": 363, + "title": "Adding server + client timeout feature", + "url": "https://github.com/hapijs/hapi/pull/363" + }, + { + "id": 9810548, + "labels": ["feature"], + "number": 360, + "title": "Timeout server response if taking too long with 503 response", + "url": "https://github.com/hapijs/hapi/issues/360" + }, + { + "id": 9810375, + "labels": ["feature"], + "number": 359, + "title": "Timeout client connections taking too long and return 408", + "url": "https://github.com/hapijs/hapi/issues/359" + }, + { + "id": 9790755, + "labels": ["feature"], + "number": 358, + "title": "Support other view engines, including multiple engines per server", + "url": "https://github.com/hapijs/hapi/issues/358" + }, + { + "id": 9790716, + "labels": ["feature"], + "number": 357, + "title": "Make Views cache usage configurable (per Manager)", + "url": "https://github.com/hapijs/hapi/issues/357" + }, + { + "id": 9756419, + "labels": ["feature"], + "number": 347, + "title": "Signed and encrypted state support", + "url": "https://github.com/hapijs/hapi/issues/347" + }, + { + "id": 9226652, + "labels": ["bug"], + "number": 325, + "title": "Console output appears even when not configured", + "url": "https://github.com/hapijs/hapi/issues/325" + }, + { + "id": 8993987, + "labels": ["feature"], + "number": 307, + "title": "Support multiple authentication strategies per route with preferences", + "url": "https://github.com/hapijs/hapi/issues/307" + }, + { + "id": 8380854, + "labels": ["test"], + "number": 239, + "title": "Test regular and stream payload transmission while request closes", + "url": "https://github.com/hapijs/hapi/issues/239" + } + ], + "number": 14, + "url": "https://github.com/hapijs/hapi/milestone/14", + "version": "0.12.0" + }, + { + "date": "2013-01-12T06:45:16Z", + "id": 241941, + "issues": [ + { + "id": 9832971, + "labels": ["feature"], + "number": 370, + "title": "Support 'Access-Control-Allow-Credentials'", + "url": "https://github.com/hapijs/hapi/issues/370" + } + ], + "number": 16, + "url": "https://github.com/hapijs/hapi/milestone/16", + "version": "0.11.2" + }, + { + "date": "2013-01-10T03:08:40Z", + "id": 241853, + "issues": [ + { + "id": 9827017, + "labels": ["bug"], + "number": 366, + "title": "Stream response not calling Headers.cors, location, or cache", + "url": "https://github.com/hapijs/hapi/issues/366" + }, + { + "id": 9827006, + "labels": ["bug"], + "number": 365, + "title": "Stream response always passing proxy headers through", + "url": "https://github.com/hapijs/hapi/issues/365" + }, + { + "id": 9826996, + "labels": ["bug"], + "number": 364, + "title": "Proxy handler doesn't set default value for passThrough settings", + "url": "https://github.com/hapijs/hapi/issues/364" + } + ], + "number": 15, + "url": "https://github.com/hapijs/hapi/milestone/15", + "version": "0.11.1" + }, + { + "date": "2013-01-08T16:28:19Z", + "id": 231334, + "issues": [ + { + "id": 9022795, + "labels": ["feature"], + "number": 310, + "title": "Cross-platform monitor", + "url": "https://github.com/hapijs/hapi/issues/310" + }, + { + "id": 8460774, + "labels": ["feature"], + "number": 251, + "title": "Support Content-Disposition header in File response", + "url": "https://github.com/hapijs/hapi/issues/251" + }, + { + "id": 8381270, + "labels": ["feature"], + "number": 242, + "title": "Cookies support", + "url": "https://github.com/hapijs/hapi/issues/242" + }, + { + "id": 8336789, + "labels": ["feature"], + "number": 235, + "title": "View response", + "url": "https://github.com/hapijs/hapi/issues/235" + }, + { + "id": 7486591, + "labels": ["feature"], + "number": 169, + "title": "Add response validation settings", + "url": "https://github.com/hapijs/hapi/issues/169" + } + ], + "number": 13, + "url": "https://github.com/hapijs/hapi/milestone/13", + "version": "0.11.0" + }, + { + "date": "2012-12-18T00:28:34Z", + "id": 215150, + "issues": [ + { + "id": 9344212, + "labels": [], + "number": 329, + "title": "Add redirection response", + "url": "https://github.com/hapijs/hapi/pull/329" + }, + { + "id": 9337006, + "labels": [], + "number": 326, + "title": "Adding support for hapi-log", + "url": "https://github.com/hapijs/hapi/pull/326" + }, + { + "id": 9109322, + "labels": [], + "number": 322, + "title": "Docs handler refactor", + "url": "https://github.com/hapijs/hapi/pull/322" + }, + { + "id": 9098340, + "labels": ["feature", "bug"], + "number": 319, + "title": "Doc configuration should let you set the auth mode", + "url": "https://github.com/hapijs/hapi/issues/319" + }, + { + "id": 9063207, + "labels": [], + "number": 314, + "title": "Multiple auth schemes", + "url": "https://github.com/hapijs/hapi/pull/314" + }, + { + "id": 8996009, + "labels": ["test"], + "number": 309, + "title": "Bring monitor/* to 100% test coverage", + "url": "https://github.com/hapijs/hapi/issues/309" + }, + { + "id": 8977589, + "labels": ["non issue"], + "number": 303, + "title": "Handle %-encoding of '/' in route and request paths", + "url": "https://github.com/hapijs/hapi/issues/303" + }, + { + "id": 8977567, + "labels": ["bug"], + "number": 302, + "title": "Consider object key name sizes in calculating object memory usage in memory cache", + "url": "https://github.com/hapijs/hapi/issues/302" + }, + { + "id": 8622590, + "labels": ["feature"], + "number": 270, + "title": "Multiple auth scheme support", + "url": "https://github.com/hapijs/hapi/issues/270" + }, + { + "id": 8460857, + "labels": [], + "number": 253, + "title": "Support redirection responses", + "url": "https://github.com/hapijs/hapi/issues/253" + } + ], + "number": 9, + "url": "https://github.com/hapijs/hapi/milestone/9", + "version": "0.10.0" + }, + { + "date": "2012-12-07T16:44:55Z", + "id": 225156, + "issues": [ + { + "id": 9081212, + "labels": [], + "number": 317, + "title": "Test helpers, mongo auth test", + "url": "https://github.com/hapijs/hapi/pull/317" + }, + { + "id": 9057571, + "labels": [], + "number": 312, + "title": "Misc cleanup", + "url": "https://github.com/hapijs/hapi/pull/312" + } + ], + "number": 12, + "url": "https://github.com/hapijs/hapi/milestone/12", + "version": "0.9.3" + }, + { + "date": "2012-12-04T17:09:06Z", + "id": 216264, + "issues": [ + { + "id": 8989869, + "labels": [], + "number": 305, + "title": "Hidden files can now optionally be served", + "url": "https://github.com/hapijs/hapi/pull/305" + }, + { + "id": 8969880, + "labels": [], + "number": 301, + "title": "Merge, payload tests", + "url": "https://github.com/hapijs/hapi/pull/301" + }, + { + "id": 8967377, + "labels": [], + "number": 299, + "title": "Fix issue with case-insensitive route conflic", + "url": "https://github.com/hapijs/hapi/pull/299" + }, + { + "id": 8966903, + "labels": [], + "number": 298, + "title": "Prevent use of encoded non-reserved characters in path", + "url": "https://github.com/hapijs/hapi/pull/298" + }, + { + "id": 8963982, + "labels": [], + "number": 297, + "title": "Refactor request path normalization", + "url": "https://github.com/hapijs/hapi/pull/297" + }, + { + "id": 8963822, + "labels": ["bug"], + "number": 296, + "title": "Fix route path fingerprint when using cases-insensitive paths", + "url": "https://github.com/hapijs/hapi/issues/296" + }, + { + "id": 8959691, + "labels": ["bug"], + "number": 295, + "title": "Prevent directory from showing or serving hidden files (configurable)", + "url": "https://github.com/hapijs/hapi/issues/295" + }, + { + "id": 8926906, + "labels": [], + "number": 294, + "title": "Refactor responses, auth, payload", + "url": "https://github.com/hapijs/hapi/pull/294" + }, + { + "id": 8926876, + "labels": ["bug"], + "number": 293, + "title": "Fix multipart parsing", + "url": "https://github.com/hapijs/hapi/issues/293" + }, + { + "id": 8847533, + "labels": ["documentation"], + "number": 290, + "title": "Improve batch example to include a request", + "url": "https://github.com/hapijs/hapi/issues/290" + }, + { + "id": 8833994, + "labels": [], + "number": 289, + "title": "Add a unique request id for each incoming request", + "url": "https://github.com/hapijs/hapi/issues/289" + }, + { + "id": 8820322, + "labels": ["bug"], + "number": 287, + "title": "Forbid using %encoded in route path of unreserved characters", + "url": "https://github.com/hapijs/hapi/issues/287" + }, + { + "id": 8646639, + "labels": ["feature"], + "number": 274, + "title": "Add Hawk authentication support", + "url": "https://github.com/hapijs/hapi/issues/274" + }, + { + "id": 8622923, + "labels": ["bug"], + "number": 272, + "title": "Normalize %-encoded paths to match incoming requests", + "url": "https://github.com/hapijs/hapi/issues/272" + }, + { + "id": 8622911, + "labels": ["feature"], + "number": 271, + "title": "Strict cache mode", + "url": "https://github.com/hapijs/hapi/issues/271" + }, + { + "id": 8461126, + "labels": [], + "number": 254, + "title": "Cleanup handling of response headers / options", + "url": "https://github.com/hapijs/hapi/issues/254" + }, + { + "id": 8381181, + "labels": ["feature"], + "number": 241, + "title": "Add static files support", + "url": "https://github.com/hapijs/hapi/issues/241" + } + ], + "number": 10, + "url": "https://github.com/hapijs/hapi/milestone/10", + "version": "0.9.2" + }, + { + "date": "2012-11-26T21:06:22Z", + "id": 212534, + "issues": [ + { + "id": 8683439, + "labels": [], + "number": 277, + "title": "Changed matching rule of {param*}, Oz tests", + "url": "https://github.com/hapijs/hapi/pull/277" + }, + { + "id": 8667112, + "labels": [], + "number": 275, + "title": "Prevent basic routes collision", + "url": "https://github.com/hapijs/hapi/pull/275" + }, + { + "id": 8562306, + "labels": [], + "number": 268, + "title": "Tests, extension auth schemes", + "url": "https://github.com/hapijs/hapi/pull/268" + }, + { + "id": 8515879, + "labels": ["documentation"], + "number": 265, + "title": "Document new path option {param*n}", + "url": "https://github.com/hapijs/hapi/issues/265" + }, + { + "id": 8514263, + "labels": ["test"], + "number": 264, + "title": "Bring all individual file test coverage to over 90%", + "url": "https://github.com/hapijs/hapi/issues/264" + }, + { + "id": 8514246, + "labels": ["test"], + "number": 263, + "title": "Add tests to /test/unit/route.js", + "url": "https://github.com/hapijs/hapi/issues/263" + }, + { + "id": 8514154, + "labels": [], + "number": 262, + "title": "Support /path/{param*} syntax", + "url": "https://github.com/hapijs/hapi/pull/262" + }, + { + "id": 8487843, + "labels": ["feature"], + "number": 260, + "title": "Extension auth schemes", + "url": "https://github.com/hapijs/hapi/issues/260" + }, + { + "id": 8482725, + "labels": [], + "number": 258, + "title": "Adding support for etag and last-modified headers", + "url": "https://github.com/hapijs/hapi/pull/258" + }, + { + "id": 8481013, + "labels": ["bug"], + "number": 256, + "title": "Don't cache responses other than 200", + "url": "https://github.com/hapijs/hapi/issues/256" + }, + { + "id": 8479480, + "labels": [], + "number": 255, + "title": "Adding support for gzip responses", + "url": "https://github.com/hapijs/hapi/pull/255" + }, + { + "id": 8255183, + "labels": ["feature"], + "number": 232, + "title": "Support sending gzip responses", + "url": "https://github.com/hapijs/hapi/issues/232" + } + ], + "number": 8, + "url": "https://github.com/hapijs/hapi/milestone/8", + "version": "0.9.1" + }, + { + "date": "2012-11-19T18:59:32Z", + "id": 192937, + "issues": [ + { + "id": 8453819, + "labels": [], + "number": 250, + "title": "Direct response support", + "url": "https://github.com/hapijs/hapi/pull/250" + }, + { + "id": 8397828, + "labels": [], + "number": 245, + "title": "Basic auth", + "url": "https://github.com/hapijs/hapi/pull/245" + }, + { + "id": 8380862, + "labels": ["feature"], + "number": 240, + "title": "Basic auth scheme", + "url": "https://github.com/hapijs/hapi/issues/240" + }, + { + "id": 8380831, + "labels": ["documentation"], + "number": 238, + "title": "Document new request.reply interface", + "url": "https://github.com/hapijs/hapi/issues/238" + }, + { + "id": 8380779, + "labels": [], + "number": 237, + "title": "Response refactor", + "url": "https://github.com/hapijs/hapi/pull/237" + }, + { + "id": 8333581, + "labels": [], + "number": 234, + "title": "Oz", + "url": "https://github.com/hapijs/hapi/pull/234" + }, + { + "id": 8308501, + "labels": ["feature"], + "number": 233, + "title": "Partial/streaming responses", + "url": "https://github.com/hapijs/hapi/issues/233" + }, + { + "id": 8186075, + "labels": [], + "number": 229, + "title": "Initial 0.9.0", + "url": "https://github.com/hapijs/hapi/pull/229" + }, + { + "id": 7486546, + "labels": ["feature"], + "number": 168, + "title": "Move query and schema into a single validation config", + "url": "https://github.com/hapijs/hapi/issues/168" + }, + { + "id": 7474069, + "labels": ["feature"], + "number": 167, + "title": "Replace OAuth authentication with OZ", + "url": "https://github.com/hapijs/hapi/issues/167" + } + ], + "number": 3, + "url": "https://github.com/hapijs/hapi/milestone/3", + "version": "0.9.0" + }, + { + "date": "2012-11-07T20:40:57Z", + "id": 208070, + "issues": [ + { + "id": 8153615, + "labels": ["bug"], + "number": 222, + "title": "Fix bug where /docs crashes if no POST routes are defined ", + "url": "https://github.com/hapijs/hapi/pull/222" + }, + { + "id": 8153351, + "labels": [], + "number": 221, + "title": "Adding parsing of multipart form-data content-type", + "url": "https://github.com/hapijs/hapi/pull/221" + }, + { + "id": 8148055, + "labels": ["feature", "bug"], + "number": 219, + "title": "cannot bind ephemeral ports", + "url": "https://github.com/hapijs/hapi/issues/219" + }, + { + "id": 7769068, + "labels": ["feature"], + "number": 186, + "title": "Unsupported content-type: multipart/form-data", + "url": "https://github.com/hapijs/hapi/issues/186" + } + ], + "number": 7, + "url": "https://github.com/hapijs/hapi/milestone/7", + "version": "0.8.4" + }, + { + "date": "2012-11-05T22:45:31Z", + "id": 205623, + "issues": [ + { + "id": 8066228, + "labels": [], + "number": 212, + "title": "Adding proxy tests and doing a little refactoring", + "url": "https://github.com/hapijs/hapi/pull/212" + }, + { + "id": 8052106, + "labels": [], + "number": 211, + "title": "Cache tests, Fix response processing header order", + "url": "https://github.com/hapijs/hapi/pull/211" + }, + { + "id": 7908952, + "labels": ["documentation"], + "number": 201, + "title": "Document proxy handler interface", + "url": "https://github.com/hapijs/hapi/issues/201" + }, + { + "id": 7735593, + "labels": ["feature"], + "number": 185, + "title": "Turn cache memory strategy into a useful feature", + "url": "https://github.com/hapijs/hapi/issues/185" + } + ], + "number": 6, + "url": "https://github.com/hapijs/hapi/milestone/6", + "version": "0.8.3" + }, + { + "date": "2012-11-01T22:24:34Z", + "id": 204888, + "issues": [ + { + "id": 8045423, + "labels": [], + "number": 210, + "title": "0.8.2", + "url": "https://github.com/hapijs/hapi/pull/210" + }, + { + "id": 8034999, + "labels": [], + "number": 209, + "title": "Tests", + "url": "https://github.com/hapijs/hapi/pull/209" + }, + { + "id": 8032316, + "labels": [], + "number": 207, + "title": "Error refactor, custom error support (passThrough)", + "url": "https://github.com/hapijs/hapi/pull/207" + }, + { + "id": 8016106, + "labels": [], + "number": 206, + "title": "Fixing issue with error responses being cached + test", + "url": "https://github.com/hapijs/hapi/pull/206" + } + ], + "number": 5, + "url": "https://github.com/hapijs/hapi/milestone/5", + "version": "0.8.2" + }, + { + "date": "2012-10-31T18:42:30Z", + "id": 202404, + "issues": [ + { + "id": 8011341, + "labels": [], + "number": 204, + "title": "Add postResponse method to proxy", + "url": "https://github.com/hapijs/hapi/pull/204" + }, + { + "id": 7908258, + "labels": [], + "number": 200, + "title": "Fix tls config settings", + "url": "https://github.com/hapijs/hapi/pull/200" + }, + { + "id": 7839206, + "labels": ["bug"], + "number": 191, + "title": "Pass all TLS options to createServer", + "url": "https://github.com/hapijs/hapi/issues/191" + } + ], + "number": 4, + "url": "https://github.com/hapijs/hapi/milestone/4", + "version": "0.8.1" + }, + { + "date": "2012-10-27T00:24:49Z", + "id": 192936, + "issues": [ + { + "id": 7897715, + "labels": ["feature"], + "number": 193, + "title": "Support for gzip'd payloads", + "url": "https://github.com/hapijs/hapi/issues/193" + }, + { + "id": 7727527, + "labels": [], + "number": 183, + "title": "Cache segment validation", + "url": "https://github.com/hapijs/hapi/pull/183" + }, + { + "id": 7584601, + "labels": ["test"], + "number": 172, + "title": "Check if Redis and MongoDB are ready before running tests", + "url": "https://github.com/hapijs/hapi/issues/172" + }, + { + "id": 7473975, + "labels": ["feature"], + "number": 165, + "title": "Add route response validation to endpoint documentation", + "url": "https://github.com/hapijs/hapi/issues/165" + }, + { + "id": 7470363, + "labels": ["feature"], + "number": 164, + "title": "Server helpers, initial response validation, Mongo support", + "url": "https://github.com/hapijs/hapi/pull/164" + } + ], + "number": 2, + "url": "https://github.com/hapijs/hapi/milestone/2", + "version": "0.8.0" + }, + { + "date": "2012-08-31T20:51:36Z", + "id": 168468, + "issues": [ + { + "id": 6588577, + "labels": [], + "number": 102, + "title": "v0.6.0 merge", + "url": "https://github.com/hapijs/hapi/pull/102" + }, + { + "id": 6588234, + "labels": [], + "number": 101, + "title": "modified new validation fns to use Utils.assert", + "url": "https://github.com/hapijs/hapi/pull/101" + }, + { + "id": 6587988, + "labels": [], + "number": 100, + "title": "New Query Validation Fns Added", + "url": "https://github.com/hapijs/hapi/pull/100" + }, + { + "id": 6586587, + "labels": [], + "number": 99, + "title": "Simplified request log interface", + "url": "https://github.com/hapijs/hapi/pull/99" + }, + { + "id": 6531360, + "labels": [], + "number": 96, + "title": "Small utils", + "url": "https://github.com/hapijs/hapi/pull/96" + }, + { + "id": 6370707, + "labels": [], + "number": 94, + "title": "debug interface, log interface", + "url": "https://github.com/hapijs/hapi/pull/94" + }, + { + "id": 6370459, + "labels": [], + "number": 93, + "title": "fix error on subsequent url accesses for queryval", + "url": "https://github.com/hapijs/hapi/pull/93" + }, + { + "id": 6370283, + "labels": [], + "number": 92, + "title": "Fix example", + "url": "https://github.com/hapijs/hapi/pull/92" + }, + { + "id": 6367866, + "labels": [], + "number": 91, + "title": "QueryValidation fixes, add default behavior for unspecified params, added small tests", + "url": "https://github.com/hapijs/hapi/pull/91" + }, + { + "id": 5746131, + "labels": [], + "number": 63, + "title": "Added in SSL cert passphrase to https server creation from settings.", + "url": "https://github.com/hapijs/hapi/pull/63" + } + ], + "number": 1, + "url": "https://github.com/hapijs/hapi/milestone/1", + "version": "0.6.0" + } ] diff --git a/generated/modules/hapi/info.json b/generated/modules/hapi/info.json index 649f552b..43ce1a4d 100644 --- a/generated/modules/hapi/info.json +++ b/generated/modules/hapi/info.json @@ -1,28 +1,28 @@ { - "api": true, - "forks": 1346, - "isPlugin": false, - "link": "https://github.com/hapijs/hapi", - "name": "hapi", - "package": "@hapi/hapi", - "slogan": "The Simple, Secure Framework Developers Trust", - "sloganHtml": "The Simple, Secure Framework Developers Trust", - "stars": 14782, - "updated": "2026-04-02T08:28:56Z", - "versions": [ - { - "branch": "v20.3.0", - "license": "BSD", - "name": "20.3.0", - "node": ">= 16" - }, - { - "branch": "v21.4.8", - "license": "BSD", - "name": "21.4.8", - "node": ">= 16" - } - ], - "versionsArray": ["21.4.8", "20.3.0"], - "latestVersion": "21.x.x" + "api": true, + "forks": 1358, + "isPlugin": false, + "latestVersion": "21.x.x", + "link": "https://github.com/hapijs/hapi", + "name": "hapi", + "package": "@hapi/hapi", + "slogan": "The Simple, Secure Framework Developers Trust", + "sloganHtml": "The Simple, Secure Framework Developers Trust", + "stars": 14789, + "updated": "2026-05-06T10:38:07Z", + "versions": [ + { + "branch": "v20.3.0", + "license": "BSD", + "name": "20.3.0", + "node": ">= 16" + }, + { + "branch": "v21.4.9", + "license": "BSD", + "name": "21.4.9", + "node": ">= 16" + } + ], + "versionsArray": ["21.4.9", "20.3.0"] } diff --git a/generated/modules/heavy/changelog.json b/generated/modules/heavy/changelog.json index 384c37e7..84bfcc30 100644 --- a/generated/modules/heavy/changelog.json +++ b/generated/modules/heavy/changelog.json @@ -1,398 +1,398 @@ [ - { - "date": "2023-02-11T19:36:41Z", - "id": 7955940, - "issues": [ - { - "id": 1551775535, - "labels": [], - "number": 51, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/heavy/pull/51" - } - ], - "number": 26, - "url": "https://github.com/hapijs/heavy/milestone/26", - "version": "8.0.1" - }, - { - "date": "2023-02-11T19:36:39Z", - "id": 7955939, - "issues": [ - { - "id": 1228995560, - "labels": ["breaking changes", "dependency"], - "number": 50, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/heavy/pull/50" - }, - { - "id": 1011706759, - "labels": ["feature"], - "number": 48, - "title": "Add event loop utilization support", - "url": "https://github.com/hapijs/heavy/pull/48" - } - ], - "number": 25, - "url": "https://github.com/hapijs/heavy/milestone/25", - "version": "8.0.0" - }, - { - "date": "2021-09-24T13:10:43Z", - "id": 4973367, - "issues": [ - { - "id": 709592334, - "labels": [], - "number": 44, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/heavy/pull/44" - } - ], - "number": 23, - "url": "https://github.com/hapijs/heavy/milestone/23", - "version": "7.0.1" - }, - { - "date": "2020-01-05T04:47:21Z", - "id": 4973366, - "issues": [ - { - "id": 545368968, - "labels": ["breaking changes", "dependency"], - "number": 36, - "title": "Only node 12", - "url": "https://github.com/hapijs/heavy/issues/36" - } - ], - "number": 22, - "url": "https://github.com/hapijs/heavy/milestone/22", - "version": "7.0.0" - }, - { - "date": "2019-09-12T20:46:24Z", - "id": 4574357, - "issues": [ - { - "id": 493018502, - "labels": ["dependency"], - "number": 32, - "title": "Update joi", - "url": "https://github.com/hapijs/heavy/issues/32" - } - ], - "number": 20, - "url": "https://github.com/hapijs/heavy/milestone/20", - "version": "6.2.2" - }, - { - "date": "2019-08-15T06:53:01Z", - "id": 4192132, - "issues": [ - { - "id": 480906154, - "labels": ["dependency"], - "number": 31, - "title": "Update deps", - "url": "https://github.com/hapijs/heavy/issues/31" - } - ], - "number": 19, - "url": "https://github.com/hapijs/heavy/milestone/19", - "version": "6.2.1" - }, - { - "date": "2019-04-02T05:31:29Z", - "id": 3792282, - "issues": [ - { - "id": 428030473, - "labels": ["dependency"], - "number": 29, - "title": "Change module namespace", - "url": "https://github.com/hapijs/heavy/issues/29" - } - ], - "number": 16, - "url": "https://github.com/hapijs/heavy/milestone/16", - "version": "6.2.0" - }, - { - "date": "2018-11-03T00:27:19Z", - "id": 3787572, - "issues": [ - { - "id": 377001844, - "labels": ["non issue"], + { + "date": "2023-02-11T19:36:41Z", + "id": 7955940, + "issues": [ + { + "id": 1551775535, + "labels": [], + "number": 51, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/heavy/pull/51" + } + ], "number": 26, - "title": "Remove engines", - "url": "https://github.com/hapijs/heavy/issues/26" - } - ], - "number": 15, - "url": "https://github.com/hapijs/heavy/milestone/15", - "version": "6.1.2" - }, - { - "date": "2018-11-01T07:59:30Z", - "id": 2990027, - "issues": [ - { - "id": 376291056, - "labels": ["dependency"], + "url": "https://github.com/hapijs/heavy/milestone/26", + "version": "8.0.1" + }, + { + "date": "2023-02-11T19:36:39Z", + "id": 7955939, + "issues": [ + { + "id": 1228995560, + "labels": ["breaking changes", "dependency"], + "number": 50, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/heavy/pull/50" + }, + { + "id": 1011706759, + "labels": ["feature"], + "number": 48, + "title": "Add event loop utilization support", + "url": "https://github.com/hapijs/heavy/pull/48" + } + ], "number": 25, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/heavy/issues/25" - } - ], - "number": 14, - "url": "https://github.com/hapijs/heavy/milestone/14", - "version": "6.1.1" - }, - { - "date": "2017-12-19T23:59:29Z", - "id": 2885291, - "issues": [ - { - "id": 283407725, - "labels": ["feature"], + "url": "https://github.com/hapijs/heavy/milestone/25", + "version": "8.0.0" + }, + { + "date": "2021-09-24T13:10:43Z", + "id": 4973367, + "issues": [ + { + "id": 709592334, + "labels": [], + "number": 44, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/heavy/pull/44" + } + ], "number": 23, - "title": "Allow unknown config keys", - "url": "https://github.com/hapijs/heavy/issues/23" - } - ], - "number": 13, - "url": "https://github.com/hapijs/heavy/milestone/13", - "version": "6.1.0" - }, - { - "date": "2017-11-03T07:43:26Z", - "id": 2856579, - "issues": [ - { - "id": 270898550, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/heavy/milestone/23", + "version": "7.0.1" + }, + { + "date": "2020-01-05T04:47:21Z", + "id": 4973366, + "issues": [ + { + "id": 545368968, + "labels": ["breaking changes", "dependency"], + "number": 36, + "title": "Only node 12", + "url": "https://github.com/hapijs/heavy/issues/36" + } + ], "number": 22, - "title": "Throw in check()", - "url": "https://github.com/hapijs/heavy/issues/22" - } - ], - "number": 12, - "url": "https://github.com/hapijs/heavy/milestone/12", - "version": "6.0.0" - }, - { - "date": "2017-10-22T08:27:20Z", - "id": 2795458, - "issues": [ - { - "id": 267446305, - "labels": ["dependency"], - "number": 21, - "title": "Update joi", - "url": "https://github.com/hapijs/heavy/issues/21" - } - ], - "number": 11, - "url": "https://github.com/hapijs/heavy/milestone/11", - "version": "5.0.2" - }, - { - "date": "2017-09-26T17:51:39Z", - "id": 2795457, - "issues": [ - { - "id": 260712779, - "labels": ["dependency"], + "url": "https://github.com/hapijs/heavy/milestone/22", + "version": "7.0.0" + }, + { + "date": "2019-09-12T20:46:24Z", + "id": 4574357, + "issues": [ + { + "id": 493018502, + "labels": ["dependency"], + "number": 32, + "title": "Update joi", + "url": "https://github.com/hapijs/heavy/issues/32" + } + ], "number": 20, - "title": "Update deps", - "url": "https://github.com/hapijs/heavy/issues/20" - } - ], - "number": 10, - "url": "https://github.com/hapijs/heavy/milestone/10", - "version": "5.0.1" - }, - { - "date": "2017-09-26T17:50:38Z", - "id": 2766916, - "issues": [ - { - "id": 257877158, - "labels": ["breaking changes"], - "number": 18, - "title": "Refactor for single connection", - "url": "https://github.com/hapijs/heavy/issues/18" - } - ], - "number": 9, - "url": "https://github.com/hapijs/heavy/milestone/9", - "version": "5.0.0" - }, - { - "date": "2019-03-25T00:06:30Z", - "id": 4167594, - "issues": [ - { - "id": 424676853, - "labels": ["lts"], - "number": 28, - "title": "Commercial version of v4 branch", - "url": "https://github.com/hapijs/heavy/issues/28" - } - ], - "number": 17, - "url": "https://github.com/hapijs/heavy/milestone/17", - "version": "4.1.0" - }, - { - "date": "2017-09-14T22:40:58Z", - "id": 2162645, - "issues": [ - { - "id": 231850040, - "labels": ["dependency"], + "url": "https://github.com/hapijs/heavy/milestone/20", + "version": "6.2.2" + }, + { + "date": "2019-08-15T06:53:01Z", + "id": 4192132, + "issues": [ + { + "id": 480906154, + "labels": ["dependency"], + "number": 31, + "title": "Update deps", + "url": "https://github.com/hapijs/heavy/issues/31" + } + ], + "number": 19, + "url": "https://github.com/hapijs/heavy/milestone/19", + "version": "6.2.1" + }, + { + "date": "2019-04-02T05:31:29Z", + "id": 3792282, + "issues": [ + { + "id": 428030473, + "labels": ["dependency"], + "number": 29, + "title": "Change module namespace", + "url": "https://github.com/hapijs/heavy/issues/29" + } + ], "number": 16, - "title": "Update deps.", - "url": "https://github.com/hapijs/heavy/issues/16" - } - ], - "number": 8, - "url": "https://github.com/hapijs/heavy/milestone/8", - "version": "4.0.4" - }, - { - "date": "2016-11-29T02:01:25Z", - "id": 1908035, - "issues": [ - { - "id": 192168269, - "labels": ["dependency"], + "url": "https://github.com/hapijs/heavy/milestone/16", + "version": "6.2.0" + }, + { + "date": "2018-11-03T00:27:19Z", + "id": 3787572, + "issues": [ + { + "id": 377001844, + "labels": ["non issue"], + "number": 26, + "title": "Remove engines", + "url": "https://github.com/hapijs/heavy/issues/26" + } + ], "number": 15, - "title": "Update deps", - "url": "https://github.com/hapijs/heavy/issues/15" - } - ], - "number": 7, - "url": "https://github.com/hapijs/heavy/milestone/7", - "version": "4.0.3" - }, - { - "date": "2016-07-27T19:53:58Z", - "id": 1750067, - "issues": [ - { - "id": 167941250, - "labels": ["dependency"], + "url": "https://github.com/hapijs/heavy/milestone/15", + "version": "6.1.2" + }, + { + "date": "2018-11-01T07:59:30Z", + "id": 2990027, + "issues": [ + { + "id": 376291056, + "labels": ["dependency"], + "number": 25, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/heavy/issues/25" + } + ], + "number": 14, + "url": "https://github.com/hapijs/heavy/milestone/14", + "version": "6.1.1" + }, + { + "date": "2017-12-19T23:59:29Z", + "id": 2885291, + "issues": [ + { + "id": 283407725, + "labels": ["feature"], + "number": 23, + "title": "Allow unknown config keys", + "url": "https://github.com/hapijs/heavy/issues/23" + } + ], "number": 13, - "title": "Update deps", - "url": "https://github.com/hapijs/heavy/issues/13" - } - ], - "number": 6, - "url": "https://github.com/hapijs/heavy/milestone/6", - "version": "4.0.2" - }, - { - "date": "2016-05-05T17:04:54Z", - "id": 1387902, - "issues": [ - { - "id": 152697089, - "labels": ["dependency"], + "url": "https://github.com/hapijs/heavy/milestone/13", + "version": "6.1.0" + }, + { + "date": "2017-11-03T07:43:26Z", + "id": 2856579, + "issues": [ + { + "id": 270898550, + "labels": ["breaking changes"], + "number": 22, + "title": "Throw in check()", + "url": "https://github.com/hapijs/heavy/issues/22" + } + ], + "number": 12, + "url": "https://github.com/hapijs/heavy/milestone/12", + "version": "6.0.0" + }, + { + "date": "2017-10-22T08:27:20Z", + "id": 2795458, + "issues": [ + { + "id": 267446305, + "labels": ["dependency"], + "number": 21, + "title": "Update joi", + "url": "https://github.com/hapijs/heavy/issues/21" + } + ], "number": 11, - "title": "Update deps", - "url": "https://github.com/hapijs/heavy/pull/11" - } - ], - "number": 5, - "url": "https://github.com/hapijs/heavy/milestone/5", - "version": "4.0.1" - }, - { - "date": "2015-11-02T04:02:09Z", - "id": 1387901, - "issues": [ - { - "id": 114519942, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/heavy/milestone/11", + "version": "5.0.2" + }, + { + "date": "2017-09-26T17:51:39Z", + "id": 2795457, + "issues": [ + { + "id": 260712779, + "labels": ["dependency"], + "number": 20, + "title": "Update deps", + "url": "https://github.com/hapijs/heavy/issues/20" + } + ], "number": 10, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/heavy/issues/10" - } - ], - "number": 4, - "url": "https://github.com/hapijs/heavy/milestone/4", - "version": "4.0.0" - }, - { - "date": "2015-11-02T03:55:36Z", - "id": 898091, - "issues": [ - { - "id": 102354170, - "labels": ["documentation", "dependency"], + "url": "https://github.com/hapijs/heavy/milestone/10", + "version": "5.0.1" + }, + { + "date": "2017-09-26T17:50:38Z", + "id": 2766916, + "issues": [ + { + "id": 257877158, + "labels": ["breaking changes"], + "number": 18, + "title": "Refactor for single connection", + "url": "https://github.com/hapijs/heavy/issues/18" + } + ], + "number": 9, + "url": "https://github.com/hapijs/heavy/milestone/9", + "version": "5.0.0" + }, + { + "date": "2019-03-25T00:06:30Z", + "id": 4167594, + "issues": [ + { + "id": 424676853, + "labels": ["lts"], + "number": 28, + "title": "Commercial version of v4 branch", + "url": "https://github.com/hapijs/heavy/issues/28" + } + ], + "number": 17, + "url": "https://github.com/hapijs/heavy/milestone/17", + "version": "4.1.0" + }, + { + "date": "2017-09-14T22:40:58Z", + "id": 2162645, + "issues": [ + { + "id": 231850040, + "labels": ["dependency"], + "number": 16, + "title": "Update deps.", + "url": "https://github.com/hapijs/heavy/issues/16" + } + ], "number": 8, - "title": "Closes #6, Closes #7", - "url": "https://github.com/hapijs/heavy/pull/8" - }, - { - "id": 102353979, - "labels": ["documentation"], + "url": "https://github.com/hapijs/heavy/milestone/8", + "version": "4.0.4" + }, + { + "date": "2016-11-29T02:01:25Z", + "id": 1908035, + "issues": [ + { + "id": 192168269, + "labels": ["dependency"], + "number": 15, + "title": "Update deps", + "url": "https://github.com/hapijs/heavy/issues/15" + } + ], "number": 7, - "title": "bring heavy up to date with standards", - "url": "https://github.com/hapijs/heavy/issues/7" - }, - { - "id": 102353903, - "labels": ["dependency"], + "url": "https://github.com/hapijs/heavy/milestone/7", + "version": "4.0.3" + }, + { + "date": "2016-07-27T19:53:58Z", + "id": 1750067, + "issues": [ + { + "id": 167941250, + "labels": ["dependency"], + "number": 13, + "title": "Update deps", + "url": "https://github.com/hapijs/heavy/issues/13" + } + ], "number": 6, - "title": "upgrade joi", - "url": "https://github.com/hapijs/heavy/issues/6" - }, - { - "id": 58947523, - "labels": ["test"], + "url": "https://github.com/hapijs/heavy/milestone/6", + "version": "4.0.2" + }, + { + "date": "2016-05-05T17:04:54Z", + "id": 1387902, + "issues": [ + { + "id": 152697089, + "labels": ["dependency"], + "number": 11, + "title": "Update deps", + "url": "https://github.com/hapijs/heavy/pull/11" + } + ], + "number": 5, + "url": "https://github.com/hapijs/heavy/milestone/5", + "version": "4.0.1" + }, + { + "date": "2015-11-02T04:02:09Z", + "id": 1387901, + "issues": [ + { + "id": 114519942, + "labels": ["breaking changes"], + "number": 10, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/heavy/issues/10" + } + ], "number": 4, - "title": "Update .travis.yml", - "url": "https://github.com/hapijs/heavy/pull/4" - } - ], - "number": 3, - "url": "https://github.com/hapijs/heavy/milestone/3", - "version": "3.0.1" - }, - { - "date": "2014-12-09T22:49:22Z", - "id": 814651, - "issues": [ - { - "id": 49594864, - "labels": ["feature"], - "number": 2, - "title": "Update check() to return reason why", - "url": "https://github.com/hapijs/heavy/issues/2" - } - ], - "number": 1, - "url": "https://github.com/hapijs/heavy/milestone/1", - "version": "3.0.0" - }, - { - "date": "2014-10-31T02:18:38Z", - "id": 847539, - "issues": [ - { - "id": 47352621, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/heavy/milestone/4", + "version": "4.0.0" + }, + { + "date": "2015-11-02T03:55:36Z", + "id": 898091, + "issues": [ + { + "id": 102354170, + "labels": ["documentation", "dependency"], + "number": 8, + "title": "Closes #6, Closes #7", + "url": "https://github.com/hapijs/heavy/pull/8" + }, + { + "id": 102353979, + "labels": ["documentation"], + "number": 7, + "title": "bring heavy up to date with standards", + "url": "https://github.com/hapijs/heavy/issues/7" + }, + { + "id": 102353903, + "labels": ["dependency"], + "number": 6, + "title": "upgrade joi", + "url": "https://github.com/hapijs/heavy/issues/6" + }, + { + "id": 58947523, + "labels": ["test"], + "number": 4, + "title": "Update .travis.yml", + "url": "https://github.com/hapijs/heavy/pull/4" + } + ], + "number": 3, + "url": "https://github.com/hapijs/heavy/milestone/3", + "version": "3.0.1" + }, + { + "date": "2014-12-09T22:49:22Z", + "id": 814651, + "issues": [ + { + "id": 49594864, + "labels": ["feature"], + "number": 2, + "title": "Update check() to return reason why", + "url": "https://github.com/hapijs/heavy/issues/2" + } + ], "number": 1, - "title": "Split sampling from policy", - "url": "https://github.com/hapijs/heavy/issues/1" - } - ], - "number": 2, - "url": "https://github.com/hapijs/heavy/milestone/2", - "version": "2.0.0" - } + "url": "https://github.com/hapijs/heavy/milestone/1", + "version": "3.0.0" + }, + { + "date": "2014-10-31T02:18:38Z", + "id": 847539, + "issues": [ + { + "id": 47352621, + "labels": ["breaking changes"], + "number": 1, + "title": "Split sampling from policy", + "url": "https://github.com/hapijs/heavy/issues/1" + } + ], + "number": 2, + "url": "https://github.com/hapijs/heavy/milestone/2", + "version": "2.0.0" + } ] diff --git a/generated/modules/heavy/info.json b/generated/modules/heavy/info.json index 0119cb5f..cc62c152 100644 --- a/generated/modules/heavy/info.json +++ b/generated/modules/heavy/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 15, - "isPlugin": false, - "link": "https://github.com/hapijs/heavy", - "name": "heavy", - "package": "@hapi/heavy", - "slogan": "Measure process load.", - "sloganHtml": "Measure process load.", - "stars": 75, - "updated": "2024-10-23T14:51:56Z", - "versions": [ - { - "branch": "v8.0.1", - "license": "BSD", - "name": "8.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["8.0.1"], - "latestVersion": "8.x.x" + "api": true, + "forks": 15, + "isPlugin": false, + "latestVersion": "8.x.x", + "link": "https://github.com/hapijs/heavy", + "name": "heavy", + "package": "@hapi/heavy", + "slogan": "Measure process load.", + "sloganHtml": "Measure process load.", + "stars": 75, + "updated": "2024-10-23T14:51:56Z", + "versions": [ + { + "branch": "v8.0.1", + "license": "BSD", + "name": "8.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["8.0.1"] } diff --git a/generated/modules/hoek/changelog.json b/generated/modules/hoek/changelog.json index 2508b724..ebc2cd33 100644 --- a/generated/modules/hoek/changelog.json +++ b/generated/modules/hoek/changelog.json @@ -1,2166 +1,2166 @@ [ - { - "date": "2024-11-14T15:55:17Z", - "id": 11894370, - "issues": [ - { - "id": 2659253191, - "labels": ["bug"], - "number": 402, - "title": "Fix cloning Util.inherit() subclassed errors. Backports #401", - "url": "https://github.com/hapijs/hoek/pull/402" - }, - { - "id": 2659170673, - "labels": ["bug"], - "number": 401, - "title": "Fix cloning Util.inherit() subclassed errors", - "url": "https://github.com/hapijs/hoek/pull/401" - }, - { - "id": 2658187297, - "labels": ["bug"], - "number": 400, - "title": "Hoek.clone drop an error with axios errors in version @hapi/hoek 11.0.6+", - "url": "https://github.com/hapijs/hoek/issues/400" - } - ], - "number": 108, - "url": "https://github.com/hapijs/hoek/milestone/108", - "version": "11.0.7" - }, - { - "date": "2024-10-24T22:05:42Z", - "id": 11793175, - "issues": [ - { - "id": 2612070373, - "labels": ["bug"], - "number": 399, - "title": "Fix Error clone() when structuredClone uses bad prototype", - "url": "https://github.com/hapijs/hoek/pull/399" - } - ], - "number": 107, - "url": "https://github.com/hapijs/hoek/milestone/107", - "version": "11.0.6" - }, - { - "date": "2024-10-24T22:03:04Z", - "id": 10268890, - "issues": [ - { - "id": 2611018014, - "labels": ["bug"], - "number": 398, - "title": "fix: missing stack starting from node 21+", - "url": "https://github.com/hapijs/hoek/pull/398" - }, - { - "id": 2456135918, - "labels": ["documentation", "types"], - "number": 396, - "title": "Fix default values for `merge.Options` interface", - "url": "https://github.com/hapijs/hoek/pull/396" - }, - { - "id": 2456103097, - "labels": ["types"], - "number": 395, - "title": "Incorrect default documented for `mergeArrays` option", - "url": "https://github.com/hapijs/hoek/issues/395" - } - ], - "number": 106, - "url": "https://github.com/hapijs/hoek/milestone/106", - "version": "11.0.5" - }, - { - "date": "2023-12-05T10:49:28Z", - "id": 10267490, - "issues": [ - { - "id": 1905653321, - "labels": ["bug", "types"], - "number": 389, - "title": "fix: provide reference to TS types for export map", - "url": "https://github.com/hapijs/hoek/pull/389" - }, - { - "id": 1564951064, - "labels": ["bug", "types"], - "number": 385, - "title": "Missing types in typescript with module resolution nodenext", - "url": "https://github.com/hapijs/hoek/issues/385" - } - ], - "number": 105, - "url": "https://github.com/hapijs/hoek/milestone/105", - "version": "11.0.4" - }, - { - "date": "2023-12-05T08:08:59Z", - "id": 10267473, - "issues": [ - { - "id": 2014158006, - "labels": ["bug"], - "number": 392, - "title": "Support the URL type", - "url": "https://github.com/hapijs/hoek/pull/392" - } - ], - "number": 104, - "url": "https://github.com/hapijs/hoek/milestone/104", - "version": "11.0.3" - }, - { - "date": "2023-02-18T18:52:59Z", - "id": 8763263, - "issues": [ - { - "id": 1496267911, - "labels": ["types"], - "number": 384, - "title": "chore: add individual module types", - "url": "https://github.com/hapijs/hoek/pull/384" - } - ], - "number": 102, - "url": "https://github.com/hapijs/hoek/milestone/102", - "version": "11.0.2" - }, - { - "date": "2022-12-13T19:33:59Z", - "id": 8759223, - "issues": [ - { - "id": 1241558819, - "labels": ["feature", "breaking changes"], - "number": 380, - "title": "Explicitly export modules", - "url": "https://github.com/hapijs/hoek/pull/380" - } - ], - "number": 101, - "url": "https://github.com/hapijs/hoek/milestone/101", - "version": "11.0.1" - }, - { - "date": "2022-12-13T08:05:19Z", - "id": 8755410, - "issues": [ - { - "id": 1309307120, - "labels": ["feature", "breaking changes", "types"], - "number": 382, - "title": "Refactor AssertError", - "url": "https://github.com/hapijs/hoek/pull/382" - } - ], - "number": 100, - "url": "https://github.com/hapijs/hoek/milestone/100", - "version": "11.0.0" - }, - { - "date": "2022-07-23T18:31:42Z", - "id": 7932233, - "issues": [ - { - "id": 1315584562, - "labels": ["bug"], - "number": 383, - "title": "Updates assert() type to declare condition to be true", - "url": "https://github.com/hapijs/hoek/pull/383" - }, - { - "id": 1241430181, - "labels": ["dependency"], - "number": 379, - "title": "Fix version range", - "url": "https://github.com/hapijs/hoek/pull/379" - } - ], - "number": 98, - "url": "https://github.com/hapijs/hoek/milestone/98", - "version": "10.0.1" - }, - { - "date": "2022-05-01T18:02:50Z", - "id": 7931449, - "issues": [ - { - "id": 1222020915, - "labels": ["breaking changes", "dependency"], - "number": 377, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/hoek/pull/377" - } - ], - "number": 97, - "url": "https://github.com/hapijs/hoek/milestone/97", - "version": "10.0.0" - }, - { - "date": "2022-05-01T18:00:57Z", - "id": 7905503, - "issues": [ - { - "id": 1034925394, - "labels": ["bug", "feature"], - "number": 373, - "title": "Handle very long timeouts in Hoek.wait()", - "url": "https://github.com/hapijs/hoek/pull/373" - }, - { - "id": 1029471849, - "labels": [], - "number": 372, - "title": "Cleanup", - "url": "https://github.com/hapijs/hoek/pull/372" - } - ], - "number": 96, - "url": "https://github.com/hapijs/hoek/milestone/96", - "version": "9.3.0" - }, - { - "date": "2021-09-27T20:57:03Z", - "id": 6671369, - "issues": [ - { - "id": 1008570332, - "labels": ["bug", "security"], - "number": 371, - "title": "Fix reachTemplate() regex timing", - "url": "https://github.com/hapijs/hoek/pull/371" - } - ], - "number": 94, - "url": "https://github.com/hapijs/hoek/milestone/94", - "version": "9.2.1" - }, - { - "date": "2021-04-17T21:10:59Z", - "id": 6671368, - "issues": [ - { - "id": 855917996, - "labels": ["feature"], - "number": 368, - "title": "Support named imports when using node esm loader", - "url": "https://github.com/hapijs/hoek/pull/368" - } - ], - "number": 93, - "url": "https://github.com/hapijs/hoek/milestone/93", - "version": "9.2.0" - }, - { - "date": "2020-12-27T17:02:12Z", - "id": 5834424, - "issues": [ - { - "id": 771970242, - "labels": [], - "number": 367, - "title": "applyToDefaults: respect nullOverride when shallow is used", - "url": "https://github.com/hapijs/hoek/pull/367" - }, - { - "id": 760414485, - "labels": ["bug"], - "number": 365, - "title": "Fix applyToDefaults to work better with non-object source values", - "url": "https://github.com/hapijs/hoek/pull/365" - }, - { - "id": 709592786, - "labels": [], - "number": 361, - "title": "upgrade lab to v24 and devDependency of typescript", - "url": "https://github.com/hapijs/hoek/pull/361" - } - ], - "number": 92, - "url": "https://github.com/hapijs/hoek/milestone/92", - "version": "9.1.1" - }, - { - "date": "2020-09-02T01:38:07Z", - "id": 5193606, - "issues": [ - { - "id": 684627117, - "labels": ["bug"], - "number": 360, - "title": "Always call base class methods to inspect Map and Set", - "url": "https://github.com/hapijs/hoek/pull/360" - }, - { - "id": 683642132, - "labels": ["feature"], - "number": 359, - "title": "Add returnValue option to wait()", - "url": "https://github.com/hapijs/hoek/pull/359" - }, - { - "id": 675686328, - "labels": ["bug"], - "number": 357, - "title": "deepEqual() can fail on subclassed map", - "url": "https://github.com/hapijs/hoek/issues/357" - } - ], - "number": 91, - "url": "https://github.com/hapijs/hoek/milestone/91", - "version": "9.1.0" - }, - { - "date": "2020-03-12T05:11:19Z", - "id": 5083634, - "issues": [ - { - "id": 558367826, - "labels": ["bug"], - "number": 351, - "title": "Fix 'compare is not a function'", - "url": "https://github.com/hapijs/hoek/pull/351" - } - ], - "number": 90, - "url": "https://github.com/hapijs/hoek/milestone/90", - "version": "9.0.4" - }, - { - "date": "2020-02-08T06:59:41Z", - "id": 4992142, - "issues": [ - { - "id": 561978604, - "labels": ["bug", "security"], - "number": 352, - "title": "Prevent prototype poisoning in clone()", - "url": "https://github.com/hapijs/hoek/issues/352" - } - ], - "number": 88, - "url": "https://github.com/hapijs/hoek/milestone/88", - "version": "9.0.3" - }, - { - "date": "2020-01-09T18:26:01Z", - "id": 4990067, - "issues": [ - { - "id": 547644435, - "labels": ["bug"], - "number": 350, - "title": "Clone fails to copy override array prototype", - "url": "https://github.com/hapijs/hoek/issues/350" - } - ], - "number": 87, - "url": "https://github.com/hapijs/hoek/milestone/87", - "version": "9.0.2" - }, - { - "date": "2020-01-09T06:17:18Z", - "id": 4972030, - "issues": [ - { - "id": 547272812, - "labels": ["bug"], - "number": 349, - "title": "Fix shallow defaults clone", - "url": "https://github.com/hapijs/hoek/issues/349" - } - ], - "number": 86, - "url": "https://github.com/hapijs/hoek/milestone/86", - "version": "9.0.1" - }, - { - "date": "2020-01-03T23:06:49Z", - "id": 4972029, - "issues": [ - { - "id": 545196311, - "labels": ["breaking changes", "dependency"], - "number": 347, - "title": "Support only node 12", - "url": "https://github.com/hapijs/hoek/issues/347" - }, - { - "id": 508385597, - "labels": ["feature", "breaking changes"], - "number": 343, - "title": "Safer and faster shallow handling", - "url": "https://github.com/hapijs/hoek/pull/343" - } - ], - "number": 85, - "url": "https://github.com/hapijs/hoek/milestone/85", - "version": "9.0.0" - }, - { - "date": "2020-02-08T06:59:43Z", - "id": 4800392, - "issues": [ - { - "id": 561979858, - "labels": ["bug", "security", "lts"], - "number": 353, - "title": "Prevent prototype poisoning in clone() (v8)", - "url": "https://github.com/hapijs/hoek/issues/353" - } - ], - "number": 84, - "url": "https://github.com/hapijs/hoek/milestone/84", - "version": "8.5.1" - }, - { - "date": "2019-10-31T00:37:26Z", - "id": 4797505, - "issues": [ - { - "id": 515070839, - "labels": ["feature"], - "number": 346, - "title": "Add isPromise()", - "url": "https://github.com/hapijs/hoek/issues/346" - } - ], - "number": 83, - "url": "https://github.com/hapijs/hoek/milestone/83", - "version": "8.5.0" - }, - { - "date": "2019-10-30T06:35:08Z", - "id": 4762255, - "issues": [ - { - "id": 514431274, - "labels": ["feature", "types"], - "number": 345, - "title": "Add ts.XOR<>", - "url": "https://github.com/hapijs/hoek/issues/345" - } - ], - "number": 82, - "url": "https://github.com/hapijs/hoek/milestone/82", - "version": "8.4.0" - }, - { - "date": "2019-10-17T20:54:08Z", - "id": 4752522, - "issues": [ - { - "id": 508714894, - "labels": ["bug"], - "number": 344, - "title": "Improve clone() performance", - "url": "https://github.com/hapijs/hoek/issues/344" - } - ], - "number": 81, - "url": "https://github.com/hapijs/hoek/milestone/81", - "version": "8.3.2" - }, - { - "date": "2019-10-15T06:28:04Z", - "id": 4723288, - "issues": [ - { - "id": 507033301, - "labels": ["bug"], - "number": 342, - "title": "contain() part option allows no matches", - "url": "https://github.com/hapijs/hoek/issues/342" - } - ], - "number": 80, - "url": "https://github.com/hapijs/hoek/milestone/80", - "version": "8.3.1" - }, - { - "date": "2019-10-05T03:18:40Z", - "id": 4700000, - "issues": [ - { - "id": 502866572, - "labels": ["bug", "types"], - "number": 341, - "title": "Block once in contain() when subject is an object", - "url": "https://github.com/hapijs/hoek/issues/341" - }, - { - "id": 502860092, - "labels": ["bug"], - "number": 340, - "title": "Error.captureStackTrace can't be used in Joi's browser build", - "url": "https://github.com/hapijs/hoek/issues/340" - } - ], - "number": 79, - "url": "https://github.com/hapijs/hoek/milestone/79", - "version": "8.3.0" - }, - { - "date": "2019-09-28T07:13:14Z", - "id": 4642867, - "issues": [ - { - "id": 499736310, - "labels": ["types"], - "number": 338, - "title": "Export interfaces", - "url": "https://github.com/hapijs/hoek/issues/338" - }, - { - "id": 499108377, - "labels": ["bug"], - "number": 337, - "title": "deepEqual with skip seems to ignore missing properties", - "url": "https://github.com/hapijs/hoek/issues/337" - } - ], - "number": 78, - "url": "https://github.com/hapijs/hoek/milestone/78", - "version": "8.2.5" - }, - { - "date": "2019-09-09T06:18:56Z", - "id": 4642034, - "issues": [ - { - "id": 490897665, - "labels": ["bug"], - "number": 330, - "title": "Remove deep limit on contain with object", - "url": "https://github.com/hapijs/hoek/issues/330" - } - ], - "number": 77, - "url": "https://github.com/hapijs/hoek/milestone/77", - "version": "8.2.4" - }, - { - "date": "2019-09-08T19:10:33Z", - "id": 4642033, - "issues": [ - { - "id": 490715452, - "labels": ["bug"], - "number": 329, - "title": "deepEqual() fails to compare errors when prototype is false", - "url": "https://github.com/hapijs/hoek/issues/329" - }, - { - "id": 483100600, - "labels": ["bug"], - "number": 327, - "title": "contain() passes with extra values with only and not once", - "url": "https://github.com/hapijs/hoek/issues/327" - } - ], - "number": 76, - "url": "https://github.com/hapijs/hoek/milestone/76", - "version": "8.2.3" - }, - { - "date": "2019-09-08T19:10:08Z", - "id": 4567374, - "issues": [], - "number": 73, - "url": "https://github.com/hapijs/hoek/milestone/73", - "version": "8.2.2" - }, - { - "date": "2019-08-12T19:48:25Z", - "id": 4556604, - "issues": [ - { - "id": 478755975, - "labels": ["bug"], - "number": 324, - "title": "Fix empty ref bug in contain when only is true", - "url": "https://github.com/hapijs/hoek/pull/324" - }, - { - "id": 478753983, - "labels": ["bug"], - "number": 323, - "title": "contain() is always true for empty ref with only and not once", - "url": "https://github.com/hapijs/hoek/issues/323" - } - ], - "number": 72, - "url": "https://github.com/hapijs/hoek/milestone/72", - "version": "8.2.1" - }, - { - "date": "2019-08-07T21:35:23Z", - "id": 4519353, - "issues": [ - { - "id": 478126911, - "labels": ["feature"], - "number": 322, - "title": "Break methods for deep require", - "url": "https://github.com/hapijs/hoek/issues/322" - }, - { - "id": 478121471, - "labels": ["feature"], - "number": 321, - "title": "Handle no Buffer support", - "url": "https://github.com/hapijs/hoek/issues/321" - } - ], - "number": 71, - "url": "https://github.com/hapijs/hoek/milestone/71", - "version": "8.2.0" - }, - { - "date": "2019-07-24T17:41:28Z", - "id": 4455481, - "issues": [ - { - "id": 472411068, - "labels": ["feature"], - "number": 319, - "title": "skip and deepFunction options for deepEqual()", - "url": "https://github.com/hapijs/hoek/issues/319" - } - ], - "number": 70, - "url": "https://github.com/hapijs/hoek/milestone/70", - "version": "8.1.0" - }, - { - "date": "2019-07-01T16:54:08Z", - "id": 4443949, - "issues": [ - { - "id": 462815163, - "labels": ["bug"], - "number": 317, - "title": "Restore ability to assert with pre-made error", - "url": "https://github.com/hapijs/hoek/issues/317" - } - ], - "number": 69, - "url": "https://github.com/hapijs/hoek/milestone/69", - "version": "8.0.2" - }, - { - "date": "2019-06-26T17:18:20Z", - "id": 4441949, - "issues": [ - { - "id": 460838460, - "labels": ["bug"], - "number": 316, - "title": "Make assert() generate a named Error so bounce can identify", - "url": "https://github.com/hapijs/hoek/issues/316" - } - ], - "number": 68, - "url": "https://github.com/hapijs/hoek/milestone/68", - "version": "8.0.1" - }, - { - "date": "2019-06-26T05:57:21Z", - "id": 4432735, - "issues": [ - { - "id": 460774906, - "labels": ["breaking changes", "release notes"], - "number": 315, - "title": "v8.0.0 Release Notes", - "url": "https://github.com/hapijs/hoek/issues/315" - }, - { - "id": 460774350, - "labels": ["breaking changes"], - "number": 314, - "title": "Change assert() AssertionError to Error", - "url": "https://github.com/hapijs/hoek/issues/314" - }, - { - "id": 460769468, - "labels": ["breaking changes"], - "number": 313, - "title": "Remove uniqueFilename()", - "url": "https://github.com/hapijs/hoek/issues/313" - } - ], - "number": 67, - "url": "https://github.com/hapijs/hoek/milestone/67", - "version": "8.0.0" - }, - { - "date": "2019-06-23T04:10:44Z", - "id": 4431901, - "issues": [ - { - "id": 459534336, - "labels": ["feature"], - "number": 312, - "title": "Minor performance", - "url": "https://github.com/hapijs/hoek/issues/312" - } - ], - "number": 66, - "url": "https://github.com/hapijs/hoek/milestone/66", - "version": "7.2.1" - }, - { - "date": "2019-06-22T03:50:14Z", - "id": 4367023, - "issues": [ - { - "id": 459430774, - "labels": ["feature"], - "number": 311, - "title": "Support reach into Set and Map objects", - "url": "https://github.com/hapijs/hoek/issues/311" - } - ], - "number": 65, - "url": "https://github.com/hapijs/hoek/milestone/65", - "version": "7.2.0" - }, - { - "date": "2019-06-01T17:49:13Z", - "id": 4366103, - "issues": [ - { - "id": 451108766, - "labels": ["feature"], - "number": 308, - "title": "Shallow clone of entire object", - "url": "https://github.com/hapijs/hoek/issues/308" - } - ], - "number": 64, - "url": "https://github.com/hapijs/hoek/milestone/64", - "version": "7.1.0" - }, - { - "date": "2019-05-31T21:38:24Z", - "id": 4350024, - "issues": [ - { - "id": 450993414, - "labels": ["breaking changes", "release notes"], - "number": 306, - "title": "v7.0.0 Release Notes", - "url": "https://github.com/hapijs/hoek/issues/306" - }, - { - "id": 450990375, - "labels": ["feature", "breaking changes"], - "number": 305, - "title": "Support symbols in merge()", - "url": "https://github.com/hapijs/hoek/issues/305" - }, - { - "id": 450978592, - "labels": ["breaking changes"], - "number": 304, - "title": "Replace applyToDefaultsWithShallow() with applyToDefaults(..., { shallow })", - "url": "https://github.com/hapijs/hoek/issues/304" - }, - { - "id": 450970637, - "labels": ["breaking changes"], - "number": 303, - "title": "Replace cloneWithShallow() with clone(value, { shallow })", - "url": "https://github.com/hapijs/hoek/issues/303" - }, - { - "id": 386438346, - "labels": ["breaking changes"], - "number": 285, - "title": "Change all individual option arguments to { options } object", - "url": "https://github.com/hapijs/hoek/issues/285" - }, - { - "id": 386438231, - "labels": ["breaking changes"], - "number": 284, - "title": "Default handling of symbols to true by default", - "url": "https://github.com/hapijs/hoek/issues/284" - } - ], - "number": 63, - "url": "https://github.com/hapijs/hoek/milestone/63", - "version": "7.0.0" - }, - { - "date": "2019-09-01T07:35:48Z", - "id": 4570553, - "issues": [ - { - "id": 487852623, - "labels": ["bug"], - "number": 328, - "title": "deepEqual() skip fails when number of keys is diff", - "url": "https://github.com/hapijs/hoek/issues/328" - } - ], - "number": 74, - "url": "https://github.com/hapijs/hoek/milestone/74", - "version": "6.2.6" - }, - { - "date": "2019-05-27T00:44:26Z", - "id": 4325856, - "issues": [ - { - "id": 447869097, - "labels": ["bug"], - "number": 302, - "title": "Fix clone of subclassed Set and Map", - "url": "https://github.com/hapijs/hoek/pull/302" - }, - { - "id": 447697314, - "labels": ["bug"], - "number": 301, - "title": "Fix: Add map and set to seen map", - "url": "https://github.com/hapijs/hoek/pull/301" - }, - { - "id": 447367853, - "labels": ["bug"], - "number": 300, - "title": "Stack overflow in clone in v6.2.3", - "url": "https://github.com/hapijs/hoek/issues/300" - }, - { - "id": 445627953, - "labels": ["types"], - "number": 298, - "title": "Typescript enhancements", - "url": "https://github.com/hapijs/hoek/pull/298" - } - ], - "number": 62, - "url": "https://github.com/hapijs/hoek/milestone/62", - "version": "6.2.4" - }, - { - "date": "2019-05-17T20:15:56Z", - "id": 4325850, - "issues": [ - { - "id": 445788640, - "labels": ["bug", "breaking changes"], - "number": 299, - "title": "Set deepEqual() prototype option to true by default, not just when no options are passed", - "url": "https://github.com/hapijs/hoek/issues/299" - }, - { - "id": 445561512, - "labels": ["bug"], - "number": 297, - "title": "Clone Map and Set", - "url": "https://github.com/hapijs/hoek/pull/297" - }, - { - "id": 292777807, - "labels": ["bug"], - "number": 228, - "title": "Hoek.clone() issues", - "url": "https://github.com/hapijs/hoek/issues/228" - } - ], - "number": 61, - "url": "https://github.com/hapijs/hoek/milestone/61", - "version": "6.2.3" - }, - { - "date": "2019-05-17T20:11:07Z", - "id": 4184482, - "issues": [ - { - "id": 445110839, - "labels": ["types"], - "number": 295, - "title": "Bootstrap types from @types", - "url": "https://github.com/hapijs/hoek/issues/295" - }, - { - "id": 440457589, - "labels": ["bug"], - "number": 294, - "title": "Handle promises in deepEqual()", - "url": "https://github.com/hapijs/hoek/pull/294" - } - ], - "number": 60, - "url": "https://github.com/hapijs/hoek/milestone/60", - "version": "6.2.2" - }, - { - "date": "2019-03-29T22:27:48Z", - "id": 4175362, - "issues": [ - { - "id": 427200260, - "labels": ["dependency"], - "number": 291, - "title": "Update deps", - "url": "https://github.com/hapijs/hoek/issues/291" - } - ], - "number": 58, - "url": "https://github.com/hapijs/hoek/milestone/58", - "version": "6.2.1" - }, - { - "date": "2019-03-27T00:22:51Z", - "id": 3863004, - "issues": [ - { - "id": 425703347, - "labels": ["non issue"], - "number": 289, - "title": "Change module namespace", - "url": "https://github.com/hapijs/hoek/issues/289" - } - ], - "number": 55, - "url": "https://github.com/hapijs/hoek/milestone/55", - "version": "6.2.0" - }, - { - "date": "2019-03-27T00:32:39Z", - "id": 4175370, - "issues": [ - { - "id": 425706281, - "labels": ["bug"], - "number": 290, - "title": "Fix clone without prototype", - "url": "https://github.com/hapijs/hoek/issues/290" - } - ], - "number": 59, - "url": "https://github.com/hapijs/hoek/milestone/59", - "version": "6.1.3" - }, - { - "date": "2018-12-01T08:36:56Z", - "id": 3856306, - "issues": [ - { - "id": 386438043, - "labels": ["bug"], - "number": 283, - "title": "Revert cloning of symbols to false by default", - "url": "https://github.com/hapijs/hoek/issues/283" - } - ], - "number": 54, - "url": "https://github.com/hapijs/hoek/milestone/54", - "version": "6.1.2" - }, - { - "date": "2018-11-28T22:32:05Z", - "id": 3844987, - "issues": [ - { - "id": 385483648, - "labels": ["bug"], - "number": 282, - "title": "Ignore symbols by default in deepEqual()", - "url": "https://github.com/hapijs/hoek/issues/282" - }, - { - "id": 384291597, - "labels": ["feature"], - "number": 281, - "title": "Symbol support", - "url": "https://github.com/hapijs/hoek/pull/281" - } - ], - "number": 53, - "url": "https://github.com/hapijs/hoek/milestone/53", - "version": "6.1.1" - }, - { - "date": "2018-11-24T12:40:20Z", - "id": 3811315, - "issues": [ - { - "id": 383948594, - "labels": ["bug"], - "number": 278, - "title": "Hoek.clone() defineProperty issue", - "url": "https://github.com/hapijs/hoek/issues/278" - } - ], - "number": 52, - "url": "https://github.com/hapijs/hoek/milestone/52", - "version": "6.0.4" - }, - { - "date": "2018-11-11T02:30:10Z", - "id": 3801074, - "issues": [ - { - "id": 378510277, - "labels": ["bug"], - "number": 277, - "title": "Don't apply part option to contain() by default", - "url": "https://github.com/hapijs/hoek/pull/277" - } - ], - "number": 51, - "url": "https://github.com/hapijs/hoek/milestone/51", - "version": "6.0.3" - }, - { - "date": "2018-11-06T17:42:37Z", - "id": 3792340, - "issues": [ - { - "id": 377943958, - "labels": ["bug"], - "number": 276, - "title": "Fix contain() with duplicates and only", - "url": "https://github.com/hapijs/hoek/pull/276" - } - ], - "number": 50, - "url": "https://github.com/hapijs/hoek/milestone/50", - "version": "6.0.2" - }, - { - "date": "2018-11-03T00:52:45Z", - "id": 3787373, - "issues": [ - { - "id": 377008000, - "labels": ["non issue"], - "number": 274, - "title": "Remove engines", - "url": "https://github.com/hapijs/hoek/issues/274" - } - ], - "number": 49, - "url": "https://github.com/hapijs/hoek/milestone/49", - "version": "6.0.1" - }, - { - "date": "2018-11-01T06:59:31Z", - "id": 3555593, - "issues": [ - { - "id": 348726048, - "labels": ["breaking changes"], - "number": 268, - "title": "API deprecations", - "url": "https://github.com/hapijs/hoek/issues/268" - }, - { - "id": 333545166, - "labels": ["bug"], - "number": 260, - "title": "deepEqual does not check both sides in full", - "url": "https://github.com/hapijs/hoek/issues/260" - }, - { - "id": 324710895, - "labels": ["bug", "feature"], - "number": 254, - "title": "Add Map and Set support to deepEqual()", - "url": "https://github.com/hapijs/hoek/pull/254" - }, - { - "id": 303263658, - "labels": ["bug", "feature"], - "number": 242, - "title": "Rework deepEqual()", - "url": "https://github.com/hapijs/hoek/pull/242" - }, - { - "id": 299983602, - "labels": ["bug"], - "number": 238, - "title": "deepEqual and array properties", - "url": "https://github.com/hapijs/hoek/issues/238" - }, - { - "id": 299135794, - "labels": ["bug"], - "number": 236, - "title": "Hoek.deepEqual false positive", - "url": "https://github.com/hapijs/hoek/issues/236" - } - ], - "number": 48, - "url": "https://github.com/hapijs/hoek/milestone/48", - "version": "6.0.0" - }, - { - "date": "2018-08-10T20:35:02Z", - "id": 3555591, - "issues": [ - { - "id": 349648559, - "labels": ["bug"], - "number": 269, - "title": "Try object ref comparison first in deepClone()", - "url": "https://github.com/hapijs/hoek/pull/269" - } - ], - "number": 47, - "url": "https://github.com/hapijs/hoek/milestone/47", - "version": "5.0.4" - }, - { - "date": "2018-05-17T20:31:21Z", - "id": 2885305, - "issues": [ - { - "id": 292757075, - "labels": ["bug"], - "number": 227, - "title": "Don't use deprecated new Buffer() api", - "url": "https://github.com/hapijs/hoek/pull/227" - } - ], - "number": 46, - "url": "https://github.com/hapijs/hoek/milestone/46", - "version": "5.0.3" - }, - { - "date": "2017-11-03T07:57:34Z", - "id": 2866784, - "issues": [ - { - "id": 270900421, - "labels": ["dependency"], - "number": 221, - "title": "Update deps", - "url": "https://github.com/hapijs/hoek/issues/221" - }, - { - "id": 270704251, - "labels": ["feature"], - "number": 220, - "title": "Throw instances of AssertionError on asserts", - "url": "https://github.com/hapijs/hoek/pull/220" - } - ], - "number": 45, - "url": "https://github.com/hapijs/hoek/milestone/45", - "version": "5.0.2" - }, - { - "date": "2017-10-26T08:22:31Z", - "id": 2793761, - "issues": [ - { - "id": 268667074, - "labels": ["bug", "breaking changes"], - "number": 218, - "title": "base64urlDecode() should throw, not return errors", - "url": "https://github.com/hapijs/hoek/issues/218" - } - ], - "number": 44, - "url": "https://github.com/hapijs/hoek/milestone/44", - "version": "5.0.1" - }, - { - "date": "2017-09-26T04:22:34Z", - "id": 2646163, - "issues": [ - { - "id": 260486505, - "labels": ["breaking changes"], - "number": 212, - "title": "Remove nextTick()", - "url": "https://github.com/hapijs/hoek/issues/212" - }, - { - "id": 260484570, - "labels": ["breaking changes"], - "number": 211, - "title": "Remove Timer", - "url": "https://github.com/hapijs/hoek/issues/211" - }, - { - "id": 260484408, - "labels": ["breaking changes"], - "number": 210, - "title": "Require node v8", - "url": "https://github.com/hapijs/hoek/issues/210" - }, - { - "id": 258333940, - "labels": ["feature"], - "number": 206, - "title": "Add a wait() method", - "url": "https://github.com/hapijs/hoek/issues/206" - } - ], - "number": 43, - "url": "https://github.com/hapijs/hoek/milestone/43", - "version": "5.0.0" - }, - { - "date": "2019-03-21T23:05:55Z", - "id": 4162359, - "issues": [ - { - "id": 423979171, - "labels": ["lts"], - "number": 288, - "title": "Commercial version for 4.x branch", - "url": "https://github.com/hapijs/hoek/issues/288" - } - ], - "number": 56, - "url": "https://github.com/hapijs/hoek/milestone/56", - "version": "4.3.0" - }, - { - "date": "2017-07-17T22:15:39Z", - "id": 2425278, - "issues": [ - { - "id": 219396302, - "labels": ["feature"], - "number": 204, - "title": "Add escape json", - "url": "https://github.com/hapijs/hoek/pull/204" - } - ], - "number": 42, - "url": "https://github.com/hapijs/hoek/milestone/42", - "version": "4.2.0" - }, - { - "date": "2017-03-31T19:02:30Z", - "id": 2014665, - "issues": [ - { - "id": 218577013, - "labels": ["bug"], - "number": 203, - "title": "Fix isInteger for unsafe integers", - "url": "https://github.com/hapijs/hoek/pull/203" - } - ], - "number": 41, - "url": "https://github.com/hapijs/hoek/milestone/41", - "version": "4.1.1" - }, - { - "date": "2016-09-19T18:31:44Z", - "id": 1907888, - "issues": [ - { - "id": 177606141, - "labels": ["feature"], - "number": 197, - "title": "Enhancement: Make contain see non-enumerable's", - "url": "https://github.com/hapijs/hoek/pull/197" - } - ], - "number": 40, - "url": "https://github.com/hapijs/hoek/milestone/40", - "version": "4.1.0" - }, - { - "date": "2016-07-27T18:49:58Z", - "id": 1802856, - "issues": [ - { - "id": 167926452, - "labels": ["documentation"], - "number": 195, - "title": "npmignore", - "url": "https://github.com/hapijs/hoek/issues/195" - } - ], - "number": 39, - "url": "https://github.com/hapijs/hoek/milestone/39", - "version": "4.0.2" - }, - { - "date": "2016-06-01T17:13:11Z", - "id": 1802807, - "issues": [ - { - "id": 157957342, - "labels": ["test"], - "number": 191, - "title": "update to code 3.x.x", - "url": "https://github.com/hapijs/hoek/issues/191" - }, - { - "id": 157696964, - "labels": ["feature"], - "number": 190, - "title": "Use map for cloning memoizer", - "url": "https://github.com/hapijs/hoek/pull/190" - } - ], - "number": 38, - "url": "https://github.com/hapijs/hoek/milestone/38", - "version": "4.0.1" - }, - { - "date": "2016-06-01T16:49:28Z", - "id": 1411869, - "issues": [ - { - "id": 150943265, - "labels": ["test", "dependency"], - "number": 186, - "title": "update lab", - "url": "https://github.com/hapijs/hoek/issues/186" - }, - { - "id": 145917518, - "labels": ["feature"], - "number": 185, - "title": "improve .unique to make use of es6 `Set` performance", - "url": "https://github.com/hapijs/hoek/pull/185" - }, - { - "id": 145627031, - "labels": ["feature"], - "number": 184, - "title": "improve .unique performance", - "url": "https://github.com/hapijs/hoek/issues/184" - }, - { - "id": 145007404, - "labels": ["bug"], - "number": 183, - "title": "Fix for issue #177", - "url": "https://github.com/hapijs/hoek/pull/183" - }, - { - "id": 144975941, - "labels": ["breaking changes"], - "number": 181, - "title": "removed isAbsolutePath method", - "url": "https://github.com/hapijs/hoek/pull/181" - }, - { - "id": 144741934, - "labels": ["feature"], - "number": 180, - "title": "refactor(merge): use !== rather than ^", - "url": "https://github.com/hapijs/hoek/pull/180" - }, - { - "id": 137368992, - "labels": ["feature"], - "number": 179, - "title": "isAbsolutePath obsolete?", - "url": "https://github.com/hapijs/hoek/issues/179" - }, - { - "id": 127530221, - "labels": ["bug", "security"], - "number": 177, - "title": "Assert when value is not a string", - "url": "https://github.com/hapijs/hoek/issues/177" - }, - { - "id": 56808333, - "labels": ["bug", "breaking changes"], - "number": 124, - "title": "transform method does not respect separator option", - "url": "https://github.com/hapijs/hoek/issues/124" - } - ], - "number": 37, - "url": "https://github.com/hapijs/hoek/milestone/37", - "version": "4.0.0" - }, - { - "date": "2015-11-14T21:47:33Z", - "id": 1411865, - "issues": [ - { - "id": 100729194, - "labels": ["feature"], - "number": 152, - "title": "Hoek.reach and non standard JS objects", - "url": "https://github.com/hapijs/hoek/issues/152" - } - ], - "number": 36, - "url": "https://github.com/hapijs/hoek/milestone/36", - "version": "3.0.4" - }, - { - "date": "2015-11-14T21:40:05Z", - "id": 1411856, - "issues": [ - { - "id": 113065165, - "labels": ["bug"], - "number": 164, - "title": "Hoek.deepEqual providing false positive result", - "url": "https://github.com/hapijs/hoek/issues/164" - } - ], - "number": 35, - "url": "https://github.com/hapijs/hoek/milestone/35", - "version": "3.0.3" - }, - { - "date": "2015-11-14T21:31:24Z", - "id": 1386790, - "issues": [ - { - "id": 116953077, - "labels": ["bug"], - "number": 173, - "title": "fix linting error", - "url": "https://github.com/hapijs/hoek/issues/173" - }, - { - "id": 116951068, - "labels": ["documentation"], - "number": 171, - "title": "fix mapToObject documentation", - "url": "https://github.com/hapijs/hoek/pull/171" - } - ], - "number": 34, - "url": "https://github.com/hapijs/hoek/milestone/34", - "version": "3.0.2" - }, - { - "date": "2015-10-31T16:52:58Z", - "id": 1386789, - "issues": [ - { - "id": 114420785, - "labels": ["bug"], - "number": 169, - "title": "Lint errors. Closes #168", - "url": "https://github.com/hapijs/hoek/pull/169" - }, - { - "id": 114420729, - "labels": ["bug"], - "number": 168, - "title": "ES6 lint errors", - "url": "https://github.com/hapijs/hoek/issues/168" - } - ], - "number": 33, - "url": "https://github.com/hapijs/hoek/milestone/33", - "version": "3.0.1" - }, - { - "date": "2015-10-31T16:52:12Z", - "id": 1316931, - "issues": [ - { - "id": 114337139, - "labels": ["feature", "breaking changes", "dependency"], - "number": 167, - "title": "Es6", - "url": "https://github.com/hapijs/hoek/pull/167" - }, - { - "id": 114336956, - "labels": ["feature", "breaking changes", "dependency"], - "number": 166, - "title": "ES6 style, node v4", - "url": "https://github.com/hapijs/hoek/issues/166" - }, - { - "id": 113452852, - "labels": ["bug"], - "number": 165, - "title": "es6 updates WIP", - "url": "https://github.com/hapijs/hoek/pull/165" - } - ], - "number": 32, - "url": "https://github.com/hapijs/hoek/milestone/32", - "version": "3.0.0" - }, - { - "date": "2015-09-21T17:47:59Z", - "id": 1309025, - "issues": [ - { - "id": 107561940, - "labels": ["bug"], - "number": 162, - "title": "Hoek.clone on process.env", - "url": "https://github.com/hapijs/hoek/issues/162" - } - ], - "number": 31, - "url": "https://github.com/hapijs/hoek/milestone/31", - "version": "2.16.3" - }, - { - "date": "2015-09-16T18:31:14Z", - "id": 1308896, - "issues": [ - { - "id": 106833241, - "labels": ["bug"], - "number": 161, - "title": "hoek.reach should allow empty keys", - "url": "https://github.com/hapijs/hoek/issues/161" - } - ], - "number": 30, - "url": "https://github.com/hapijs/hoek/milestone/30", - "version": "2.16.2" - }, - { - "date": "2015-09-16T17:08:13Z", - "id": 1308892, - "issues": [ - { - "id": 106817523, - "labels": ["feature"], - "number": 160, - "title": "cleanup loop from #148", - "url": "https://github.com/hapijs/hoek/issues/160" - } - ], - "number": 29, - "url": "https://github.com/hapijs/hoek/milestone/29", - "version": "2.16.1" - }, - { - "date": "2015-09-16T17:07:24Z", - "id": 1301394, - "issues": [ - { - "id": 106659960, - "labels": ["feature"], - "number": 159, - "title": "Allow reach to work with falsy values (empty str)", - "url": "https://github.com/hapijs/hoek/pull/159" - } - ], - "number": 28, - "url": "https://github.com/hapijs/hoek/milestone/28", - "version": "2.16.0" - }, - { - "date": "2015-09-11T16:19:04Z", - "id": 1126262, - "issues": [ - { - "id": 80042520, - "labels": ["feature"], - "number": 148, - "title": "generalize Hoek.transform to accept an array of objects", - "url": "https://github.com/hapijs/hoek/pull/148" - } - ], - "number": 27, - "url": "https://github.com/hapijs/hoek/milestone/27", - "version": "2.15.0" - }, - { - "date": "2015-05-22T18:14:55Z", - "id": 1126191, - "issues": [ - { - "id": 79551636, - "labels": ["feature"], - "number": 147, - "title": "Reach template", - "url": "https://github.com/hapijs/hoek/pull/147" - }, - { - "id": 79551111, - "labels": ["feature"], - "number": 146, - "title": "Add reachTemplate() to apply reach() functionality to a templatized string", - "url": "https://github.com/hapijs/hoek/issues/146" - }, - { - "id": 67383952, - "labels": ["bug"], - "number": 139, - "title": "Clone fails on objects with null prototypes", - "url": "https://github.com/hapijs/hoek/issues/139" - } - ], - "number": 26, - "url": "https://github.com/hapijs/hoek/milestone/26", - "version": "2.14.0" - }, - { - "date": "2015-05-22T17:36:55Z", - "id": 1124373, - "issues": [ - { - "id": 79212609, - "labels": ["bug"], - "number": 145, - "title": "options for deepEqual don't pass on to recursive calls in arrays", - "url": "https://github.com/hapijs/hoek/issues/145" - }, - { - "id": 64229154, - "labels": ["bug"], - "number": 134, - "title": "Allow for deep partial contain", - "url": "https://github.com/hapijs/hoek/pull/134" - } - ], - "number": 25, - "url": "https://github.com/hapijs/hoek/milestone/25", - "version": "2.13.1" - }, - { - "date": "2015-05-04T20:40:49Z", - "id": 1091321, - "issues": [ - { - "id": 68815236, - "labels": ["feature"], - "number": 140, - "title": "Add isNullOverride to applyToDefaults", - "url": "https://github.com/hapijs/hoek/pull/140" - } - ], - "number": 23, - "url": "https://github.com/hapijs/hoek/milestone/23", - "version": "2.13.0" - }, - { - "date": "2015-03-24T17:17:33Z", - "id": 1036682, - "issues": [ - { - "id": 62136164, - "labels": ["feature"], - "number": 133, - "title": "Added option parameter to deepEqual.", - "url": "https://github.com/hapijs/hoek/pull/133" - } - ], - "number": 21, - "url": "https://github.com/hapijs/hoek/milestone/21", - "version": "2.12.0" - }, - { - "date": "2015-02-28T00:05:42Z", - "id": 922462, - "issues": [ - { - "id": 59151133, - "labels": ["bug"], - "number": 131, - "title": "Clone even non-enumerable properties.", - "url": "https://github.com/hapijs/hoek/pull/131" - }, - { - "id": 59079513, - "labels": ["bug"], - "number": 130, - "title": "Hoek.deepEqual({a: 'foo'}, {a: 'foo', b: 'bar'}) return true", - "url": "https://github.com/hapijs/hoek/issues/130" - }, - { - "id": 58515874, - "labels": ["bug"], - "number": 128, - "title": "Fix deepEqual on empty objects. Fixes #127.", - "url": "https://github.com/hapijs/hoek/pull/128" - }, - { - "id": 58513974, - "labels": ["bug"], - "number": 127, - "title": "deepEqual behaving unexpectedly with empty object", - "url": "https://github.com/hapijs/hoek/issues/127" - } - ], - "number": 19, - "url": "https://github.com/hapijs/hoek/milestone/19", - "version": "2.11.1" - }, - { - "date": "2015-01-05T17:28:19Z", - "id": 882194, - "issues": [ - { - "id": 51616410, - "labels": ["feature"], - "number": 117, - "title": "Throw error directly if it is the only thing passed in as the message", - "url": "https://github.com/hapijs/hoek/pull/117" - }, - { - "id": 51614408, - "labels": ["feature"], - "number": 116, - "title": "Hoek.assert - throw error that is passed in as message", - "url": "https://github.com/hapijs/hoek/issues/116" - }, - { - "id": 51140190, - "labels": ["feature"], - "number": 115, - "title": "Adds ability to do Hoek.reach with negative index", - "url": "https://github.com/hapijs/hoek/pull/115" - } - ], - "number": 18, - "url": "https://github.com/hapijs/hoek/milestone/18", - "version": "2.11.0" - }, - { - "date": "2014-11-27T04:03:53Z", - "id": 881986, - "issues": [ - { - "id": 50252060, - "labels": ["feature"], - "number": 110, - "title": "enhance withShallow methods to support nested keys. Closes #109", - "url": "https://github.com/hapijs/hoek/pull/110" - }, - { - "id": 50252005, - "labels": ["feature"], - "number": 109, - "title": "Enhance shallow clone methods to support nested keys", - "url": "https://github.com/hapijs/hoek/issues/109" - } - ], - "number": 17, - "url": "https://github.com/hapijs/hoek/milestone/17", - "version": "2.10.0" - }, - { - "date": "2014-11-26T22:17:46Z", - "id": 860468, - "issues": [ - { - "id": 50232245, - "labels": ["bug"], + { + "date": "2024-11-14T15:55:17Z", + "id": 11894370, + "issues": [ + { + "id": 2659253191, + "labels": ["bug"], + "number": 402, + "title": "Fix cloning Util.inherit() subclassed errors. Backports #401", + "url": "https://github.com/hapijs/hoek/pull/402" + }, + { + "id": 2659170673, + "labels": ["bug"], + "number": 401, + "title": "Fix cloning Util.inherit() subclassed errors", + "url": "https://github.com/hapijs/hoek/pull/401" + }, + { + "id": 2658187297, + "labels": ["bug"], + "number": 400, + "title": "Hoek.clone drop an error with axios errors in version @hapi/hoek 11.0.6+", + "url": "https://github.com/hapijs/hoek/issues/400" + } + ], "number": 108, - "title": "Fix applyToDefaultsWithShallow default clone. Closes #107", - "url": "https://github.com/hapijs/hoek/pull/108" - }, - { - "id": 50223210, - "labels": ["bug"], + "url": "https://github.com/hapijs/hoek/milestone/108", + "version": "11.0.7" + }, + { + "date": "2024-10-24T22:05:42Z", + "id": 11793175, + "issues": [ + { + "id": 2612070373, + "labels": ["bug"], + "number": 399, + "title": "Fix Error clone() when structuredClone uses bad prototype", + "url": "https://github.com/hapijs/hoek/pull/399" + } + ], "number": 107, - "title": "applyToDefaultsWithShallow() fail to retain defaults shallow key", - "url": "https://github.com/hapijs/hoek/issues/107" - } - ], - "number": 16, - "url": "https://github.com/hapijs/hoek/milestone/16", - "version": "2.9.1" - }, - { - "date": "2014-11-10T18:01:32Z", - "id": 838006, - "issues": [ - { - "id": 48241213, - "labels": ["bug", "feature"], + "url": "https://github.com/hapijs/hoek/milestone/107", + "version": "11.0.6" + }, + { + "date": "2024-10-24T22:03:04Z", + "id": 10268890, + "issues": [ + { + "id": 2611018014, + "labels": ["bug"], + "number": 398, + "title": "fix: missing stack starting from node 21+", + "url": "https://github.com/hapijs/hoek/pull/398" + }, + { + "id": 2456135918, + "labels": ["documentation", "types"], + "number": 396, + "title": "Fix default values for `merge.Options` interface", + "url": "https://github.com/hapijs/hoek/pull/396" + }, + { + "id": 2456103097, + "labels": ["types"], + "number": 395, + "title": "Incorrect default documented for `mergeArrays` option", + "url": "https://github.com/hapijs/hoek/issues/395" + } + ], "number": 106, - "title": "Clone, shallow, and stringify", - "url": "https://github.com/hapijs/hoek/pull/106" - }, - { - "id": 48241136, - "labels": ["feature"], + "url": "https://github.com/hapijs/hoek/milestone/106", + "version": "11.0.5" + }, + { + "date": "2023-12-05T10:49:28Z", + "id": 10267490, + "issues": [ + { + "id": 1905653321, + "labels": ["bug", "types"], + "number": 389, + "title": "fix: provide reference to TS types for export map", + "url": "https://github.com/hapijs/hoek/pull/389" + }, + { + "id": 1564951064, + "labels": ["bug", "types"], + "number": 385, + "title": "Missing types in typescript with module resolution nodenext", + "url": "https://github.com/hapijs/hoek/issues/385" + } + ], "number": 105, - "title": "Move shallow and stringify from hapi", - "url": "https://github.com/hapijs/hoek/issues/105" - }, - { - "id": 48239865, - "labels": ["bug"], + "url": "https://github.com/hapijs/hoek/milestone/105", + "version": "11.0.4" + }, + { + "date": "2023-12-05T08:08:59Z", + "id": 10267473, + "issues": [ + { + "id": 2014158006, + "labels": ["bug"], + "number": 392, + "title": "Support the URL type", + "url": "https://github.com/hapijs/hoek/pull/392" + } + ], "number": 104, - "title": "Clone fails to copy object property if only setter used", - "url": "https://github.com/hapijs/hoek/issues/104" - } - ], - "number": 15, - "url": "https://github.com/hapijs/hoek/milestone/15", - "version": "2.9.0" - }, - { - "date": "2014-10-23T18:14:31Z", - "id": 832958, - "issues": [ - { - "id": 46656074, - "labels": ["bug"], - "number": 103, - "title": "avoid hasOwnProperty so plain objects work", - "url": "https://github.com/hapijs/hoek/pull/103" - }, - { - "id": 46655922, - "labels": ["bug"], + "url": "https://github.com/hapijs/hoek/milestone/104", + "version": "11.0.3" + }, + { + "date": "2023-02-18T18:52:59Z", + "id": 8763263, + "issues": [ + { + "id": 1496267911, + "labels": ["types"], + "number": 384, + "title": "chore: add individual module types", + "url": "https://github.com/hapijs/hoek/pull/384" + } + ], "number": 102, - "title": "Plain objects can't be compared.", - "url": "https://github.com/hapijs/hoek/issues/102" - } - ], - "number": 14, - "url": "https://github.com/hapijs/hoek/milestone/14", - "version": "2.8.1" - }, - { - "date": "2014-10-20T16:21:17Z", - "id": 830543, - "issues": [ - { - "id": 46235152, - "labels": ["bug"], - "number": 99, - "title": "assert() adds whitespace even when arguments are empty", - "url": "https://github.com/hapijs/hoek/issues/99" - }, - { - "id": 46167789, - "labels": ["bug", "feature"], + "url": "https://github.com/hapijs/hoek/milestone/102", + "version": "11.0.2" + }, + { + "date": "2022-12-13T19:33:59Z", + "id": 8759223, + "issues": [ + { + "id": 1241558819, + "labels": ["feature", "breaking changes"], + "number": 380, + "title": "Explicitly export modules", + "url": "https://github.com/hapijs/hoek/pull/380" + } + ], + "number": 101, + "url": "https://github.com/hapijs/hoek/milestone/101", + "version": "11.0.1" + }, + { + "date": "2022-12-13T08:05:19Z", + "id": 8755410, + "issues": [ + { + "id": 1309307120, + "labels": ["feature", "breaking changes", "types"], + "number": 382, + "title": "Refactor AssertError", + "url": "https://github.com/hapijs/hoek/pull/382" + } + ], + "number": 100, + "url": "https://github.com/hapijs/hoek/milestone/100", + "version": "11.0.0" + }, + { + "date": "2022-07-23T18:31:42Z", + "id": 7932233, + "issues": [ + { + "id": 1315584562, + "labels": ["bug"], + "number": 383, + "title": "Updates assert() type to declare condition to be true", + "url": "https://github.com/hapijs/hoek/pull/383" + }, + { + "id": 1241430181, + "labels": ["dependency"], + "number": 379, + "title": "Fix version range", + "url": "https://github.com/hapijs/hoek/pull/379" + } + ], + "number": 98, + "url": "https://github.com/hapijs/hoek/milestone/98", + "version": "10.0.1" + }, + { + "date": "2022-05-01T18:02:50Z", + "id": 7931449, + "issues": [ + { + "id": 1222020915, + "labels": ["breaking changes", "dependency"], + "number": 377, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/hoek/pull/377" + } + ], "number": 97, - "title": "Add contain()", - "url": "https://github.com/hapijs/hoek/pull/97" - }, - { - "id": 46167781, - "labels": ["feature"], + "url": "https://github.com/hapijs/hoek/milestone/97", + "version": "10.0.0" + }, + { + "date": "2022-05-01T18:00:57Z", + "id": 7905503, + "issues": [ + { + "id": 1034925394, + "labels": ["bug", "feature"], + "number": 373, + "title": "Handle very long timeouts in Hoek.wait()", + "url": "https://github.com/hapijs/hoek/pull/373" + }, + { + "id": 1029471849, + "labels": [], + "number": 372, + "title": "Cleanup", + "url": "https://github.com/hapijs/hoek/pull/372" + } + ], "number": 96, - "title": "Add contain() comparison function for strings, objects, and arrays", - "url": "https://github.com/hapijs/hoek/issues/96" - }, - { - "id": 46166656, - "labels": ["bug"], - "number": 95, - "title": "deepEqual() fails to compare arrays with non literal members", - "url": "https://github.com/hapijs/hoek/issues/95" - } - ], - "number": 13, - "url": "https://github.com/hapijs/hoek/milestone/13", - "version": "2.8.0" - }, - { - "date": "2014-10-17T18:01:24Z", - "id": 826060, - "issues": [ - { - "id": 46072092, - "labels": ["feature"], + "url": "https://github.com/hapijs/hoek/milestone/96", + "version": "9.3.0" + }, + { + "date": "2021-09-27T20:57:03Z", + "id": 6671369, + "issues": [ + { + "id": 1008570332, + "labels": ["bug", "security"], + "number": 371, + "title": "Fix reachTemplate() regex timing", + "url": "https://github.com/hapijs/hoek/pull/371" + } + ], "number": 94, - "title": "deepEqual", - "url": "https://github.com/hapijs/hoek/pull/94" - } - ], - "number": 12, - "url": "https://github.com/hapijs/hoek/milestone/12", - "version": "2.7.0" - }, - { - "date": "2014-10-14T16:58:59Z", - "id": 810540, - "issues": [ - { - "id": 45525377, - "labels": ["bug"], + "url": "https://github.com/hapijs/hoek/milestone/94", + "version": "9.2.1" + }, + { + "date": "2021-04-17T21:10:59Z", + "id": 6671368, + "issues": [ + { + "id": 855917996, + "labels": ["feature"], + "number": 368, + "title": "Support named imports when using node esm loader", + "url": "https://github.com/hapijs/hoek/pull/368" + } + ], "number": 93, - "title": "dont execute getters when cloning", - "url": "https://github.com/hapijs/hoek/pull/93" - }, - { - "id": 45033118, - "labels": ["feature"], + "url": "https://github.com/hapijs/hoek/milestone/93", + "version": "9.2.0" + }, + { + "date": "2020-12-27T17:02:12Z", + "id": 5834424, + "issues": [ + { + "id": 771970242, + "labels": [], + "number": 367, + "title": "applyToDefaults: respect nullOverride when shallow is used", + "url": "https://github.com/hapijs/hoek/pull/367" + }, + { + "id": 760414485, + "labels": ["bug"], + "number": 365, + "title": "Fix applyToDefaults to work better with non-object source values", + "url": "https://github.com/hapijs/hoek/pull/365" + }, + { + "id": 709592786, + "labels": [], + "number": 361, + "title": "upgrade lab to v24 and devDependency of typescript", + "url": "https://github.com/hapijs/hoek/pull/361" + } + ], + "number": 92, + "url": "https://github.com/hapijs/hoek/milestone/92", + "version": "9.1.1" + }, + { + "date": "2020-09-02T01:38:07Z", + "id": 5193606, + "issues": [ + { + "id": 684627117, + "labels": ["bug"], + "number": 360, + "title": "Always call base class methods to inspect Map and Set", + "url": "https://github.com/hapijs/hoek/pull/360" + }, + { + "id": 683642132, + "labels": ["feature"], + "number": 359, + "title": "Add returnValue option to wait()", + "url": "https://github.com/hapijs/hoek/pull/359" + }, + { + "id": 675686328, + "labels": ["bug"], + "number": 357, + "title": "deepEqual() can fail on subclassed map", + "url": "https://github.com/hapijs/hoek/issues/357" + } + ], "number": 91, - "title": "Added util.format", - "url": "https://github.com/hapijs/hoek/pull/91" - }, - { - "id": 44718040, - "labels": ["bug"], - "number": 89, - "title": "Don't clone properties with getter by executing the getter", - "url": "https://github.com/hapijs/hoek/issues/89" - } - ], - "number": 10, - "url": "https://github.com/hapijs/hoek/milestone/10", - "version": "2.6.0" - }, - { - "date": "2014-10-10T21:01:24Z", - "id": 820415, - "issues": [ - { - "id": 44707328, - "labels": ["bug"], + "url": "https://github.com/hapijs/hoek/milestone/91", + "version": "9.1.0" + }, + { + "date": "2020-03-12T05:11:19Z", + "id": 5083634, + "issues": [ + { + "id": 558367826, + "labels": ["bug"], + "number": 351, + "title": "Fix 'compare is not a function'", + "url": "https://github.com/hapijs/hoek/pull/351" + } + ], + "number": 90, + "url": "https://github.com/hapijs/hoek/milestone/90", + "version": "9.0.4" + }, + { + "date": "2020-02-08T06:59:41Z", + "id": 4992142, + "issues": [ + { + "id": 561978604, + "labels": ["bug", "security"], + "number": 352, + "title": "Prevent prototype poisoning in clone()", + "url": "https://github.com/hapijs/hoek/issues/352" + } + ], "number": 88, - "title": "Allow falsey values to be used as default value in Hoek.reach()", - "url": "https://github.com/hapijs/hoek/pull/88" - } - ], - "number": 11, - "url": "https://github.com/hapijs/hoek/milestone/11", - "version": "2.5.1" - }, - { - "date": "2014-10-01T20:59:37Z", - "id": 742911, - "issues": [ - { - "id": 44020722, - "labels": ["feature"], + "url": "https://github.com/hapijs/hoek/milestone/88", + "version": "9.0.3" + }, + { + "date": "2020-01-09T18:26:01Z", + "id": 4990067, + "issues": [ + { + "id": 547644435, + "labels": ["bug"], + "number": 350, + "title": "Clone fails to copy override array prototype", + "url": "https://github.com/hapijs/hoek/issues/350" + } + ], + "number": 87, + "url": "https://github.com/hapijs/hoek/milestone/87", + "version": "9.0.2" + }, + { + "date": "2020-01-09T06:17:18Z", + "id": 4972030, + "issues": [ + { + "id": 547272812, + "labels": ["bug"], + "number": 349, + "title": "Fix shallow defaults clone", + "url": "https://github.com/hapijs/hoek/issues/349" + } + ], + "number": 86, + "url": "https://github.com/hapijs/hoek/milestone/86", + "version": "9.0.1" + }, + { + "date": "2020-01-03T23:06:49Z", + "id": 4972029, + "issues": [ + { + "id": 545196311, + "labels": ["breaking changes", "dependency"], + "number": 347, + "title": "Support only node 12", + "url": "https://github.com/hapijs/hoek/issues/347" + }, + { + "id": 508385597, + "labels": ["feature", "breaking changes"], + "number": 343, + "title": "Safer and faster shallow handling", + "url": "https://github.com/hapijs/hoek/pull/343" + } + ], + "number": 85, + "url": "https://github.com/hapijs/hoek/milestone/85", + "version": "9.0.0" + }, + { + "date": "2020-02-08T06:59:43Z", + "id": 4800392, + "issues": [ + { + "id": 561979858, + "labels": ["bug", "security", "lts"], + "number": 353, + "title": "Prevent prototype poisoning in clone() (v8)", + "url": "https://github.com/hapijs/hoek/issues/353" + } + ], "number": 84, - "title": "Replaced __proto__ with Object.create()", - "url": "https://github.com/hapijs/hoek/pull/84" - }, - { - "id": 43343968, - "labels": ["feature"], + "url": "https://github.com/hapijs/hoek/milestone/84", + "version": "8.5.1" + }, + { + "date": "2019-10-31T00:37:26Z", + "id": 4797505, + "issues": [ + { + "id": 515070839, + "labels": ["feature"], + "number": 346, + "title": "Add isPromise()", + "url": "https://github.com/hapijs/hoek/issues/346" + } + ], + "number": 83, + "url": "https://github.com/hapijs/hoek/milestone/83", + "version": "8.5.0" + }, + { + "date": "2019-10-30T06:35:08Z", + "id": 4762255, + "issues": [ + { + "id": 514431274, + "labels": ["feature", "types"], + "number": 345, + "title": "Add ts.XOR<>", + "url": "https://github.com/hapijs/hoek/issues/345" + } + ], "number": 82, - "title": "uniqueFilename", - "url": "https://github.com/hapijs/hoek/pull/82" - }, - { - "id": 42074219, - "labels": ["feature"], + "url": "https://github.com/hapijs/hoek/milestone/82", + "version": "8.4.0" + }, + { + "date": "2019-10-17T20:54:08Z", + "id": 4752522, + "issues": [ + { + "id": 508714894, + "labels": ["bug"], + "number": 344, + "title": "Improve clone() performance", + "url": "https://github.com/hapijs/hoek/issues/344" + } + ], + "number": 81, + "url": "https://github.com/hapijs/hoek/milestone/81", + "version": "8.3.2" + }, + { + "date": "2019-10-15T06:28:04Z", + "id": 4723288, + "issues": [ + { + "id": 507033301, + "labels": ["bug"], + "number": 342, + "title": "contain() part option allows no matches", + "url": "https://github.com/hapijs/hoek/issues/342" + } + ], + "number": 80, + "url": "https://github.com/hapijs/hoek/milestone/80", + "version": "8.3.1" + }, + { + "date": "2019-10-05T03:18:40Z", + "id": 4700000, + "issues": [ + { + "id": 502866572, + "labels": ["bug", "types"], + "number": 341, + "title": "Block once in contain() when subject is an object", + "url": "https://github.com/hapijs/hoek/issues/341" + }, + { + "id": 502860092, + "labels": ["bug"], + "number": 340, + "title": "Error.captureStackTrace can't be used in Joi's browser build", + "url": "https://github.com/hapijs/hoek/issues/340" + } + ], "number": 79, - "title": "Update to lab 4.x", - "url": "https://github.com/hapijs/hoek/issues/79" - }, - { - "id": 40955211, - "labels": ["test"], + "url": "https://github.com/hapijs/hoek/milestone/79", + "version": "8.3.0" + }, + { + "date": "2019-09-28T07:13:14Z", + "id": 4642867, + "issues": [ + { + "id": 499736310, + "labels": ["types"], + "number": 338, + "title": "Export interfaces", + "url": "https://github.com/hapijs/hoek/issues/338" + }, + { + "id": 499108377, + "labels": ["bug"], + "number": 337, + "title": "deepEqual with skip seems to ignore missing properties", + "url": "https://github.com/hapijs/hoek/issues/337" + } + ], + "number": 78, + "url": "https://github.com/hapijs/hoek/milestone/78", + "version": "8.2.5" + }, + { + "date": "2019-09-09T06:18:56Z", + "id": 4642034, + "issues": [ + { + "id": 490897665, + "labels": ["bug"], + "number": 330, + "title": "Remove deep limit on contain with object", + "url": "https://github.com/hapijs/hoek/issues/330" + } + ], + "number": 77, + "url": "https://github.com/hapijs/hoek/milestone/77", + "version": "8.2.4" + }, + { + "date": "2019-09-08T19:10:33Z", + "id": 4642033, + "issues": [ + { + "id": 490715452, + "labels": ["bug"], + "number": 329, + "title": "deepEqual() fails to compare errors when prototype is false", + "url": "https://github.com/hapijs/hoek/issues/329" + }, + { + "id": 483100600, + "labels": ["bug"], + "number": 327, + "title": "contain() passes with extra values with only and not once", + "url": "https://github.com/hapijs/hoek/issues/327" + } + ], "number": 76, - "title": "Close #75, properly preform test", - "url": "https://github.com/hapijs/hoek/pull/76" - }, - { - "id": 40954916, - "labels": ["bug", "test"], - "number": 75, - "title": "Test 43 case for applyToDefaults not accurately testing", - "url": "https://github.com/hapijs/hoek/issues/75" - } - ], - "number": 9, - "url": "https://github.com/hapijs/hoek/milestone/9", - "version": "2.5.0" - }, - { - "date": "2014-08-05T01:26:40Z", - "id": 740457, - "issues": [ - { - "id": 39323817, - "labels": ["feature"], - "number": 71, - "title": "Allow assert to be optimized", - "url": "https://github.com/hapijs/hoek/pull/71" - } - ], - "number": 8, - "url": "https://github.com/hapijs/hoek/milestone/8", - "version": "2.4.1" - }, - { - "date": "2014-08-02T07:22:36Z", - "id": 671134, - "issues": [ - { - "id": 39343975, - "labels": ["documentation"], + "url": "https://github.com/hapijs/hoek/milestone/76", + "version": "8.2.3" + }, + { + "date": "2019-09-08T19:10:08Z", + "id": 4567374, + "issues": [], + "number": 73, + "url": "https://github.com/hapijs/hoek/milestone/73", + "version": "8.2.2" + }, + { + "date": "2019-08-12T19:48:25Z", + "id": 4556604, + "issues": [ + { + "id": 478755975, + "labels": ["bug"], + "number": 324, + "title": "Fix empty ref bug in contain when only is true", + "url": "https://github.com/hapijs/hoek/pull/324" + }, + { + "id": 478753983, + "labels": ["bug"], + "number": 323, + "title": "contain() is always true for empty ref with only and not once", + "url": "https://github.com/hapijs/hoek/issues/323" + } + ], "number": 72, - "title": "Rename spumko to hapijs", - "url": "https://github.com/hapijs/hoek/issues/72" - }, - { - "id": 39222021, - "labels": ["bug"], + "url": "https://github.com/hapijs/hoek/milestone/72", + "version": "8.2.1" + }, + { + "date": "2019-08-07T21:35:23Z", + "id": 4519353, + "issues": [ + { + "id": 478126911, + "labels": ["feature"], + "number": 322, + "title": "Break methods for deep require", + "url": "https://github.com/hapijs/hoek/issues/322" + }, + { + "id": 478121471, + "labels": ["feature"], + "number": 321, + "title": "Handle no Buffer support", + "url": "https://github.com/hapijs/hoek/issues/321" + } + ], + "number": 71, + "url": "https://github.com/hapijs/hoek/milestone/71", + "version": "8.2.0" + }, + { + "date": "2019-07-24T17:41:28Z", + "id": 4455481, + "issues": [ + { + "id": 472411068, + "labels": ["feature"], + "number": 319, + "title": "skip and deepFunction options for deepEqual()", + "url": "https://github.com/hapijs/hoek/issues/319" + } + ], "number": 70, - "title": "Protect against null prototypes", - "url": "https://github.com/hapijs/hoek/pull/70" - }, - { - "id": 38734702, - "labels": ["feature"], + "url": "https://github.com/hapijs/hoek/milestone/70", + "version": "8.1.0" + }, + { + "date": "2019-07-01T16:54:08Z", + "id": 4443949, + "issues": [ + { + "id": 462815163, + "labels": ["bug"], + "number": 317, + "title": "Restore ability to assert with pre-made error", + "url": "https://github.com/hapijs/hoek/issues/317" + } + ], + "number": 69, + "url": "https://github.com/hapijs/hoek/milestone/69", + "version": "8.0.2" + }, + { + "date": "2019-06-26T17:18:20Z", + "id": 4441949, + "issues": [ + { + "id": 460838460, + "labels": ["bug"], + "number": 316, + "title": "Make assert() generate a named Error so bounce can identify", + "url": "https://github.com/hapijs/hoek/issues/316" + } + ], "number": 68, - "title": "Transform Function", - "url": "https://github.com/hapijs/hoek/pull/68" - }, - { - "id": 37989845, - "labels": ["feature", "documentation"], + "url": "https://github.com/hapijs/hoek/milestone/68", + "version": "8.0.1" + }, + { + "date": "2019-06-26T05:57:21Z", + "id": 4432735, + "issues": [ + { + "id": 460774906, + "labels": ["breaking changes", "release notes"], + "number": 315, + "title": "v8.0.0 Release Notes", + "url": "https://github.com/hapijs/hoek/issues/315" + }, + { + "id": 460774350, + "labels": ["breaking changes"], + "number": 314, + "title": "Change assert() AssertionError to Error", + "url": "https://github.com/hapijs/hoek/issues/314" + }, + { + "id": 460769468, + "labels": ["breaking changes"], + "number": 313, + "title": "Remove uniqueFilename()", + "url": "https://github.com/hapijs/hoek/issues/313" + } + ], + "number": 67, + "url": "https://github.com/hapijs/hoek/milestone/67", + "version": "8.0.0" + }, + { + "date": "2019-06-23T04:10:44Z", + "id": 4431901, + "issues": [ + { + "id": 459534336, + "labels": ["feature"], + "number": 312, + "title": "Minor performance", + "url": "https://github.com/hapijs/hoek/issues/312" + } + ], "number": 66, - "title": "Default Value for Reach", - "url": "https://github.com/hapijs/hoek/pull/66" - }, - { - "id": 35951554, - "labels": ["bug"], + "url": "https://github.com/hapijs/hoek/milestone/66", + "version": "7.2.1" + }, + { + "date": "2019-06-22T03:50:14Z", + "id": 4367023, + "issues": [ + { + "id": 459430774, + "labels": ["feature"], + "number": 311, + "title": "Support reach into Set and Map objects", + "url": "https://github.com/hapijs/hoek/issues/311" + } + ], + "number": 65, + "url": "https://github.com/hapijs/hoek/milestone/65", + "version": "7.2.0" + }, + { + "date": "2019-06-01T17:49:13Z", + "id": 4366103, + "issues": [ + { + "id": 451108766, + "labels": ["feature"], + "number": 308, + "title": "Shallow clone of entire object", + "url": "https://github.com/hapijs/hoek/issues/308" + } + ], + "number": 64, + "url": "https://github.com/hapijs/hoek/milestone/64", + "version": "7.1.0" + }, + { + "date": "2019-05-31T21:38:24Z", + "id": 4350024, + "issues": [ + { + "id": 450993414, + "labels": ["breaking changes", "release notes"], + "number": 306, + "title": "v7.0.0 Release Notes", + "url": "https://github.com/hapijs/hoek/issues/306" + }, + { + "id": 450990375, + "labels": ["feature", "breaking changes"], + "number": 305, + "title": "Support symbols in merge()", + "url": "https://github.com/hapijs/hoek/issues/305" + }, + { + "id": 450978592, + "labels": ["breaking changes"], + "number": 304, + "title": "Replace applyToDefaultsWithShallow() with applyToDefaults(..., { shallow })", + "url": "https://github.com/hapijs/hoek/issues/304" + }, + { + "id": 450970637, + "labels": ["breaking changes"], + "number": 303, + "title": "Replace cloneWithShallow() with clone(value, { shallow })", + "url": "https://github.com/hapijs/hoek/issues/303" + }, + { + "id": 386438346, + "labels": ["breaking changes"], + "number": 285, + "title": "Change all individual option arguments to { options } object", + "url": "https://github.com/hapijs/hoek/issues/285" + }, + { + "id": 386438231, + "labels": ["breaking changes"], + "number": 284, + "title": "Default handling of symbols to true by default", + "url": "https://github.com/hapijs/hoek/issues/284" + } + ], + "number": 63, + "url": "https://github.com/hapijs/hoek/milestone/63", + "version": "7.0.0" + }, + { + "date": "2019-09-01T07:35:48Z", + "id": 4570553, + "issues": [ + { + "id": 487852623, + "labels": ["bug"], + "number": 328, + "title": "deepEqual() skip fails when number of keys is diff", + "url": "https://github.com/hapijs/hoek/issues/328" + } + ], + "number": 74, + "url": "https://github.com/hapijs/hoek/milestone/74", + "version": "6.2.6" + }, + { + "date": "2019-05-27T00:44:26Z", + "id": 4325856, + "issues": [ + { + "id": 447869097, + "labels": ["bug"], + "number": 302, + "title": "Fix clone of subclassed Set and Map", + "url": "https://github.com/hapijs/hoek/pull/302" + }, + { + "id": 447697314, + "labels": ["bug"], + "number": 301, + "title": "Fix: Add map and set to seen map", + "url": "https://github.com/hapijs/hoek/pull/301" + }, + { + "id": 447367853, + "labels": ["bug"], + "number": 300, + "title": "Stack overflow in clone in v6.2.3", + "url": "https://github.com/hapijs/hoek/issues/300" + }, + { + "id": 445627953, + "labels": ["types"], + "number": 298, + "title": "Typescript enhancements", + "url": "https://github.com/hapijs/hoek/pull/298" + } + ], "number": 62, - "title": "Cannot read property 'isImmutable' of null", - "url": "https://github.com/hapijs/hoek/issues/62" - } - ], - "number": 7, - "url": "https://github.com/hapijs/hoek/milestone/7", - "version": "2.4.0" - }, - { - "date": "2014-05-26T18:23:22Z", - "id": 663989, - "issues": [ - { - "id": 34322828, - "labels": ["bug"], - "number": 59, - "title": "merge() shallow copies array members when merging", - "url": "https://github.com/hapijs/hoek/issues/59" - }, - { - "id": 34321461, - "labels": ["feature"], + "url": "https://github.com/hapijs/hoek/milestone/62", + "version": "6.2.4" + }, + { + "date": "2019-05-17T20:15:56Z", + "id": 4325850, + "issues": [ + { + "id": 445788640, + "labels": ["bug", "breaking changes"], + "number": 299, + "title": "Set deepEqual() prototype option to true by default, not just when no options are passed", + "url": "https://github.com/hapijs/hoek/issues/299" + }, + { + "id": 445561512, + "labels": ["bug"], + "number": 297, + "title": "Clone Map and Set", + "url": "https://github.com/hapijs/hoek/pull/297" + }, + { + "id": 292777807, + "labels": ["bug"], + "number": 228, + "title": "Hoek.clone() issues", + "url": "https://github.com/hapijs/hoek/issues/228" + } + ], + "number": 61, + "url": "https://github.com/hapijs/hoek/milestone/61", + "version": "6.2.3" + }, + { + "date": "2019-05-17T20:11:07Z", + "id": 4184482, + "issues": [ + { + "id": 445110839, + "labels": ["types"], + "number": 295, + "title": "Bootstrap types from @types", + "url": "https://github.com/hapijs/hoek/issues/295" + }, + { + "id": 440457589, + "labels": ["bug"], + "number": 294, + "title": "Handle promises in deepEqual()", + "url": "https://github.com/hapijs/hoek/pull/294" + } + ], + "number": 60, + "url": "https://github.com/hapijs/hoek/milestone/60", + "version": "6.2.2" + }, + { + "date": "2019-03-29T22:27:48Z", + "id": 4175362, + "issues": [ + { + "id": 427200260, + "labels": ["dependency"], + "number": 291, + "title": "Update deps", + "url": "https://github.com/hapijs/hoek/issues/291" + } + ], "number": 58, - "title": "Shallow copy objects with prototype.isImmutable flag", - "url": "https://github.com/hapijs/hoek/issues/58" - }, - { - "id": 34320827, - "labels": ["bug"], - "number": 57, - "title": "clone() creates multiple copies of the same date, regex, or buffer object", - "url": "https://github.com/hapijs/hoek/issues/57" - } - ], - "number": 6, - "url": "https://github.com/hapijs/hoek/milestone/6", - "version": "2.2.0" - }, - { - "date": "2014-05-20T03:53:26Z", - "id": 637427, - "issues": [ - { - "id": 32958885, - "labels": ["bug"], + "url": "https://github.com/hapijs/hoek/milestone/58", + "version": "6.2.1" + }, + { + "date": "2019-03-27T00:22:51Z", + "id": 3863004, + "issues": [ + { + "id": 425703347, + "labels": ["non issue"], + "number": 289, + "title": "Change module namespace", + "url": "https://github.com/hapijs/hoek/issues/289" + } + ], + "number": 55, + "url": "https://github.com/hapijs/hoek/milestone/55", + "version": "6.2.0" + }, + { + "date": "2019-03-27T00:32:39Z", + "id": 4175370, + "issues": [ + { + "id": 425706281, + "labels": ["bug"], + "number": 290, + "title": "Fix clone without prototype", + "url": "https://github.com/hapijs/hoek/issues/290" + } + ], + "number": 59, + "url": "https://github.com/hapijs/hoek/milestone/59", + "version": "6.1.3" + }, + { + "date": "2018-12-01T08:36:56Z", + "id": 3856306, + "issues": [ + { + "id": 386438043, + "labels": ["bug"], + "number": 283, + "title": "Revert cloning of symbols to false by default", + "url": "https://github.com/hapijs/hoek/issues/283" + } + ], "number": 54, - "title": "Detect [[Class]] instead of using instanceof", - "url": "https://github.com/hapijs/hoek/issues/54" - } - ], - "number": 5, - "url": "https://github.com/hapijs/hoek/milestone/5", - "version": "2.1.1" - }, - { - "date": "2014-04-22T22:20:21Z", - "id": 637426, - "issues": [ - { - "id": 32016089, - "labels": ["feature"], + "url": "https://github.com/hapijs/hoek/milestone/54", + "version": "6.1.2" + }, + { + "date": "2018-11-28T22:32:05Z", + "id": 3844987, + "issues": [ + { + "id": 385483648, + "labels": ["bug"], + "number": 282, + "title": "Ignore symbols by default in deepEqual()", + "url": "https://github.com/hapijs/hoek/issues/282" + }, + { + "id": 384291597, + "labels": ["feature"], + "number": 281, + "title": "Symbol support", + "url": "https://github.com/hapijs/hoek/pull/281" + } + ], + "number": 53, + "url": "https://github.com/hapijs/hoek/milestone/53", + "version": "6.1.1" + }, + { + "date": "2018-11-24T12:40:20Z", + "id": 3811315, + "issues": [ + { + "id": 383948594, + "labels": ["bug"], + "number": 278, + "title": "Hoek.clone() defineProperty issue", + "url": "https://github.com/hapijs/hoek/issues/278" + } + ], + "number": 52, + "url": "https://github.com/hapijs/hoek/milestone/52", + "version": "6.0.4" + }, + { + "date": "2018-11-11T02:30:10Z", + "id": 3801074, + "issues": [ + { + "id": 378510277, + "labels": ["bug"], + "number": 277, + "title": "Don't apply part option to contain() by default", + "url": "https://github.com/hapijs/hoek/pull/277" + } + ], "number": 51, - "title": "Add isInteger()", - "url": "https://github.com/hapijs/hoek/issues/51" - }, - { - "id": 31246084, - "labels": ["feature"], + "url": "https://github.com/hapijs/hoek/milestone/51", + "version": "6.0.3" + }, + { + "date": "2018-11-06T17:42:37Z", + "id": 3792340, + "issues": [ + { + "id": 377943958, + "labels": ["bug"], + "number": 276, + "title": "Fix contain() with duplicates and only", + "url": "https://github.com/hapijs/hoek/pull/276" + } + ], + "number": 50, + "url": "https://github.com/hapijs/hoek/milestone/50", + "version": "6.0.2" + }, + { + "date": "2018-11-03T00:52:45Z", + "id": 3787373, + "issues": [ + { + "id": 377008000, + "labels": ["non issue"], + "number": 274, + "title": "Remove engines", + "url": "https://github.com/hapijs/hoek/issues/274" + } + ], "number": 49, - "title": "match() -> test()", - "url": "https://github.com/hapijs/hoek/pull/49" - } - ], - "number": 4, - "url": "https://github.com/hapijs/hoek/milestone/4", - "version": "2.1.0" - }, - { - "date": "2014-04-22T22:18:45Z", - "id": 580315, - "issues": [ - { - "id": 30962851, - "labels": ["test"], + "url": "https://github.com/hapijs/hoek/milestone/49", + "version": "6.0.1" + }, + { + "date": "2018-11-01T06:59:31Z", + "id": 3555593, + "issues": [ + { + "id": 348726048, + "labels": ["breaking changes"], + "number": 268, + "title": "API deprecations", + "url": "https://github.com/hapijs/hoek/issues/268" + }, + { + "id": 333545166, + "labels": ["bug"], + "number": 260, + "title": "deepEqual does not check both sides in full", + "url": "https://github.com/hapijs/hoek/issues/260" + }, + { + "id": 324710895, + "labels": ["bug", "feature"], + "number": 254, + "title": "Add Map and Set support to deepEqual()", + "url": "https://github.com/hapijs/hoek/pull/254" + }, + { + "id": 303263658, + "labels": ["bug", "feature"], + "number": 242, + "title": "Rework deepEqual()", + "url": "https://github.com/hapijs/hoek/pull/242" + }, + { + "id": 299983602, + "labels": ["bug"], + "number": 238, + "title": "deepEqual and array properties", + "url": "https://github.com/hapijs/hoek/issues/238" + }, + { + "id": 299135794, + "labels": ["bug"], + "number": 236, + "title": "Hoek.deepEqual false positive", + "url": "https://github.com/hapijs/hoek/issues/236" + } + ], "number": 48, - "title": "Bring coverage back to 100% after lab logical statement support", - "url": "https://github.com/hapijs/hoek/issues/48" - }, - { - "id": 30962819, - "labels": ["feature"], + "url": "https://github.com/hapijs/hoek/milestone/48", + "version": "6.0.0" + }, + { + "date": "2018-08-10T20:35:02Z", + "id": 3555591, + "issues": [ + { + "id": 349648559, + "labels": ["bug"], + "number": 269, + "title": "Try object ref comparison first in deepClone()", + "url": "https://github.com/hapijs/hoek/pull/269" + } + ], "number": 47, - "title": "Add isAbsolutePath for unix and windows when using node <0.11", - "url": "https://github.com/hapijs/hoek/issues/47" - }, - { - "id": 29981367, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/hoek/milestone/47", + "version": "5.0.4" + }, + { + "date": "2018-05-17T20:31:21Z", + "id": 2885305, + "issues": [ + { + "id": 292757075, + "labels": ["bug"], + "number": 227, + "title": "Don't use deprecated new Buffer() api", + "url": "https://github.com/hapijs/hoek/pull/227" + } + ], "number": 46, - "title": "Cleanup API and remove/move unused functions", - "url": "https://github.com/hapijs/hoek/issues/46" - } - ], - "number": 1, - "url": "https://github.com/hapijs/hoek/milestone/1", - "version": "2.0.0" - }, - { - "date": "2014-03-23T05:22:33Z", - "id": 603052, - "issues": [ - { - "id": 29493018, - "labels": ["bug"], + "url": "https://github.com/hapijs/hoek/milestone/46", + "version": "5.0.3" + }, + { + "date": "2017-11-03T07:57:34Z", + "id": 2866784, + "issues": [ + { + "id": 270900421, + "labels": ["dependency"], + "number": 221, + "title": "Update deps", + "url": "https://github.com/hapijs/hoek/issues/221" + }, + { + "id": 270704251, + "labels": ["feature"], + "number": 220, + "title": "Throw instances of AssertionError on asserts", + "url": "https://github.com/hapijs/hoek/pull/220" + } + ], "number": 45, - "title": "Rename should throw an error for invalid property . ", - "url": "https://github.com/hapijs/hoek/pull/45" - } - ], - "number": 3, - "url": "https://github.com/hapijs/hoek/milestone/3", - "version": "1.5.2" - }, - { - "date": "2014-03-06T22:42:19Z", - "id": 589828, - "issues": [ - { - "id": 28916036, - "labels": ["test"], + "url": "https://github.com/hapijs/hoek/milestone/45", + "version": "5.0.2" + }, + { + "date": "2017-10-26T08:22:31Z", + "id": 2793761, + "issues": [ + { + "id": 268667074, + "labels": ["bug", "breaking changes"], + "number": 218, + "title": "base64urlDecode() should throw, not return errors", + "url": "https://github.com/hapijs/hoek/issues/218" + } + ], "number": 44, - "title": "Bring coverage back to 100% after lab fix", - "url": "https://github.com/hapijs/hoek/issues/44" - } - ], - "number": 2, - "url": "https://github.com/hapijs/hoek/milestone/2", - "version": "1.5.1" - } + "url": "https://github.com/hapijs/hoek/milestone/44", + "version": "5.0.1" + }, + { + "date": "2017-09-26T04:22:34Z", + "id": 2646163, + "issues": [ + { + "id": 260486505, + "labels": ["breaking changes"], + "number": 212, + "title": "Remove nextTick()", + "url": "https://github.com/hapijs/hoek/issues/212" + }, + { + "id": 260484570, + "labels": ["breaking changes"], + "number": 211, + "title": "Remove Timer", + "url": "https://github.com/hapijs/hoek/issues/211" + }, + { + "id": 260484408, + "labels": ["breaking changes"], + "number": 210, + "title": "Require node v8", + "url": "https://github.com/hapijs/hoek/issues/210" + }, + { + "id": 258333940, + "labels": ["feature"], + "number": 206, + "title": "Add a wait() method", + "url": "https://github.com/hapijs/hoek/issues/206" + } + ], + "number": 43, + "url": "https://github.com/hapijs/hoek/milestone/43", + "version": "5.0.0" + }, + { + "date": "2019-03-21T23:05:55Z", + "id": 4162359, + "issues": [ + { + "id": 423979171, + "labels": ["lts"], + "number": 288, + "title": "Commercial version for 4.x branch", + "url": "https://github.com/hapijs/hoek/issues/288" + } + ], + "number": 56, + "url": "https://github.com/hapijs/hoek/milestone/56", + "version": "4.3.0" + }, + { + "date": "2017-07-17T22:15:39Z", + "id": 2425278, + "issues": [ + { + "id": 219396302, + "labels": ["feature"], + "number": 204, + "title": "Add escape json", + "url": "https://github.com/hapijs/hoek/pull/204" + } + ], + "number": 42, + "url": "https://github.com/hapijs/hoek/milestone/42", + "version": "4.2.0" + }, + { + "date": "2017-03-31T19:02:30Z", + "id": 2014665, + "issues": [ + { + "id": 218577013, + "labels": ["bug"], + "number": 203, + "title": "Fix isInteger for unsafe integers", + "url": "https://github.com/hapijs/hoek/pull/203" + } + ], + "number": 41, + "url": "https://github.com/hapijs/hoek/milestone/41", + "version": "4.1.1" + }, + { + "date": "2016-09-19T18:31:44Z", + "id": 1907888, + "issues": [ + { + "id": 177606141, + "labels": ["feature"], + "number": 197, + "title": "Enhancement: Make contain see non-enumerable's", + "url": "https://github.com/hapijs/hoek/pull/197" + } + ], + "number": 40, + "url": "https://github.com/hapijs/hoek/milestone/40", + "version": "4.1.0" + }, + { + "date": "2016-07-27T18:49:58Z", + "id": 1802856, + "issues": [ + { + "id": 167926452, + "labels": ["documentation"], + "number": 195, + "title": "npmignore", + "url": "https://github.com/hapijs/hoek/issues/195" + } + ], + "number": 39, + "url": "https://github.com/hapijs/hoek/milestone/39", + "version": "4.0.2" + }, + { + "date": "2016-06-01T17:13:11Z", + "id": 1802807, + "issues": [ + { + "id": 157957342, + "labels": ["test"], + "number": 191, + "title": "update to code 3.x.x", + "url": "https://github.com/hapijs/hoek/issues/191" + }, + { + "id": 157696964, + "labels": ["feature"], + "number": 190, + "title": "Use map for cloning memoizer", + "url": "https://github.com/hapijs/hoek/pull/190" + } + ], + "number": 38, + "url": "https://github.com/hapijs/hoek/milestone/38", + "version": "4.0.1" + }, + { + "date": "2016-06-01T16:49:28Z", + "id": 1411869, + "issues": [ + { + "id": 150943265, + "labels": ["test", "dependency"], + "number": 186, + "title": "update lab", + "url": "https://github.com/hapijs/hoek/issues/186" + }, + { + "id": 145917518, + "labels": ["feature"], + "number": 185, + "title": "improve .unique to make use of es6 `Set` performance", + "url": "https://github.com/hapijs/hoek/pull/185" + }, + { + "id": 145627031, + "labels": ["feature"], + "number": 184, + "title": "improve .unique performance", + "url": "https://github.com/hapijs/hoek/issues/184" + }, + { + "id": 145007404, + "labels": ["bug"], + "number": 183, + "title": "Fix for issue #177", + "url": "https://github.com/hapijs/hoek/pull/183" + }, + { + "id": 144975941, + "labels": ["breaking changes"], + "number": 181, + "title": "removed isAbsolutePath method", + "url": "https://github.com/hapijs/hoek/pull/181" + }, + { + "id": 144741934, + "labels": ["feature"], + "number": 180, + "title": "refactor(merge): use !== rather than ^", + "url": "https://github.com/hapijs/hoek/pull/180" + }, + { + "id": 137368992, + "labels": ["feature"], + "number": 179, + "title": "isAbsolutePath obsolete?", + "url": "https://github.com/hapijs/hoek/issues/179" + }, + { + "id": 127530221, + "labels": ["bug", "security"], + "number": 177, + "title": "Assert when value is not a string", + "url": "https://github.com/hapijs/hoek/issues/177" + }, + { + "id": 56808333, + "labels": ["bug", "breaking changes"], + "number": 124, + "title": "transform method does not respect separator option", + "url": "https://github.com/hapijs/hoek/issues/124" + } + ], + "number": 37, + "url": "https://github.com/hapijs/hoek/milestone/37", + "version": "4.0.0" + }, + { + "date": "2015-11-14T21:47:33Z", + "id": 1411865, + "issues": [ + { + "id": 100729194, + "labels": ["feature"], + "number": 152, + "title": "Hoek.reach and non standard JS objects", + "url": "https://github.com/hapijs/hoek/issues/152" + } + ], + "number": 36, + "url": "https://github.com/hapijs/hoek/milestone/36", + "version": "3.0.4" + }, + { + "date": "2015-11-14T21:40:05Z", + "id": 1411856, + "issues": [ + { + "id": 113065165, + "labels": ["bug"], + "number": 164, + "title": "Hoek.deepEqual providing false positive result", + "url": "https://github.com/hapijs/hoek/issues/164" + } + ], + "number": 35, + "url": "https://github.com/hapijs/hoek/milestone/35", + "version": "3.0.3" + }, + { + "date": "2015-11-14T21:31:24Z", + "id": 1386790, + "issues": [ + { + "id": 116953077, + "labels": ["bug"], + "number": 173, + "title": "fix linting error", + "url": "https://github.com/hapijs/hoek/issues/173" + }, + { + "id": 116951068, + "labels": ["documentation"], + "number": 171, + "title": "fix mapToObject documentation", + "url": "https://github.com/hapijs/hoek/pull/171" + } + ], + "number": 34, + "url": "https://github.com/hapijs/hoek/milestone/34", + "version": "3.0.2" + }, + { + "date": "2015-10-31T16:52:58Z", + "id": 1386789, + "issues": [ + { + "id": 114420785, + "labels": ["bug"], + "number": 169, + "title": "Lint errors. Closes #168", + "url": "https://github.com/hapijs/hoek/pull/169" + }, + { + "id": 114420729, + "labels": ["bug"], + "number": 168, + "title": "ES6 lint errors", + "url": "https://github.com/hapijs/hoek/issues/168" + } + ], + "number": 33, + "url": "https://github.com/hapijs/hoek/milestone/33", + "version": "3.0.1" + }, + { + "date": "2015-10-31T16:52:12Z", + "id": 1316931, + "issues": [ + { + "id": 114337139, + "labels": ["feature", "breaking changes", "dependency"], + "number": 167, + "title": "Es6", + "url": "https://github.com/hapijs/hoek/pull/167" + }, + { + "id": 114336956, + "labels": ["feature", "breaking changes", "dependency"], + "number": 166, + "title": "ES6 style, node v4", + "url": "https://github.com/hapijs/hoek/issues/166" + }, + { + "id": 113452852, + "labels": ["bug"], + "number": 165, + "title": "es6 updates WIP", + "url": "https://github.com/hapijs/hoek/pull/165" + } + ], + "number": 32, + "url": "https://github.com/hapijs/hoek/milestone/32", + "version": "3.0.0" + }, + { + "date": "2015-09-21T17:47:59Z", + "id": 1309025, + "issues": [ + { + "id": 107561940, + "labels": ["bug"], + "number": 162, + "title": "Hoek.clone on process.env", + "url": "https://github.com/hapijs/hoek/issues/162" + } + ], + "number": 31, + "url": "https://github.com/hapijs/hoek/milestone/31", + "version": "2.16.3" + }, + { + "date": "2015-09-16T18:31:14Z", + "id": 1308896, + "issues": [ + { + "id": 106833241, + "labels": ["bug"], + "number": 161, + "title": "hoek.reach should allow empty keys", + "url": "https://github.com/hapijs/hoek/issues/161" + } + ], + "number": 30, + "url": "https://github.com/hapijs/hoek/milestone/30", + "version": "2.16.2" + }, + { + "date": "2015-09-16T17:08:13Z", + "id": 1308892, + "issues": [ + { + "id": 106817523, + "labels": ["feature"], + "number": 160, + "title": "cleanup loop from #148", + "url": "https://github.com/hapijs/hoek/issues/160" + } + ], + "number": 29, + "url": "https://github.com/hapijs/hoek/milestone/29", + "version": "2.16.1" + }, + { + "date": "2015-09-16T17:07:24Z", + "id": 1301394, + "issues": [ + { + "id": 106659960, + "labels": ["feature"], + "number": 159, + "title": "Allow reach to work with falsy values (empty str)", + "url": "https://github.com/hapijs/hoek/pull/159" + } + ], + "number": 28, + "url": "https://github.com/hapijs/hoek/milestone/28", + "version": "2.16.0" + }, + { + "date": "2015-09-11T16:19:04Z", + "id": 1126262, + "issues": [ + { + "id": 80042520, + "labels": ["feature"], + "number": 148, + "title": "generalize Hoek.transform to accept an array of objects", + "url": "https://github.com/hapijs/hoek/pull/148" + } + ], + "number": 27, + "url": "https://github.com/hapijs/hoek/milestone/27", + "version": "2.15.0" + }, + { + "date": "2015-05-22T18:14:55Z", + "id": 1126191, + "issues": [ + { + "id": 79551636, + "labels": ["feature"], + "number": 147, + "title": "Reach template", + "url": "https://github.com/hapijs/hoek/pull/147" + }, + { + "id": 79551111, + "labels": ["feature"], + "number": 146, + "title": "Add reachTemplate() to apply reach() functionality to a templatized string", + "url": "https://github.com/hapijs/hoek/issues/146" + }, + { + "id": 67383952, + "labels": ["bug"], + "number": 139, + "title": "Clone fails on objects with null prototypes", + "url": "https://github.com/hapijs/hoek/issues/139" + } + ], + "number": 26, + "url": "https://github.com/hapijs/hoek/milestone/26", + "version": "2.14.0" + }, + { + "date": "2015-05-22T17:36:55Z", + "id": 1124373, + "issues": [ + { + "id": 79212609, + "labels": ["bug"], + "number": 145, + "title": "options for deepEqual don't pass on to recursive calls in arrays", + "url": "https://github.com/hapijs/hoek/issues/145" + }, + { + "id": 64229154, + "labels": ["bug"], + "number": 134, + "title": "Allow for deep partial contain", + "url": "https://github.com/hapijs/hoek/pull/134" + } + ], + "number": 25, + "url": "https://github.com/hapijs/hoek/milestone/25", + "version": "2.13.1" + }, + { + "date": "2015-05-04T20:40:49Z", + "id": 1091321, + "issues": [ + { + "id": 68815236, + "labels": ["feature"], + "number": 140, + "title": "Add isNullOverride to applyToDefaults", + "url": "https://github.com/hapijs/hoek/pull/140" + } + ], + "number": 23, + "url": "https://github.com/hapijs/hoek/milestone/23", + "version": "2.13.0" + }, + { + "date": "2015-03-24T17:17:33Z", + "id": 1036682, + "issues": [ + { + "id": 62136164, + "labels": ["feature"], + "number": 133, + "title": "Added option parameter to deepEqual.", + "url": "https://github.com/hapijs/hoek/pull/133" + } + ], + "number": 21, + "url": "https://github.com/hapijs/hoek/milestone/21", + "version": "2.12.0" + }, + { + "date": "2015-02-28T00:05:42Z", + "id": 922462, + "issues": [ + { + "id": 59151133, + "labels": ["bug"], + "number": 131, + "title": "Clone even non-enumerable properties.", + "url": "https://github.com/hapijs/hoek/pull/131" + }, + { + "id": 59079513, + "labels": ["bug"], + "number": 130, + "title": "Hoek.deepEqual({a: 'foo'}, {a: 'foo', b: 'bar'}) return true", + "url": "https://github.com/hapijs/hoek/issues/130" + }, + { + "id": 58515874, + "labels": ["bug"], + "number": 128, + "title": "Fix deepEqual on empty objects. Fixes #127.", + "url": "https://github.com/hapijs/hoek/pull/128" + }, + { + "id": 58513974, + "labels": ["bug"], + "number": 127, + "title": "deepEqual behaving unexpectedly with empty object", + "url": "https://github.com/hapijs/hoek/issues/127" + } + ], + "number": 19, + "url": "https://github.com/hapijs/hoek/milestone/19", + "version": "2.11.1" + }, + { + "date": "2015-01-05T17:28:19Z", + "id": 882194, + "issues": [ + { + "id": 51616410, + "labels": ["feature"], + "number": 117, + "title": "Throw error directly if it is the only thing passed in as the message", + "url": "https://github.com/hapijs/hoek/pull/117" + }, + { + "id": 51614408, + "labels": ["feature"], + "number": 116, + "title": "Hoek.assert - throw error that is passed in as message", + "url": "https://github.com/hapijs/hoek/issues/116" + }, + { + "id": 51140190, + "labels": ["feature"], + "number": 115, + "title": "Adds ability to do Hoek.reach with negative index", + "url": "https://github.com/hapijs/hoek/pull/115" + } + ], + "number": 18, + "url": "https://github.com/hapijs/hoek/milestone/18", + "version": "2.11.0" + }, + { + "date": "2014-11-27T04:03:53Z", + "id": 881986, + "issues": [ + { + "id": 50252060, + "labels": ["feature"], + "number": 110, + "title": "enhance withShallow methods to support nested keys. Closes #109", + "url": "https://github.com/hapijs/hoek/pull/110" + }, + { + "id": 50252005, + "labels": ["feature"], + "number": 109, + "title": "Enhance shallow clone methods to support nested keys", + "url": "https://github.com/hapijs/hoek/issues/109" + } + ], + "number": 17, + "url": "https://github.com/hapijs/hoek/milestone/17", + "version": "2.10.0" + }, + { + "date": "2014-11-26T22:17:46Z", + "id": 860468, + "issues": [ + { + "id": 50232245, + "labels": ["bug"], + "number": 108, + "title": "Fix applyToDefaultsWithShallow default clone. Closes #107", + "url": "https://github.com/hapijs/hoek/pull/108" + }, + { + "id": 50223210, + "labels": ["bug"], + "number": 107, + "title": "applyToDefaultsWithShallow() fail to retain defaults shallow key", + "url": "https://github.com/hapijs/hoek/issues/107" + } + ], + "number": 16, + "url": "https://github.com/hapijs/hoek/milestone/16", + "version": "2.9.1" + }, + { + "date": "2014-11-10T18:01:32Z", + "id": 838006, + "issues": [ + { + "id": 48241213, + "labels": ["bug", "feature"], + "number": 106, + "title": "Clone, shallow, and stringify", + "url": "https://github.com/hapijs/hoek/pull/106" + }, + { + "id": 48241136, + "labels": ["feature"], + "number": 105, + "title": "Move shallow and stringify from hapi", + "url": "https://github.com/hapijs/hoek/issues/105" + }, + { + "id": 48239865, + "labels": ["bug"], + "number": 104, + "title": "Clone fails to copy object property if only setter used", + "url": "https://github.com/hapijs/hoek/issues/104" + } + ], + "number": 15, + "url": "https://github.com/hapijs/hoek/milestone/15", + "version": "2.9.0" + }, + { + "date": "2014-10-23T18:14:31Z", + "id": 832958, + "issues": [ + { + "id": 46656074, + "labels": ["bug"], + "number": 103, + "title": "avoid hasOwnProperty so plain objects work", + "url": "https://github.com/hapijs/hoek/pull/103" + }, + { + "id": 46655922, + "labels": ["bug"], + "number": 102, + "title": "Plain objects can't be compared.", + "url": "https://github.com/hapijs/hoek/issues/102" + } + ], + "number": 14, + "url": "https://github.com/hapijs/hoek/milestone/14", + "version": "2.8.1" + }, + { + "date": "2014-10-20T16:21:17Z", + "id": 830543, + "issues": [ + { + "id": 46235152, + "labels": ["bug"], + "number": 99, + "title": "assert() adds whitespace even when arguments are empty", + "url": "https://github.com/hapijs/hoek/issues/99" + }, + { + "id": 46167789, + "labels": ["bug", "feature"], + "number": 97, + "title": "Add contain()", + "url": "https://github.com/hapijs/hoek/pull/97" + }, + { + "id": 46167781, + "labels": ["feature"], + "number": 96, + "title": "Add contain() comparison function for strings, objects, and arrays", + "url": "https://github.com/hapijs/hoek/issues/96" + }, + { + "id": 46166656, + "labels": ["bug"], + "number": 95, + "title": "deepEqual() fails to compare arrays with non literal members", + "url": "https://github.com/hapijs/hoek/issues/95" + } + ], + "number": 13, + "url": "https://github.com/hapijs/hoek/milestone/13", + "version": "2.8.0" + }, + { + "date": "2014-10-17T18:01:24Z", + "id": 826060, + "issues": [ + { + "id": 46072092, + "labels": ["feature"], + "number": 94, + "title": "deepEqual", + "url": "https://github.com/hapijs/hoek/pull/94" + } + ], + "number": 12, + "url": "https://github.com/hapijs/hoek/milestone/12", + "version": "2.7.0" + }, + { + "date": "2014-10-14T16:58:59Z", + "id": 810540, + "issues": [ + { + "id": 45525377, + "labels": ["bug"], + "number": 93, + "title": "dont execute getters when cloning", + "url": "https://github.com/hapijs/hoek/pull/93" + }, + { + "id": 45033118, + "labels": ["feature"], + "number": 91, + "title": "Added util.format", + "url": "https://github.com/hapijs/hoek/pull/91" + }, + { + "id": 44718040, + "labels": ["bug"], + "number": 89, + "title": "Don't clone properties with getter by executing the getter", + "url": "https://github.com/hapijs/hoek/issues/89" + } + ], + "number": 10, + "url": "https://github.com/hapijs/hoek/milestone/10", + "version": "2.6.0" + }, + { + "date": "2014-10-10T21:01:24Z", + "id": 820415, + "issues": [ + { + "id": 44707328, + "labels": ["bug"], + "number": 88, + "title": "Allow falsey values to be used as default value in Hoek.reach()", + "url": "https://github.com/hapijs/hoek/pull/88" + } + ], + "number": 11, + "url": "https://github.com/hapijs/hoek/milestone/11", + "version": "2.5.1" + }, + { + "date": "2014-10-01T20:59:37Z", + "id": 742911, + "issues": [ + { + "id": 44020722, + "labels": ["feature"], + "number": 84, + "title": "Replaced __proto__ with Object.create()", + "url": "https://github.com/hapijs/hoek/pull/84" + }, + { + "id": 43343968, + "labels": ["feature"], + "number": 82, + "title": "uniqueFilename", + "url": "https://github.com/hapijs/hoek/pull/82" + }, + { + "id": 42074219, + "labels": ["feature"], + "number": 79, + "title": "Update to lab 4.x", + "url": "https://github.com/hapijs/hoek/issues/79" + }, + { + "id": 40955211, + "labels": ["test"], + "number": 76, + "title": "Close #75, properly preform test", + "url": "https://github.com/hapijs/hoek/pull/76" + }, + { + "id": 40954916, + "labels": ["bug", "test"], + "number": 75, + "title": "Test 43 case for applyToDefaults not accurately testing", + "url": "https://github.com/hapijs/hoek/issues/75" + } + ], + "number": 9, + "url": "https://github.com/hapijs/hoek/milestone/9", + "version": "2.5.0" + }, + { + "date": "2014-08-05T01:26:40Z", + "id": 740457, + "issues": [ + { + "id": 39323817, + "labels": ["feature"], + "number": 71, + "title": "Allow assert to be optimized", + "url": "https://github.com/hapijs/hoek/pull/71" + } + ], + "number": 8, + "url": "https://github.com/hapijs/hoek/milestone/8", + "version": "2.4.1" + }, + { + "date": "2014-08-02T07:22:36Z", + "id": 671134, + "issues": [ + { + "id": 39343975, + "labels": ["documentation"], + "number": 72, + "title": "Rename spumko to hapijs", + "url": "https://github.com/hapijs/hoek/issues/72" + }, + { + "id": 39222021, + "labels": ["bug"], + "number": 70, + "title": "Protect against null prototypes", + "url": "https://github.com/hapijs/hoek/pull/70" + }, + { + "id": 38734702, + "labels": ["feature"], + "number": 68, + "title": "Transform Function", + "url": "https://github.com/hapijs/hoek/pull/68" + }, + { + "id": 37989845, + "labels": ["feature", "documentation"], + "number": 66, + "title": "Default Value for Reach", + "url": "https://github.com/hapijs/hoek/pull/66" + }, + { + "id": 35951554, + "labels": ["bug"], + "number": 62, + "title": "Cannot read property 'isImmutable' of null", + "url": "https://github.com/hapijs/hoek/issues/62" + } + ], + "number": 7, + "url": "https://github.com/hapijs/hoek/milestone/7", + "version": "2.4.0" + }, + { + "date": "2014-05-26T18:23:22Z", + "id": 663989, + "issues": [ + { + "id": 34322828, + "labels": ["bug"], + "number": 59, + "title": "merge() shallow copies array members when merging", + "url": "https://github.com/hapijs/hoek/issues/59" + }, + { + "id": 34321461, + "labels": ["feature"], + "number": 58, + "title": "Shallow copy objects with prototype.isImmutable flag", + "url": "https://github.com/hapijs/hoek/issues/58" + }, + { + "id": 34320827, + "labels": ["bug"], + "number": 57, + "title": "clone() creates multiple copies of the same date, regex, or buffer object", + "url": "https://github.com/hapijs/hoek/issues/57" + } + ], + "number": 6, + "url": "https://github.com/hapijs/hoek/milestone/6", + "version": "2.2.0" + }, + { + "date": "2014-05-20T03:53:26Z", + "id": 637427, + "issues": [ + { + "id": 32958885, + "labels": ["bug"], + "number": 54, + "title": "Detect [[Class]] instead of using instanceof", + "url": "https://github.com/hapijs/hoek/issues/54" + } + ], + "number": 5, + "url": "https://github.com/hapijs/hoek/milestone/5", + "version": "2.1.1" + }, + { + "date": "2014-04-22T22:20:21Z", + "id": 637426, + "issues": [ + { + "id": 32016089, + "labels": ["feature"], + "number": 51, + "title": "Add isInteger()", + "url": "https://github.com/hapijs/hoek/issues/51" + }, + { + "id": 31246084, + "labels": ["feature"], + "number": 49, + "title": "match() -> test()", + "url": "https://github.com/hapijs/hoek/pull/49" + } + ], + "number": 4, + "url": "https://github.com/hapijs/hoek/milestone/4", + "version": "2.1.0" + }, + { + "date": "2014-04-22T22:18:45Z", + "id": 580315, + "issues": [ + { + "id": 30962851, + "labels": ["test"], + "number": 48, + "title": "Bring coverage back to 100% after lab logical statement support", + "url": "https://github.com/hapijs/hoek/issues/48" + }, + { + "id": 30962819, + "labels": ["feature"], + "number": 47, + "title": "Add isAbsolutePath for unix and windows when using node <0.11", + "url": "https://github.com/hapijs/hoek/issues/47" + }, + { + "id": 29981367, + "labels": ["breaking changes"], + "number": 46, + "title": "Cleanup API and remove/move unused functions", + "url": "https://github.com/hapijs/hoek/issues/46" + } + ], + "number": 1, + "url": "https://github.com/hapijs/hoek/milestone/1", + "version": "2.0.0" + }, + { + "date": "2014-03-23T05:22:33Z", + "id": 603052, + "issues": [ + { + "id": 29493018, + "labels": ["bug"], + "number": 45, + "title": "Rename should throw an error for invalid property . ", + "url": "https://github.com/hapijs/hoek/pull/45" + } + ], + "number": 3, + "url": "https://github.com/hapijs/hoek/milestone/3", + "version": "1.5.2" + }, + { + "date": "2014-03-06T22:42:19Z", + "id": 589828, + "issues": [ + { + "id": 28916036, + "labels": ["test"], + "number": 44, + "title": "Bring coverage back to 100% after lab fix", + "url": "https://github.com/hapijs/hoek/issues/44" + } + ], + "number": 2, + "url": "https://github.com/hapijs/hoek/milestone/2", + "version": "1.5.1" + } ] diff --git a/generated/modules/hoek/info.json b/generated/modules/hoek/info.json index 39ff86a9..c8566f79 100644 --- a/generated/modules/hoek/info.json +++ b/generated/modules/hoek/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 179, - "isPlugin": false, - "link": "https://github.com/hapijs/hoek", - "name": "hoek", - "package": "@hapi/hoek", - "slogan": "Utility methods for the hapi ecosystem.", - "sloganHtml": "Utility methods for the hapi ecosystem.", - "stars": 484, - "updated": "2026-02-25T07:24:45Z", - "versions": [ - { - "branch": "v11.0.7", - "license": "BSD", - "name": "11.0.7", - "node": ">= 16" - } - ], - "versionsArray": ["11.0.7"], - "latestVersion": "11.x.x" + "api": true, + "forks": 178, + "isPlugin": false, + "latestVersion": "11.x.x", + "link": "https://github.com/hapijs/hoek", + "name": "hoek", + "package": "@hapi/hoek", + "slogan": "Utility methods for the hapi ecosystem.", + "sloganHtml": "Utility methods for the hapi ecosystem.", + "stars": 483, + "updated": "2026-02-25T07:24:45Z", + "versions": [ + { + "branch": "v11.0.7", + "license": "BSD", + "name": "11.0.7", + "node": ">= 16" + } + ], + "versionsArray": ["11.0.7"] } diff --git a/generated/modules/inert/changelog.json b/generated/modules/inert/changelog.json index 26a72f30..c57c0800 100644 --- a/generated/modules/inert/changelog.json +++ b/generated/modules/inert/changelog.json @@ -1,911 +1,911 @@ [ - { - "date": "2023-03-13T15:42:42Z", - "id": 9153136, - "issues": [ - { - "id": 1614090914, - "labels": ["feature", "types"], - "number": 169, - "title": "feat: import DT types", - "url": "https://github.com/hapijs/inert/pull/169" - } - ], - "number": 43, - "url": "https://github.com/hapijs/inert/milestone/43", - "version": "7.1.0" - }, - { - "date": "2023-02-11T20:54:07Z", - "id": 8130486, - "issues": [ - { - "id": 1551775240, - "labels": ["dependency"], - "number": 167, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/inert/pull/167" - } - ], - "number": 42, - "url": "https://github.com/hapijs/inert/milestone/42", - "version": "7.0.1" - }, - { - "date": "2022-07-17T21:08:06Z", - "id": 8130485, - "issues": [ - { - "id": 1285220705, - "labels": ["dependency", "breaking changes"], - "number": 164, - "title": "Support node v18 and hapi v21, drop node v12 and hapi v19", - "url": "https://github.com/hapijs/inert/pull/164" - } - ], - "number": 41, - "url": "https://github.com/hapijs/inert/milestone/41", - "version": "7.0.0" - }, - { - "date": "2022-01-16T20:12:16Z", - "id": 7105705, - "issues": [ - { - "id": 1097939672, - "labels": ["bug"], - "number": 162, - "title": "fix: return 404 for ENOTDIR", - "url": "https://github.com/hapijs/inert/pull/162" - } - ], - "number": 39, - "url": "https://github.com/hapijs/inert/milestone/39", - "version": "6.0.5" - }, - { - "date": "2021-08-30T20:44:28Z", - "id": 5921095, - "issues": [ - { - "id": 983181478, - "labels": ["bug", "security"], - "number": 160, - "title": "Disallow serving absolute paths from directory handler", - "url": "https://github.com/hapijs/inert/pull/160" - } - ], - "number": 38, - "url": "https://github.com/hapijs/inert/milestone/38", - "version": "6.0.4" - }, - { - "date": "2020-09-26T18:03:51Z", - "id": 5921094, - "issues": [ - { - "id": 684041947, - "labels": [], - "number": 152, - "title": "migrate to new travis format", - "url": "https://github.com/hapijs/inert/pull/152" - }, - { - "id": 677535490, - "labels": ["dependency"], - "number": 151, - "title": "Cleanup & update lru-cache", - "url": "https://github.com/hapijs/inert/pull/151" - }, - { - "id": 677482161, - "labels": ["test"], - "number": 150, - "title": "Fix travis to test hapi v20 and on node v14", - "url": "https://github.com/hapijs/inert/pull/150" - }, - { - "id": 677272724, - "labels": [], - "number": 149, - "title": "upgrade to hapi 20", - "url": "https://github.com/hapijs/inert/pull/149" - } - ], - "number": 37, - "url": "https://github.com/hapijs/inert/milestone/37", - "version": "6.0.3" - }, - { - "date": "2020-09-26T18:03:47Z", - "id": 5921090, - "issues": [ - { - "id": 672187752, - "labels": [], - "number": 148, - "title": "update lab and switch joi to validate", - "url": "https://github.com/hapijs/inert/pull/148" - }, - { - "id": 630918905, - "labels": ["documentation"], - "number": 144, - "title": "Update LICENSE.md", - "url": "https://github.com/hapijs/inert/pull/144" - }, - { - "id": 610587058, - "labels": ["documentation"], - "number": 142, - "title": "Correct default value for etagsCacheMaxSize", - "url": "https://github.com/hapijs/inert/pull/142" - } - ], - "number": 36, - "url": "https://github.com/hapijs/inert/milestone/36", - "version": "6.0.2" - }, - { - "date": "2020-09-26T18:03:43Z", - "id": 4973375, - "issues": [ - { - "id": 548538721, - "labels": ["breaking changes"], - "number": 140, - "title": "Change plugin name to @hapi/inert", - "url": "https://github.com/hapijs/inert/issues/140" - }, - { - "id": 548538655, - "labels": ["dependency", "breaking changes"], - "number": 139, - "title": "Require hapi 19", - "url": "https://github.com/hapijs/inert/issues/139" - }, - { - "id": 548351548, - "labels": ["dependency", "breaking changes"], - "number": 138, - "title": "Update deps for hapi v19", - "url": "https://github.com/hapijs/inert/pull/138" - } - ], - "number": 35, - "url": "https://github.com/hapijs/inert/milestone/35", - "version": "6.0.1" - }, - { - "date": "2020-01-05T05:07:35Z", - "id": 4973374, - "issues": [ - { - "id": 545369726, - "labels": ["dependency", "breaking changes"], - "number": 137, - "title": "Only node 12", - "url": "https://github.com/hapijs/inert/issues/137" - } - ], - "number": 34, - "url": "https://github.com/hapijs/inert/milestone/34", - "version": "6.0.0" - }, - { - "date": "2020-09-26T17:44:22Z", - "id": 4655606, - "issues": [], - "number": 33, - "url": "https://github.com/hapijs/inert/milestone/33", - "version": "5.2.3" - }, - { - "date": "2019-09-12T23:10:52Z", - "id": 4441985, - "issues": [ - { - "id": 493069122, - "labels": ["dependency"], - "number": 130, - "title": "Update joi", - "url": "https://github.com/hapijs/inert/issues/130" - }, - { - "id": 393611260, - "labels": ["bug"], - "number": 124, - "title": "Directory listing has broken links", - "url": "https://github.com/hapijs/inert/pull/124" - } - ], - "number": 32, - "url": "https://github.com/hapijs/inert/milestone/32", - "version": "5.2.2" - }, - { - "date": "2019-06-26T05:59:26Z", - "id": 4219002, - "issues": [ - { - "id": 460769314, - "labels": ["dependency"], - "number": 127, - "title": "Update deps", - "url": "https://github.com/hapijs/inert/issues/127" - } - ], - "number": 31, - "url": "https://github.com/hapijs/inert/milestone/31", - "version": "5.2.1" - }, - { - "date": "2019-04-10T22:08:53Z", - "id": 4195303, - "issues": [ - { - "id": 431739550, - "labels": ["dependency"], - "number": 126, - "title": "Change module namespace", - "url": "https://github.com/hapijs/inert/issues/126" - } - ], - "number": 30, - "url": "https://github.com/hapijs/inert/milestone/30", - "version": "5.2.0" - }, - { - "date": "2019-04-02T21:42:23Z", - "id": 3802322, - "issues": [ - { - "id": 428437663, - "labels": ["bug"], - "number": 125, - "title": "Directory routes doesn't work with relative files.relativeTo", - "url": "https://github.com/hapijs/inert/issues/125" - }, - { - "id": 364170134, - "labels": ["bug"], - "number": 119, - "title": "Directory listing has broken links, missing a slash between file and directory", - "url": "https://github.com/hapijs/inert/issues/119" - } - ], - "number": 29, - "url": "https://github.com/hapijs/inert/milestone/29", - "version": "5.1.3" - }, - { - "date": "2018-11-07T07:34:05Z", - "id": 3787590, - "issues": [ - { - "id": 378172089, - "labels": ["dependency"], - "number": 122, - "title": "Use new requirements config", - "url": "https://github.com/hapijs/inert/issues/122" - } - ], - "number": 28, - "url": "https://github.com/hapijs/inert/milestone/28", - "version": "5.1.2" - }, - { - "date": "2018-11-01T08:07:59Z", - "id": 3036084, - "issues": [ - { - "id": 376292102, - "labels": ["dependency"], - "number": 121, - "title": "Update deps.", - "url": "https://github.com/hapijs/inert/issues/121" - } - ], - "number": 27, - "url": "https://github.com/hapijs/inert/milestone/27", - "version": "5.1.1" - }, - { - "date": "2018-11-01T08:07:58Z", - "id": 2887232, - "issues": [ - { - "id": 288430075, - "labels": ["feature"], - "number": 111, - "title": "Add failing path to errors", - "url": "https://github.com/hapijs/inert/issues/111" - } - ], - "number": 26, - "url": "https://github.com/hapijs/inert/milestone/26", - "version": "5.1.0" - }, - { - "date": "2017-11-04T00:00:19Z", - "id": 2887231, - "issues": [ - { - "id": 271147536, - "labels": ["bug"], - "number": 103, - "title": "Rethrow developer errors", - "url": "https://github.com/hapijs/inert/issues/103" - } - ], - "number": 25, - "url": "https://github.com/hapijs/inert/milestone/25", - "version": "5.0.1" - }, - { - "date": "2017-11-03T23:59:33Z", - "id": 2779049, - "issues": [ - { - "id": 271086753, - "labels": ["dependency", "breaking changes"], - "number": 102, - "title": "Update deps", - "url": "https://github.com/hapijs/inert/issues/102" - }, - { - "id": 269251669, - "labels": ["breaking changes", "release notes"], - "number": 100, - "title": "5.0.0 Release Notes", - "url": "https://github.com/hapijs/inert/issues/100" - }, - { - "id": 267498576, - "labels": ["bug", "breaking changes"], - "number": 99, - "title": "Move etagsCacheMaxSize to server option", - "url": "https://github.com/hapijs/inert/issues/99" - }, - { - "id": 258979491, - "labels": ["feature", "breaking changes"], - "number": 97, - "title": "Internal rewrite to async / await", - "url": "https://github.com/hapijs/inert/pull/97" - } - ], - "number": 24, - "url": "https://github.com/hapijs/inert/milestone/24", - "version": "5.0.0" - }, - { - "date": "2017-09-19T22:28:14Z", - "id": 2429732, - "issues": [ - { - "id": 233650870, - "labels": ["test"], - "number": 93, - "title": "Limit \"node\" tests to only try configured hapi release", - "url": "https://github.com/hapijs/inert/pull/93" - } - ], - "number": 23, - "url": "https://github.com/hapijs/inert/milestone/23", - "version": "4.2.1" - }, - { - "date": "2017-04-03T11:37:14Z", - "id": 2217994, - "issues": [ - { - "id": 218479679, - "labels": ["feature"], - "number": 87, - "title": "Add start end option to file handler", - "url": "https://github.com/hapijs/inert/pull/87" - } - ], - "number": 22, - "url": "https://github.com/hapijs/inert/milestone/22", - "version": "4.2.0" - }, - { - "date": "2016-12-27T20:34:04Z", - "id": 2211036, - "issues": [ - { - "id": 172680051, - "labels": ["feature"], - "number": 71, - "title": "Add lookupMap option", - "url": "https://github.com/hapijs/inert/pull/71" - } - ], - "number": 21, - "url": "https://github.com/hapijs/inert/milestone/21", - "version": "4.1.0" - }, - { - "date": "2016-12-22T00:00:45Z", - "id": 2162693, - "issues": [ - { - "id": 196256733, - "labels": ["bug"], - "number": 79, - "title": "Manually extract last param name from path", - "url": "https://github.com/hapijs/inert/pull/79" - } - ], - "number": 20, - "url": "https://github.com/hapijs/inert/milestone/20", - "version": "4.0.4" - }, - { - "date": "2016-11-29T02:54:57Z", - "id": 1957752, - "issues": [ - { - "id": 192174505, - "labels": ["dependency"], - "number": 76, - "title": "Update deps", - "url": "https://github.com/hapijs/inert/issues/76" - } - ], - "number": 19, - "url": "https://github.com/hapijs/inert/milestone/19", - "version": "4.0.3" - }, - { - "date": "2016-08-23T11:43:18Z", - "id": 1957751, - "issues": [ - { - "id": 172677644, - "labels": ["bug"], - "number": 70, - "title": "Errors on old hapi releases", - "url": "https://github.com/hapijs/inert/issues/70" - } - ], - "number": 18, - "url": "https://github.com/hapijs/inert/milestone/18", - "version": "4.0.2" - }, - { - "date": "2016-08-23T11:40:12Z", - "id": 1754994, - "issues": [ - { - "id": 164090773, - "labels": ["dependency"], - "number": 68, - "title": "Update code to v3", - "url": "https://github.com/hapijs/inert/issues/68" - }, - { - "id": 164084010, - "labels": ["bug"], - "number": 67, - "title": "The hapi response.ranges option is not respected", - "url": "https://github.com/hapijs/inert/issues/67" - }, - { - "id": 155625778, - "labels": ["test"], - "number": 63, - "title": "Test on node v6", - "url": "https://github.com/hapijs/inert/pull/63" - } - ], - "number": 17, - "url": "https://github.com/hapijs/inert/milestone/17", - "version": "4.0.1" - }, - { - "date": "2016-05-09T10:44:30Z", - "id": 1373964, - "issues": [ - { - "id": 153748531, - "labels": ["breaking changes", "release notes"], - "number": 62, - "title": "4.0.0 Release Notes", - "url": "https://github.com/hapijs/inert/issues/62" - }, - { - "id": 152598042, - "labels": ["bug"], - "number": 60, - "title": "Hapijs directory route not being scrapped by facebook behind cloudfront", - "url": "https://github.com/hapijs/inert/issues/60" - }, - { - "id": 144948509, - "labels": ["dependency"], - "number": 59, - "title": "remove hoek.isAbsolutePath for path.isAbsolute", - "url": "https://github.com/hapijs/inert/pull/59" - }, - { - "id": 128095166, - "labels": ["feature"], - "number": 56, - "title": "Clarify bad path for directory handler message", - "url": "https://github.com/hapijs/inert/pull/56" - }, - { - "id": 123576066, - "labels": ["dependency"], - "number": 53, - "title": "Update lru-cache", - "url": "https://github.com/hapijs/inert/issues/53" - }, - { - "id": 122623897, - "labels": ["feature", "breaking changes"], - "number": 51, - "title": "Update dependencies. Update codebase to ES6/Node4", - "url": "https://github.com/hapijs/inert/pull/51" - }, - { - "id": 116056675, - "labels": ["breaking changes"], - "number": 49, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/inert/issues/49" - }, - { - "id": 113156069, - "labels": ["feature", "breaking changes", "security"], - "number": 47, - "title": "Add confine option that confines file responses", - "url": "https://github.com/hapijs/inert/pull/47" - } - ], - "number": 16, - "url": "https://github.com/hapijs/inert/milestone/16", - "version": "4.0.0" - }, - { - "date": "2015-10-24T12:09:28Z", - "id": 1246231, - "issues": [ - { - "id": 94823109, - "labels": ["feature"], - "number": 30, - "title": "Add new etaging options", - "url": "https://github.com/hapijs/inert/pull/30" - }, - { - "id": 93813889, - "labels": ["feature"], - "number": 29, - "title": "New ETag generation method", - "url": "https://github.com/hapijs/inert/issues/29" - } - ], - "number": 12, - "url": "https://github.com/hapijs/inert/milestone/12", - "version": "3.2.0" - }, - { - "date": "2015-10-06T10:46:06Z", - "id": 1340022, - "issues": [ - { - "id": 109674141, - "labels": ["test"], - "number": 44, - "title": "Test using hapi@10.x", - "url": "https://github.com/hapijs/inert/issues/44" - }, - { - "id": 109581240, - "labels": ["feature"], + { + "date": "2023-03-13T15:42:42Z", + "id": 9153136, + "issues": [ + { + "id": 1614090914, + "labels": ["feature", "types"], + "number": 169, + "title": "feat: import DT types", + "url": "https://github.com/hapijs/inert/pull/169" + } + ], "number": 43, - "title": "Add new attributes: connections: false, once: true", - "url": "https://github.com/hapijs/inert/issues/43" - } - ], - "number": 15, - "url": "https://github.com/hapijs/inert/milestone/15", - "version": "3.1.0" - }, - { - "date": "2015-10-04T10:30:12Z", - "id": 1334866, - "issues": [ - { - "id": 108556806, - "labels": ["bug"], + "url": "https://github.com/hapijs/inert/milestone/43", + "version": "7.1.0" + }, + { + "date": "2023-02-11T20:54:07Z", + "id": 8130486, + "issues": [ + { + "id": 1551775240, + "labels": ["dependency"], + "number": 167, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/inert/pull/167" + } + ], "number": 42, - "title": "Avoid re-opening files when serving from a directory", - "url": "https://github.com/hapijs/inert/pull/42" - } - ], - "number": 14, - "url": "https://github.com/hapijs/inert/milestone/14", - "version": "3.0.2" - }, - { - "date": "2015-08-12T12:52:03Z", - "id": 1251598, - "issues": [ - { - "id": 100527943, - "labels": ["bug"], + "url": "https://github.com/hapijs/inert/milestone/42", + "version": "7.0.1" + }, + { + "date": "2022-07-17T21:08:06Z", + "id": 8130485, + "issues": [ + { + "id": 1285220705, + "labels": ["dependency", "breaking changes"], + "number": 164, + "title": "Support node v18 and hapi v21, drop node v12 and hapi v19", + "url": "https://github.com/hapijs/inert/pull/164" + } + ], + "number": 41, + "url": "https://github.com/hapijs/inert/milestone/41", + "version": "7.0.0" + }, + { + "date": "2022-01-16T20:12:16Z", + "id": 7105705, + "issues": [ + { + "id": 1097939672, + "labels": ["bug"], + "number": 162, + "title": "fix: return 404 for ENOTDIR", + "url": "https://github.com/hapijs/inert/pull/162" + } + ], + "number": 39, + "url": "https://github.com/hapijs/inert/milestone/39", + "version": "6.0.5" + }, + { + "date": "2021-08-30T20:44:28Z", + "id": 5921095, + "issues": [ + { + "id": 983181478, + "labels": ["bug", "security"], + "number": 160, + "title": "Disallow serving absolute paths from directory handler", + "url": "https://github.com/hapijs/inert/pull/160" + } + ], + "number": 38, + "url": "https://github.com/hapijs/inert/milestone/38", + "version": "6.0.4" + }, + { + "date": "2020-09-26T18:03:51Z", + "id": 5921094, + "issues": [ + { + "id": 684041947, + "labels": [], + "number": 152, + "title": "migrate to new travis format", + "url": "https://github.com/hapijs/inert/pull/152" + }, + { + "id": 677535490, + "labels": ["dependency"], + "number": 151, + "title": "Cleanup & update lru-cache", + "url": "https://github.com/hapijs/inert/pull/151" + }, + { + "id": 677482161, + "labels": ["test"], + "number": 150, + "title": "Fix travis to test hapi v20 and on node v14", + "url": "https://github.com/hapijs/inert/pull/150" + }, + { + "id": 677272724, + "labels": [], + "number": 149, + "title": "upgrade to hapi 20", + "url": "https://github.com/hapijs/inert/pull/149" + } + ], + "number": 37, + "url": "https://github.com/hapijs/inert/milestone/37", + "version": "6.0.3" + }, + { + "date": "2020-09-26T18:03:47Z", + "id": 5921090, + "issues": [ + { + "id": 672187752, + "labels": [], + "number": 148, + "title": "update lab and switch joi to validate", + "url": "https://github.com/hapijs/inert/pull/148" + }, + { + "id": 630918905, + "labels": ["documentation"], + "number": 144, + "title": "Update LICENSE.md", + "url": "https://github.com/hapijs/inert/pull/144" + }, + { + "id": 610587058, + "labels": ["documentation"], + "number": 142, + "title": "Correct default value for etagsCacheMaxSize", + "url": "https://github.com/hapijs/inert/pull/142" + } + ], "number": 36, - "title": "Respect the new connection compression option", - "url": "https://github.com/hapijs/inert/issues/36" - }, - { - "id": 99715614, - "labels": ["test"], - "number": 32, - "title": "Move hapi security tests here", - "url": "https://github.com/hapijs/inert/issues/32" - } - ], - "number": 13, - "url": "https://github.com/hapijs/inert/milestone/13", - "version": "3.0.1" - }, - { - "date": "2015-08-08T00:42:44Z", - "id": 1194647, - "issues": [ - { - "id": 99733933, - "labels": ["dependency", "breaking changes"], + "url": "https://github.com/hapijs/inert/milestone/36", + "version": "6.0.2" + }, + { + "date": "2020-09-26T18:03:43Z", + "id": 4973375, + "issues": [ + { + "id": 548538721, + "labels": ["breaking changes"], + "number": 140, + "title": "Change plugin name to @hapi/inert", + "url": "https://github.com/hapijs/inert/issues/140" + }, + { + "id": 548538655, + "labels": ["dependency", "breaking changes"], + "number": 139, + "title": "Require hapi 19", + "url": "https://github.com/hapijs/inert/issues/139" + }, + { + "id": 548351548, + "labels": ["dependency", "breaking changes"], + "number": 138, + "title": "Update deps for hapi v19", + "url": "https://github.com/hapijs/inert/pull/138" + } + ], "number": 35, - "title": "Move config to plugin options from hapi server. Closes #34", - "url": "https://github.com/hapijs/inert/pull/35" - }, - { - "id": 99733808, - "labels": ["dependency", "breaking changes"], + "url": "https://github.com/hapijs/inert/milestone/35", + "version": "6.0.1" + }, + { + "date": "2020-01-05T05:07:35Z", + "id": 4973374, + "issues": [ + { + "id": 545369726, + "labels": ["dependency", "breaking changes"], + "number": 137, + "title": "Only node 12", + "url": "https://github.com/hapijs/inert/issues/137" + } + ], "number": 34, - "title": "Move etags caching config to plugin options", - "url": "https://github.com/hapijs/inert/issues/34" - } - ], - "number": 11, - "url": "https://github.com/hapijs/inert/milestone/11", - "version": "3.0.0" - }, - { - "date": "2015-07-06T11:48:06Z", - "id": 1123696, - "issues": [ - { - "id": 93154249, - "labels": ["bug"], + "url": "https://github.com/hapijs/inert/milestone/34", + "version": "6.0.0" + }, + { + "date": "2020-09-26T17:44:22Z", + "id": 4655606, + "issues": [], + "number": 33, + "url": "https://github.com/hapijs/inert/milestone/33", + "version": "5.2.3" + }, + { + "date": "2019-09-12T23:10:52Z", + "id": 4441985, + "issues": [ + { + "id": 493069122, + "labels": ["dependency"], + "number": 130, + "title": "Update joi", + "url": "https://github.com/hapijs/inert/issues/130" + }, + { + "id": 393611260, + "labels": ["bug"], + "number": 124, + "title": "Directory listing has broken links", + "url": "https://github.com/hapijs/inert/pull/124" + } + ], + "number": 32, + "url": "https://github.com/hapijs/inert/milestone/32", + "version": "5.2.2" + }, + { + "date": "2019-06-26T05:59:26Z", + "id": 4219002, + "issues": [ + { + "id": 460769314, + "labels": ["dependency"], + "number": 127, + "title": "Update deps", + "url": "https://github.com/hapijs/inert/issues/127" + } + ], + "number": 31, + "url": "https://github.com/hapijs/inert/milestone/31", + "version": "5.2.1" + }, + { + "date": "2019-04-10T22:08:53Z", + "id": 4195303, + "issues": [ + { + "id": 431739550, + "labels": ["dependency"], + "number": 126, + "title": "Change module namespace", + "url": "https://github.com/hapijs/inert/issues/126" + } + ], + "number": 30, + "url": "https://github.com/hapijs/inert/milestone/30", + "version": "5.2.0" + }, + { + "date": "2019-04-02T21:42:23Z", + "id": 3802322, + "issues": [ + { + "id": 428437663, + "labels": ["bug"], + "number": 125, + "title": "Directory routes doesn't work with relative files.relativeTo", + "url": "https://github.com/hapijs/inert/issues/125" + }, + { + "id": 364170134, + "labels": ["bug"], + "number": 119, + "title": "Directory listing has broken links, missing a slash between file and directory", + "url": "https://github.com/hapijs/inert/issues/119" + } + ], + "number": 29, + "url": "https://github.com/hapijs/inert/milestone/29", + "version": "5.1.3" + }, + { + "date": "2018-11-07T07:34:05Z", + "id": 3787590, + "issues": [ + { + "id": 378172089, + "labels": ["dependency"], + "number": 122, + "title": "Use new requirements config", + "url": "https://github.com/hapijs/inert/issues/122" + } + ], "number": 28, - "title": "Never store ETags computed on partial data", - "url": "https://github.com/hapijs/inert/pull/28" - }, - { - "id": 93054915, - "labels": ["bug"], + "url": "https://github.com/hapijs/inert/milestone/28", + "version": "5.1.2" + }, + { + "date": "2018-11-01T08:07:59Z", + "id": 3036084, + "issues": [ + { + "id": 376292102, + "labels": ["dependency"], + "number": 121, + "title": "Update deps.", + "url": "https://github.com/hapijs/inert/issues/121" + } + ], "number": 27, - "title": "ETag generation can miss data", - "url": "https://github.com/hapijs/inert/issues/27" - } - ], - "number": 10, - "url": "https://github.com/hapijs/inert/milestone/10", - "version": "2.1.6" - }, - { - "date": "2015-05-21T17:07:33Z", - "id": 1014229, - "issues": [ - { - "id": 79071327, - "labels": ["dependency", "documentation"], + "url": "https://github.com/hapijs/inert/milestone/27", + "version": "5.1.1" + }, + { + "date": "2018-11-01T08:07:58Z", + "id": 2887232, + "issues": [ + { + "id": 288430075, + "labels": ["feature"], + "number": 111, + "title": "Add failing path to errors", + "url": "https://github.com/hapijs/inert/issues/111" + } + ], "number": 26, - "title": "Misc. Closes #25", - "url": "https://github.com/hapijs/inert/pull/26" - } - ], - "number": 9, - "url": "https://github.com/hapijs/inert/milestone/9", - "version": "2.1.5" - }, - { - "date": "2015-03-10T07:21:09Z", - "id": 1014212, - "issues": [ - { - "id": 60458083, - "labels": ["dependency"], + "url": "https://github.com/hapijs/inert/milestone/26", + "version": "5.1.0" + }, + { + "date": "2017-11-04T00:00:19Z", + "id": 2887231, + "issues": [ + { + "id": 271147536, + "labels": ["bug"], + "number": 103, + "title": "Rethrow developer errors", + "url": "https://github.com/hapijs/inert/issues/103" + } + ], + "number": 25, + "url": "https://github.com/hapijs/inert/milestone/25", + "version": "5.0.1" + }, + { + "date": "2017-11-03T23:59:33Z", + "id": 2779049, + "issues": [ + { + "id": 271086753, + "labels": ["dependency", "breaking changes"], + "number": 102, + "title": "Update deps", + "url": "https://github.com/hapijs/inert/issues/102" + }, + { + "id": 269251669, + "labels": ["breaking changes", "release notes"], + "number": 100, + "title": "5.0.0 Release Notes", + "url": "https://github.com/hapijs/inert/issues/100" + }, + { + "id": 267498576, + "labels": ["bug", "breaking changes"], + "number": 99, + "title": "Move etagsCacheMaxSize to server option", + "url": "https://github.com/hapijs/inert/issues/99" + }, + { + "id": 258979491, + "labels": ["feature", "breaking changes"], + "number": 97, + "title": "Internal rewrite to async / await", + "url": "https://github.com/hapijs/inert/pull/97" + } + ], + "number": 24, + "url": "https://github.com/hapijs/inert/milestone/24", + "version": "5.0.0" + }, + { + "date": "2017-09-19T22:28:14Z", + "id": 2429732, + "issues": [ + { + "id": 233650870, + "labels": ["test"], + "number": 93, + "title": "Limit \"node\" tests to only try configured hapi release", + "url": "https://github.com/hapijs/inert/pull/93" + } + ], "number": 23, - "title": "Upgrade to joi 6.0", - "url": "https://github.com/hapijs/inert/pull/23" - } - ], - "number": 8, - "url": "https://github.com/hapijs/inert/milestone/8", - "version": "2.1.4" - }, - { - "date": "2015-03-10T06:48:30Z", - "id": 951759, - "issues": [ - { - "id": 58383087, - "labels": ["bug"], + "url": "https://github.com/hapijs/inert/milestone/23", + "version": "4.2.1" + }, + { + "date": "2017-04-03T11:37:14Z", + "id": 2217994, + "issues": [ + { + "id": 218479679, + "labels": ["feature"], + "number": 87, + "title": "Add start end option to file handler", + "url": "https://github.com/hapijs/inert/pull/87" + } + ], "number": 22, - "title": "Add io.js support", - "url": "https://github.com/hapijs/inert/pull/22" - }, - { - "id": 56963603, - "labels": ["bug"], + "url": "https://github.com/hapijs/inert/milestone/22", + "version": "4.2.0" + }, + { + "date": "2016-12-27T20:34:04Z", + "id": 2211036, + "issues": [ + { + "id": 172680051, + "labels": ["feature"], + "number": 71, + "title": "Add lookupMap option", + "url": "https://github.com/hapijs/inert/pull/71" + } + ], "number": 21, - "title": "Return 404 for path string with a null byte", - "url": "https://github.com/hapijs/inert/pull/21" - } - ], - "number": 7, - "url": "https://github.com/hapijs/inert/milestone/7", - "version": "2.1.3" - }, - { - "date": "2015-01-26T17:47:40Z", - "id": 948174, - "issues": [ - { - "id": 55490891, - "labels": ["bug"], + "url": "https://github.com/hapijs/inert/milestone/21", + "version": "4.1.0" + }, + { + "date": "2016-12-22T00:00:45Z", + "id": 2162693, + "issues": [ + { + "id": 196256733, + "labels": ["bug"], + "number": 79, + "title": "Manually extract last param name from path", + "url": "https://github.com/hapijs/inert/pull/79" + } + ], + "number": 20, + "url": "https://github.com/hapijs/inert/milestone/20", + "version": "4.0.4" + }, + { + "date": "2016-11-29T02:54:57Z", + "id": 1957752, + "issues": [ + { + "id": 192174505, + "labels": ["dependency"], + "number": 76, + "title": "Update deps", + "url": "https://github.com/hapijs/inert/issues/76" + } + ], "number": 19, - "title": "Fix directory handler regressions in 2.1.1", - "url": "https://github.com/hapijs/inert/pull/19" - } - ], - "number": 6, - "url": "https://github.com/hapijs/inert/milestone/6", - "version": "2.1.2" - }, - { - "date": "2015-01-23T09:26:15Z", - "id": 931226, - "issues": [ - { - "id": 54593264, - "labels": ["bug"], + "url": "https://github.com/hapijs/inert/milestone/19", + "version": "4.0.3" + }, + { + "date": "2016-08-23T11:43:18Z", + "id": 1957751, + "issues": [ + { + "id": 172677644, + "labels": ["bug"], + "number": 70, + "title": "Errors on old hapi releases", + "url": "https://github.com/hapijs/inert/issues/70" + } + ], "number": 18, - "title": "Replace 404 response with 403 and 500 when appropriate", - "url": "https://github.com/hapijs/inert/pull/18" - } - ], - "number": 5, - "url": "https://github.com/hapijs/inert/milestone/5", - "version": "2.1.1" - }, - { - "date": "2015-01-12T09:53:24Z", - "id": 898099, - "issues": [ - { - "id": 53159719, - "labels": ["feature"], + "url": "https://github.com/hapijs/inert/milestone/18", + "version": "4.0.2" + }, + { + "date": "2016-08-23T11:40:12Z", + "id": 1754994, + "issues": [ + { + "id": 164090773, + "labels": ["dependency"], + "number": 68, + "title": "Update code to v3", + "url": "https://github.com/hapijs/inert/issues/68" + }, + { + "id": 164084010, + "labels": ["bug"], + "number": 67, + "title": "The hapi response.ranges option is not respected", + "url": "https://github.com/hapijs/inert/issues/67" + }, + { + "id": 155625778, + "labels": ["test"], + "number": 63, + "title": "Test on node v6", + "url": "https://github.com/hapijs/inert/pull/63" + } + ], "number": 17, - "title": "Handle Range requests explicitly", - "url": "https://github.com/hapijs/inert/pull/17" - }, - { - "id": 50788070, - "labels": ["feature"], - "number": 10, - "title": "more flexible 'index' option for directory handler", - "url": "https://github.com/hapijs/inert/pull/10" - } - ], - "number": 4, - "url": "https://github.com/hapijs/inert/milestone/4", - "version": "2.1.0" - }, - { - "date": "2014-12-09T22:53:07Z", - "id": 835607, - "issues": [ - { - "id": 51085768, - "labels": ["bug"], + "url": "https://github.com/hapijs/inert/milestone/17", + "version": "4.0.1" + }, + { + "date": "2016-05-09T10:44:30Z", + "id": 1373964, + "issues": [ + { + "id": 153748531, + "labels": ["breaking changes", "release notes"], + "number": 62, + "title": "4.0.0 Release Notes", + "url": "https://github.com/hapijs/inert/issues/62" + }, + { + "id": 152598042, + "labels": ["bug"], + "number": 60, + "title": "Hapijs directory route not being scrapped by facebook behind cloudfront", + "url": "https://github.com/hapijs/inert/issues/60" + }, + { + "id": 144948509, + "labels": ["dependency"], + "number": 59, + "title": "remove hoek.isAbsolutePath for path.isAbsolute", + "url": "https://github.com/hapijs/inert/pull/59" + }, + { + "id": 128095166, + "labels": ["feature"], + "number": 56, + "title": "Clarify bad path for directory handler message", + "url": "https://github.com/hapijs/inert/pull/56" + }, + { + "id": 123576066, + "labels": ["dependency"], + "number": 53, + "title": "Update lru-cache", + "url": "https://github.com/hapijs/inert/issues/53" + }, + { + "id": 122623897, + "labels": ["feature", "breaking changes"], + "number": 51, + "title": "Update dependencies. Update codebase to ES6/Node4", + "url": "https://github.com/hapijs/inert/pull/51" + }, + { + "id": 116056675, + "labels": ["breaking changes"], + "number": 49, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/inert/issues/49" + }, + { + "id": 113156069, + "labels": ["feature", "breaking changes", "security"], + "number": 47, + "title": "Add confine option that confines file responses", + "url": "https://github.com/hapijs/inert/pull/47" + } + ], "number": 16, - "title": "Fix option parsing to match hapi documentation", - "url": "https://github.com/hapijs/inert/pull/16" - }, - { - "id": 50951728, - "labels": ["feature", "bug"], - "number": 14, - "title": "Use .single() option for directory settings schema", - "url": "https://github.com/hapijs/inert/pull/14" - }, - { - "id": 50949048, - "labels": ["bug", "security"], + "url": "https://github.com/hapijs/inert/milestone/16", + "version": "4.0.0" + }, + { + "date": "2015-10-24T12:09:28Z", + "id": 1246231, + "issues": [ + { + "id": 94823109, + "labels": ["feature"], + "number": 30, + "title": "Add new etaging options", + "url": "https://github.com/hapijs/inert/pull/30" + }, + { + "id": 93813889, + "labels": ["feature"], + "number": 29, + "title": "New ETag generation method", + "url": "https://github.com/hapijs/inert/issues/29" + } + ], "number": 12, - "title": "Don't allow files in hidden directories to be served", - "url": "https://github.com/hapijs/inert/pull/12" - }, - { - "id": 50193119, - "labels": ["test"], + "url": "https://github.com/hapijs/inert/milestone/12", + "version": "3.2.0" + }, + { + "date": "2015-10-06T10:46:06Z", + "id": 1340022, + "issues": [ + { + "id": 109674141, + "labels": ["test"], + "number": 44, + "title": "Test using hapi@10.x", + "url": "https://github.com/hapijs/inert/issues/44" + }, + { + "id": 109581240, + "labels": ["feature"], + "number": 43, + "title": "Add new attributes: connections: false, once: true", + "url": "https://github.com/hapijs/inert/issues/43" + } + ], + "number": 15, + "url": "https://github.com/hapijs/inert/milestone/15", + "version": "3.1.0" + }, + { + "date": "2015-10-04T10:30:12Z", + "id": 1334866, + "issues": [ + { + "id": 108556806, + "labels": ["bug"], + "number": 42, + "title": "Avoid re-opening files when serving from a directory", + "url": "https://github.com/hapijs/inert/pull/42" + } + ], + "number": 14, + "url": "https://github.com/hapijs/inert/milestone/14", + "version": "3.0.2" + }, + { + "date": "2015-08-12T12:52:03Z", + "id": 1251598, + "issues": [ + { + "id": 100527943, + "labels": ["bug"], + "number": 36, + "title": "Respect the new connection compression option", + "url": "https://github.com/hapijs/inert/issues/36" + }, + { + "id": 99715614, + "labels": ["test"], + "number": 32, + "title": "Move hapi security tests here", + "url": "https://github.com/hapijs/inert/issues/32" + } + ], + "number": 13, + "url": "https://github.com/hapijs/inert/milestone/13", + "version": "3.0.1" + }, + { + "date": "2015-08-08T00:42:44Z", + "id": 1194647, + "issues": [ + { + "id": 99733933, + "labels": ["dependency", "breaking changes"], + "number": 35, + "title": "Move config to plugin options from hapi server. Closes #34", + "url": "https://github.com/hapijs/inert/pull/35" + }, + { + "id": 99733808, + "labels": ["dependency", "breaking changes"], + "number": 34, + "title": "Move etags caching config to plugin options", + "url": "https://github.com/hapijs/inert/issues/34" + } + ], + "number": 11, + "url": "https://github.com/hapijs/inert/milestone/11", + "version": "3.0.0" + }, + { + "date": "2015-07-06T11:48:06Z", + "id": 1123696, + "issues": [ + { + "id": 93154249, + "labels": ["bug"], + "number": 28, + "title": "Never store ETags computed on partial data", + "url": "https://github.com/hapijs/inert/pull/28" + }, + { + "id": 93054915, + "labels": ["bug"], + "number": 27, + "title": "ETag generation can miss data", + "url": "https://github.com/hapijs/inert/issues/27" + } + ], + "number": 10, + "url": "https://github.com/hapijs/inert/milestone/10", + "version": "2.1.6" + }, + { + "date": "2015-05-21T17:07:33Z", + "id": 1014229, + "issues": [ + { + "id": 79071327, + "labels": ["dependency", "documentation"], + "number": 26, + "title": "Misc. Closes #25", + "url": "https://github.com/hapijs/inert/pull/26" + } + ], "number": 9, - "title": "Fix tests on windows", - "url": "https://github.com/hapijs/inert/pull/9" - }, - { - "id": 46922293, - "labels": ["feature", "bug"], + "url": "https://github.com/hapijs/inert/milestone/9", + "version": "2.1.5" + }, + { + "date": "2015-03-10T07:21:09Z", + "id": 1014212, + "issues": [ + { + "id": 60458083, + "labels": ["dependency"], + "number": 23, + "title": "Upgrade to joi 6.0", + "url": "https://github.com/hapijs/inert/pull/23" + } + ], "number": 8, - "title": "Use open file descriptors to retain file between prepare and marshal phases", - "url": "https://github.com/hapijs/inert/pull/8" - }, - { - "id": 46608627, - "labels": ["bug"], + "url": "https://github.com/hapijs/inert/milestone/8", + "version": "2.1.4" + }, + { + "date": "2015-03-10T06:48:30Z", + "id": 951759, + "issues": [ + { + "id": 58383087, + "labels": ["bug"], + "number": 22, + "title": "Add io.js support", + "url": "https://github.com/hapijs/inert/pull/22" + }, + { + "id": 56963603, + "labels": ["bug"], + "number": 21, + "title": "Return 404 for path string with a null byte", + "url": "https://github.com/hapijs/inert/pull/21" + } + ], "number": 7, - "title": "Invalid ETag for lookupCompressed responses", - "url": "https://github.com/hapijs/inert/issues/7" - }, - { - "id": 46604455, - "labels": ["bug"], + "url": "https://github.com/hapijs/inert/milestone/7", + "version": "2.1.3" + }, + { + "date": "2015-01-26T17:47:40Z", + "id": 948174, + "issues": [ + { + "id": 55490891, + "labels": ["bug"], + "number": 19, + "title": "Fix directory handler regressions in 2.1.1", + "url": "https://github.com/hapijs/inert/pull/19" + } + ], + "number": 6, + "url": "https://github.com/hapijs/inert/milestone/6", + "version": "2.1.2" + }, + { + "date": "2015-01-23T09:26:15Z", + "id": 931226, + "issues": [ + { + "id": 54593264, + "labels": ["bug"], + "number": 18, + "title": "Replace 404 response with 403 and 500 when appropriate", + "url": "https://github.com/hapijs/inert/pull/18" + } + ], + "number": 5, + "url": "https://github.com/hapijs/inert/milestone/5", + "version": "2.1.1" + }, + { + "date": "2015-01-12T09:53:24Z", + "id": 898099, + "issues": [ + { + "id": 53159719, + "labels": ["feature"], + "number": 17, + "title": "Handle Range requests explicitly", + "url": "https://github.com/hapijs/inert/pull/17" + }, + { + "id": 50788070, + "labels": ["feature"], + "number": 10, + "title": "more flexible 'index' option for directory handler", + "url": "https://github.com/hapijs/inert/pull/10" + } + ], "number": 4, - "title": "Potentially incorrect file responses when file is changed", - "url": "https://github.com/hapijs/inert/issues/4" - } - ], - "number": 2, - "url": "https://github.com/hapijs/inert/milestone/2", - "version": "2.0.0" - }, - { - "date": "2014-12-10T13:41:55Z", - "id": 891852, - "issues": [ - { - "id": 51029523, - "labels": ["bug", "security"], - "number": 15, - "title": "Don't allow files in hidden directories to be served", - "url": "https://github.com/hapijs/inert/pull/15" - }, - { - "id": 50949999, - "labels": ["bug", "security"], - "number": 13, - "title": "Don't allow files in hidden directories to be served (backported)", - "url": "https://github.com/hapijs/inert/pull/13" - } - ], - "number": 3, - "url": "https://github.com/hapijs/inert/milestone/3", - "version": "1.1.1" - }, - { - "date": "2014-10-22T08:08:12Z", - "id": 820541, - "issues": [ - { - "id": 46482842, - "labels": ["dependency"], + "url": "https://github.com/hapijs/inert/milestone/4", + "version": "2.1.0" + }, + { + "date": "2014-12-09T22:53:07Z", + "id": 835607, + "issues": [ + { + "id": 51085768, + "labels": ["bug"], + "number": 16, + "title": "Fix option parsing to match hapi documentation", + "url": "https://github.com/hapijs/inert/pull/16" + }, + { + "id": 50951728, + "labels": ["feature", "bug"], + "number": 14, + "title": "Use .single() option for directory settings schema", + "url": "https://github.com/hapijs/inert/pull/14" + }, + { + "id": 50949048, + "labels": ["bug", "security"], + "number": 12, + "title": "Don't allow files in hidden directories to be served", + "url": "https://github.com/hapijs/inert/pull/12" + }, + { + "id": 50193119, + "labels": ["test"], + "number": 9, + "title": "Fix tests on windows", + "url": "https://github.com/hapijs/inert/pull/9" + }, + { + "id": 46922293, + "labels": ["feature", "bug"], + "number": 8, + "title": "Use open file descriptors to retain file between prepare and marshal phases", + "url": "https://github.com/hapijs/inert/pull/8" + }, + { + "id": 46608627, + "labels": ["bug"], + "number": 7, + "title": "Invalid ETag for lookupCompressed responses", + "url": "https://github.com/hapijs/inert/issues/7" + }, + { + "id": 46604455, + "labels": ["bug"], + "number": 4, + "title": "Potentially incorrect file responses when file is changed", + "url": "https://github.com/hapijs/inert/issues/4" + } + ], + "number": 2, + "url": "https://github.com/hapijs/inert/milestone/2", + "version": "2.0.0" + }, + { + "date": "2014-12-10T13:41:55Z", + "id": 891852, + "issues": [ + { + "id": 51029523, + "labels": ["bug", "security"], + "number": 15, + "title": "Don't allow files in hidden directories to be served", + "url": "https://github.com/hapijs/inert/pull/15" + }, + { + "id": 50949999, + "labels": ["bug", "security"], + "number": 13, + "title": "Don't allow files in hidden directories to be served (backported)", + "url": "https://github.com/hapijs/inert/pull/13" + } + ], "number": 3, - "title": "Move lru-cache over from hapi", - "url": "https://github.com/hapijs/inert/issues/3" - } - ], - "number": 1, - "url": "https://github.com/hapijs/inert/milestone/1", - "version": "1.1.0" - } + "url": "https://github.com/hapijs/inert/milestone/3", + "version": "1.1.1" + }, + { + "date": "2014-10-22T08:08:12Z", + "id": 820541, + "issues": [ + { + "id": 46482842, + "labels": ["dependency"], + "number": 3, + "title": "Move lru-cache over from hapi", + "url": "https://github.com/hapijs/inert/issues/3" + } + ], + "number": 1, + "url": "https://github.com/hapijs/inert/milestone/1", + "version": "1.1.0" + } ] diff --git a/generated/modules/inert/info.json b/generated/modules/inert/info.json index 4abbeb91..7c0148fe 100644 --- a/generated/modules/inert/info.json +++ b/generated/modules/inert/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 49, - "isPlugin": true, - "link": "https://github.com/hapijs/inert", - "name": "inert", - "package": "@hapi/inert", - "slogan": "Static file and directory handlers for hapi.js.", - "sloganHtml": "Static file and directory handlers for hapi.js.", - "stars": 236, - "updated": "2024-10-23T15:13:24Z", - "versions": [ - { - "branch": "v7.1.0", - "license": "BSD", - "name": "7.1.0", - "node": ">= 16" - } - ], - "versionsArray": ["7.1.0"], - "latestVersion": "7.x.x" + "api": true, + "forks": 49, + "isPlugin": true, + "latestVersion": "7.x.x", + "link": "https://github.com/hapijs/inert", + "name": "inert", + "package": "@hapi/inert", + "slogan": "Static file and directory handlers for hapi.js.", + "sloganHtml": "Static file and directory handlers for hapi.js.", + "stars": 236, + "updated": "2026-05-20T14:45:11Z", + "versions": [ + { + "branch": "v7.1.1", + "license": "BSD", + "name": "7.1.1", + "node": ">= 16" + } + ], + "versionsArray": ["7.1.1"] } diff --git a/generated/modules/iron/changelog.json b/generated/modules/iron/changelog.json index 31de6316..1af1d386 100644 --- a/generated/modules/iron/changelog.json +++ b/generated/modules/iron/changelog.json @@ -1,478 +1,478 @@ [ - { - "date": "2023-02-11T19:03:10Z", - "id": 8008327, - "issues": [ - { - "id": 1551779671, - "labels": ["dependency"], - "number": 104, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/iron/pull/104" - } - ], - "number": 33, - "url": "https://github.com/hapijs/iron/milestone/33", - "version": "7.0.1" - }, - { - "date": "2022-05-23T03:59:38Z", - "id": 8008326, - "issues": [ - { - "id": 1229159337, - "labels": ["breaking changes", "dependency"], - "number": 103, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/iron/pull/103" - } - ], - "number": 32, - "url": "https://github.com/hapijs/iron/milestone/32", - "version": "7.0.0" - }, - { - "date": "2020-01-05T06:00:59Z", - "id": 4973387, - "issues": [ - { - "id": 545375784, - "labels": ["bug", "types"], - "number": 90, - "title": "Fix iv type definition", - "url": "https://github.com/hapijs/iron/issues/90" - }, - { - "id": 545372754, - "labels": ["breaking changes", "dependency"], - "number": 89, - "title": "Only node 12", - "url": "https://github.com/hapijs/iron/issues/89" - } - ], - "number": 30, - "url": "https://github.com/hapijs/iron/milestone/30", - "version": "6.0.0" - }, - { - "date": "2019-09-20T23:05:48Z", - "id": 4675829, - "issues": [ - { - "id": 496578179, - "labels": ["bug", "types"], - "number": 84, - "title": "Fix types and sync with previous TS until hapi is updated", - "url": "https://github.com/hapijs/iron/issues/84" - }, - { - "id": 496271444, - "labels": ["non issue", "types"], - "number": 83, - "title": "Fixes #81: Replace defaults with SealOptions", - "url": "https://github.com/hapijs/iron/pull/83" - } - ], - "number": 28, - "url": "https://github.com/hapijs/iron/milestone/28", - "version": "5.1.3" - }, - { - "date": "2019-09-20T00:20:45Z", - "id": 4574397, - "issues": [ - { - "id": 483889061, - "labels": ["types"], - "number": 78, - "title": "Added TS declarations", - "url": "https://github.com/hapijs/iron/pull/78" - } - ], - "number": 27, - "url": "https://github.com/hapijs/iron/milestone/27", - "version": "5.1.2" - }, - { - "date": "2019-08-14T22:18:12Z", - "id": 4192213, - "issues": [ - { - "id": 480911521, - "labels": ["dependency"], - "number": 77, - "title": "Update deps", - "url": "https://github.com/hapijs/iron/issues/77" - } - ], - "number": 26, - "url": "https://github.com/hapijs/iron/milestone/26", - "version": "5.1.1" - }, - { - "date": "2019-04-02T06:38:05Z", - "id": 3792297, - "issues": [ - { - "id": 428043566, - "labels": ["dependency"], - "number": 74, - "title": "Change module namespace", - "url": "https://github.com/hapijs/iron/issues/74" - } - ], - "number": 23, - "url": "https://github.com/hapijs/iron/milestone/23", - "version": "5.1.0" - }, - { - "date": "2018-11-03T00:43:10Z", - "id": 3788906, - "issues": [ - { - "id": 377002785, - "labels": ["non issue"], - "number": 72, - "title": "Remove engines", - "url": "https://github.com/hapijs/iron/issues/72" - } - ], - "number": 22, - "url": "https://github.com/hapijs/iron/milestone/22", - "version": "5.0.6" - }, - { - "date": "2018-11-01T19:11:49Z", - "id": 2886965, - "issues": [ - { - "id": 376528282, - "labels": ["dependency"], - "number": 71, - "title": "Update deps", - "url": "https://github.com/hapijs/iron/issues/71" - }, - { - "id": 365944339, - "labels": ["bug"], - "number": 70, - "title": "seal() options is not guarded against mutation", - "url": "https://github.com/hapijs/iron/issues/70" - } - ], - "number": 21, - "url": "https://github.com/hapijs/iron/milestone/21", - "version": "5.0.5" - }, - { - "date": "2017-11-03T20:54:01Z", - "id": 2886676, - "issues": [ - { - "id": 271115786, - "labels": ["bug"], - "number": 63, - "title": "Use Cryptiles.fixedTimeComparison()", - "url": "https://github.com/hapijs/iron/issues/63" - } - ], - "number": 20, - "url": "https://github.com/hapijs/iron/milestone/20", - "version": "5.0.4" - }, - { - "date": "2017-11-03T18:28:45Z", - "id": 2885310, - "issues": [ - { - "id": 271073858, - "labels": ["bug", "dependency"], - "number": 62, - "title": "Fix new Boom", - "url": "https://github.com/hapijs/iron/issues/62" - } - ], - "number": 19, - "url": "https://github.com/hapijs/iron/milestone/19", - "version": "5.0.3" - }, - { - "date": "2017-11-03T18:26:40Z", - "id": 2794210, - "issues": [ - { - "id": 270901431, - "labels": ["dependency"], - "number": 61, - "title": "Update deps", - "url": "https://github.com/hapijs/iron/issues/61" - } - ], - "number": 18, - "url": "https://github.com/hapijs/iron/milestone/18", - "version": "5.0.2" - }, - { - "date": "2017-09-26T09:11:53Z", - "id": 2787807, - "issues": [ - { - "id": 260548584, - "labels": ["dependency"], - "number": 59, - "title": "Update deps", - "url": "https://github.com/hapijs/iron/issues/59" - } - ], - "number": 17, - "url": "https://github.com/hapijs/iron/milestone/17", - "version": "5.0.1" - }, - { - "date": "2017-09-25T00:40:39Z", - "id": 2546754, - "issues": [ - { - "id": 260106244, - "labels": ["feature", "breaking changes"], - "number": 58, - "title": "Migrate to async interface", - "url": "https://github.com/hapijs/iron/issues/58" - } - ], - "number": 16, - "url": "https://github.com/hapijs/iron/milestone/16", - "version": "5.0.0" - }, - { - "date": "2019-03-25T06:16:57Z", - "id": 4168159, - "issues": [ - { - "id": 424736169, - "labels": ["lts"], - "number": 73, - "title": "Commercial version of v4 branch", - "url": "https://github.com/hapijs/iron/issues/73" - } - ], - "number": 24, - "url": "https://github.com/hapijs/iron/milestone/24", - "version": "4.1.0" - }, - { - "date": "2017-05-28T06:40:56Z", - "id": 1992126, - "issues": [ - { - "id": 231850139, - "labels": ["dependency"], - "number": 53, - "title": "Update deps.", - "url": "https://github.com/hapijs/iron/issues/53" - } - ], - "number": 15, - "url": "https://github.com/hapijs/iron/milestone/15", - "version": "4.0.5" - }, - { - "date": "2016-09-08T21:27:32Z", - "id": 1964510, - "issues": [ - { - "id": 175866680, - "labels": ["bug"], - "number": 50, - "title": "Always return boom errors", - "url": "https://github.com/hapijs/iron/issues/50" - } - ], - "number": 14, - "url": "https://github.com/hapijs/iron/milestone/14", - "version": "4.0.4" - }, - { - "date": "2016-08-26T07:33:15Z", - "id": 1964509, - "issues": [ - { - "id": 159579340, - "labels": ["bug"], - "number": 45, - "title": "Catch and report possible `JSON.stringify` errors in `Iron.seal`", - "url": "https://github.com/hapijs/iron/pull/45" - } - ], - "number": 13, - "url": "https://github.com/hapijs/iron/milestone/13", - "version": "4.0.3" - }, - { - "date": "2016-08-26T07:27:24Z", - "id": 1756032, - "issues": [ - { - "id": 167941605, - "labels": ["dependency"], - "number": 46, - "title": "Update deps", - "url": "https://github.com/hapijs/iron/issues/46" - } - ], - "number": 12, - "url": "https://github.com/hapijs/iron/milestone/12", - "version": "4.0.2" - }, - { - "date": "2016-05-09T17:14:45Z", - "id": 1554797, - "issues": [ - { - "id": 151842145, - "labels": ["test", "dependency"], - "number": 44, - "title": "made exception message assertion less strict to account for different node 6 error message", - "url": "https://github.com/hapijs/iron/pull/44" - }, - { - "id": 151841961, - "labels": ["bug", "dependency"], - "number": 43, - "title": "added digest argument to crypto.pbkdf2", - "url": "https://github.com/hapijs/iron/pull/43" - } - ], - "number": 11, - "url": "https://github.com/hapijs/iron/milestone/11", - "version": "4.0.1" - }, - { - "date": "2016-02-01T07:27:09Z", - "id": 1387920, - "issues": [ - { - "id": 125226729, - "labels": ["breaking changes", "security"], - "number": 39, - "title": "Require min of n characters for passwords", - "url": "https://github.com/hapijs/iron/issues/39" - } - ], - "number": 10, - "url": "https://github.com/hapijs/iron/milestone/10", - "version": "4.0.0" - }, - { - "date": "2015-11-02T04:38:07Z", - "id": 1251087, - "issues": [ - { - "id": 114521797, - "labels": ["breaking changes"], - "number": 36, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/iron/issues/36" - } - ], - "number": 9, - "url": "https://github.com/hapijs/iron/milestone/9", - "version": "3.0.1" - }, - { - "date": "2014-08-18T20:24:59Z", - "id": 740464, - "issues": [], - "number": 5, - "url": "https://github.com/hapijs/iron/milestone/5", - "version": "3.0.0" - }, - { - "date": "2015-08-12T04:51:03Z", - "id": 780344, - "issues": [], - "number": 8, - "url": "https://github.com/hapijs/iron/milestone/8", - "version": "2.1.3" - }, - { - "date": "2015-08-12T04:51:01Z", - "id": 780343, - "issues": [ - { - "id": 42091033, - "labels": ["bug", "test"], - "number": 24, - "title": "Revert 3.0 changes. Back to 2.x", - "url": "https://github.com/hapijs/iron/issues/24" - } - ], - "number": 7, - "url": "https://github.com/hapijs/iron/milestone/7", - "version": "2.1.2" - }, - { - "date": "2014-08-02T07:34:52Z", - "id": 665015, - "issues": [ - { - "id": 39344389, - "labels": ["documentation"], + { + "date": "2023-02-11T19:03:10Z", + "id": 8008327, + "issues": [ + { + "id": 1551779671, + "labels": ["dependency"], + "number": 104, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/iron/pull/104" + } + ], + "number": 33, + "url": "https://github.com/hapijs/iron/milestone/33", + "version": "7.0.1" + }, + { + "date": "2022-05-23T03:59:38Z", + "id": 8008326, + "issues": [ + { + "id": 1229159337, + "labels": ["breaking changes", "dependency"], + "number": 103, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/iron/pull/103" + } + ], + "number": 32, + "url": "https://github.com/hapijs/iron/milestone/32", + "version": "7.0.0" + }, + { + "date": "2020-01-05T06:00:59Z", + "id": 4973387, + "issues": [ + { + "id": 545375784, + "labels": ["bug", "types"], + "number": 90, + "title": "Fix iv type definition", + "url": "https://github.com/hapijs/iron/issues/90" + }, + { + "id": 545372754, + "labels": ["breaking changes", "dependency"], + "number": 89, + "title": "Only node 12", + "url": "https://github.com/hapijs/iron/issues/89" + } + ], + "number": 30, + "url": "https://github.com/hapijs/iron/milestone/30", + "version": "6.0.0" + }, + { + "date": "2019-09-20T23:05:48Z", + "id": 4675829, + "issues": [ + { + "id": 496578179, + "labels": ["bug", "types"], + "number": 84, + "title": "Fix types and sync with previous TS until hapi is updated", + "url": "https://github.com/hapijs/iron/issues/84" + }, + { + "id": 496271444, + "labels": ["non issue", "types"], + "number": 83, + "title": "Fixes #81: Replace defaults with SealOptions", + "url": "https://github.com/hapijs/iron/pull/83" + } + ], + "number": 28, + "url": "https://github.com/hapijs/iron/milestone/28", + "version": "5.1.3" + }, + { + "date": "2019-09-20T00:20:45Z", + "id": 4574397, + "issues": [ + { + "id": 483889061, + "labels": ["types"], + "number": 78, + "title": "Added TS declarations", + "url": "https://github.com/hapijs/iron/pull/78" + } + ], + "number": 27, + "url": "https://github.com/hapijs/iron/milestone/27", + "version": "5.1.2" + }, + { + "date": "2019-08-14T22:18:12Z", + "id": 4192213, + "issues": [ + { + "id": 480911521, + "labels": ["dependency"], + "number": 77, + "title": "Update deps", + "url": "https://github.com/hapijs/iron/issues/77" + } + ], + "number": 26, + "url": "https://github.com/hapijs/iron/milestone/26", + "version": "5.1.1" + }, + { + "date": "2019-04-02T06:38:05Z", + "id": 3792297, + "issues": [ + { + "id": 428043566, + "labels": ["dependency"], + "number": 74, + "title": "Change module namespace", + "url": "https://github.com/hapijs/iron/issues/74" + } + ], + "number": 23, + "url": "https://github.com/hapijs/iron/milestone/23", + "version": "5.1.0" + }, + { + "date": "2018-11-03T00:43:10Z", + "id": 3788906, + "issues": [ + { + "id": 377002785, + "labels": ["non issue"], + "number": 72, + "title": "Remove engines", + "url": "https://github.com/hapijs/iron/issues/72" + } + ], + "number": 22, + "url": "https://github.com/hapijs/iron/milestone/22", + "version": "5.0.6" + }, + { + "date": "2018-11-01T19:11:49Z", + "id": 2886965, + "issues": [ + { + "id": 376528282, + "labels": ["dependency"], + "number": 71, + "title": "Update deps", + "url": "https://github.com/hapijs/iron/issues/71" + }, + { + "id": 365944339, + "labels": ["bug"], + "number": 70, + "title": "seal() options is not guarded against mutation", + "url": "https://github.com/hapijs/iron/issues/70" + } + ], + "number": 21, + "url": "https://github.com/hapijs/iron/milestone/21", + "version": "5.0.5" + }, + { + "date": "2017-11-03T20:54:01Z", + "id": 2886676, + "issues": [ + { + "id": 271115786, + "labels": ["bug"], + "number": 63, + "title": "Use Cryptiles.fixedTimeComparison()", + "url": "https://github.com/hapijs/iron/issues/63" + } + ], + "number": 20, + "url": "https://github.com/hapijs/iron/milestone/20", + "version": "5.0.4" + }, + { + "date": "2017-11-03T18:28:45Z", + "id": 2885310, + "issues": [ + { + "id": 271073858, + "labels": ["bug", "dependency"], + "number": 62, + "title": "Fix new Boom", + "url": "https://github.com/hapijs/iron/issues/62" + } + ], "number": 19, - "title": "Update contact", - "url": "https://github.com/hapijs/iron/issues/19" - } - ], - "number": 4, - "url": "https://github.com/hapijs/iron/milestone/4", - "version": "2.1.1" - }, - { - "date": "2014-05-20T21:00:48Z", - "id": 580355, - "issues": [ - { - "id": 33295598, - "labels": ["feature"], + "url": "https://github.com/hapijs/iron/milestone/19", + "version": "5.0.3" + }, + { + "date": "2017-11-03T18:26:40Z", + "id": 2794210, + "issues": [ + { + "id": 270901431, + "labels": ["dependency"], + "number": 61, + "title": "Update deps", + "url": "https://github.com/hapijs/iron/issues/61" + } + ], + "number": 18, + "url": "https://github.com/hapijs/iron/milestone/18", + "version": "5.0.2" + }, + { + "date": "2017-09-26T09:11:53Z", + "id": 2787807, + "issues": [ + { + "id": 260548584, + "labels": ["dependency"], + "number": 59, + "title": "Update deps", + "url": "https://github.com/hapijs/iron/issues/59" + } + ], "number": 17, - "title": "Expanding on the password object format so that it becomes possible to s...", - "url": "https://github.com/hapijs/iron/pull/17" - } - ], - "number": 2, - "url": "https://github.com/hapijs/iron/milestone/2", - "version": "2.1.0" - }, - { - "date": "2014-04-27T05:01:46Z", - "id": 641344, - "issues": [ - { - "id": 32304595, - "labels": ["test"], + "url": "https://github.com/hapijs/iron/milestone/17", + "version": "5.0.1" + }, + { + "date": "2017-09-25T00:40:39Z", + "id": 2546754, + "issues": [ + { + "id": 260106244, + "labels": ["feature", "breaking changes"], + "number": 58, + "title": "Migrate to async interface", + "url": "https://github.com/hapijs/iron/issues/58" + } + ], + "number": 16, + "url": "https://github.com/hapijs/iron/milestone/16", + "version": "5.0.0" + }, + { + "date": "2019-03-25T06:16:57Z", + "id": 4168159, + "issues": [ + { + "id": 424736169, + "labels": ["lts"], + "number": 73, + "title": "Commercial version of v4 branch", + "url": "https://github.com/hapijs/iron/issues/73" + } + ], + "number": 24, + "url": "https://github.com/hapijs/iron/milestone/24", + "version": "4.1.0" + }, + { + "date": "2017-05-28T06:40:56Z", + "id": 1992126, + "issues": [ + { + "id": 231850139, + "labels": ["dependency"], + "number": 53, + "title": "Update deps.", + "url": "https://github.com/hapijs/iron/issues/53" + } + ], "number": 15, - "title": "Bring coverage back to 100%", - "url": "https://github.com/hapijs/iron/issues/15" - } - ], - "number": 3, - "url": "https://github.com/hapijs/iron/milestone/3", - "version": "2.0.2" - }, - { - "date": "2014-02-25T21:29:07Z", - "id": 580354, - "issues": [ - { - "id": 28286097, - "labels": ["feature"], + "url": "https://github.com/hapijs/iron/milestone/15", + "version": "4.0.5" + }, + { + "date": "2016-09-08T21:27:32Z", + "id": 1964510, + "issues": [ + { + "id": 175866680, + "labels": ["bug"], + "number": 50, + "title": "Always return boom errors", + "url": "https://github.com/hapijs/iron/issues/50" + } + ], "number": 14, - "title": "Support node 0.11", - "url": "https://github.com/hapijs/iron/issues/14" - } - ], - "number": 1, - "url": "https://github.com/hapijs/iron/milestone/1", - "version": "2.0.1" - } + "url": "https://github.com/hapijs/iron/milestone/14", + "version": "4.0.4" + }, + { + "date": "2016-08-26T07:33:15Z", + "id": 1964509, + "issues": [ + { + "id": 159579340, + "labels": ["bug"], + "number": 45, + "title": "Catch and report possible `JSON.stringify` errors in `Iron.seal`", + "url": "https://github.com/hapijs/iron/pull/45" + } + ], + "number": 13, + "url": "https://github.com/hapijs/iron/milestone/13", + "version": "4.0.3" + }, + { + "date": "2016-08-26T07:27:24Z", + "id": 1756032, + "issues": [ + { + "id": 167941605, + "labels": ["dependency"], + "number": 46, + "title": "Update deps", + "url": "https://github.com/hapijs/iron/issues/46" + } + ], + "number": 12, + "url": "https://github.com/hapijs/iron/milestone/12", + "version": "4.0.2" + }, + { + "date": "2016-05-09T17:14:45Z", + "id": 1554797, + "issues": [ + { + "id": 151842145, + "labels": ["test", "dependency"], + "number": 44, + "title": "made exception message assertion less strict to account for different node 6 error message", + "url": "https://github.com/hapijs/iron/pull/44" + }, + { + "id": 151841961, + "labels": ["bug", "dependency"], + "number": 43, + "title": "added digest argument to crypto.pbkdf2", + "url": "https://github.com/hapijs/iron/pull/43" + } + ], + "number": 11, + "url": "https://github.com/hapijs/iron/milestone/11", + "version": "4.0.1" + }, + { + "date": "2016-02-01T07:27:09Z", + "id": 1387920, + "issues": [ + { + "id": 125226729, + "labels": ["breaking changes", "security"], + "number": 39, + "title": "Require min of n characters for passwords", + "url": "https://github.com/hapijs/iron/issues/39" + } + ], + "number": 10, + "url": "https://github.com/hapijs/iron/milestone/10", + "version": "4.0.0" + }, + { + "date": "2015-11-02T04:38:07Z", + "id": 1251087, + "issues": [ + { + "id": 114521797, + "labels": ["breaking changes"], + "number": 36, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/iron/issues/36" + } + ], + "number": 9, + "url": "https://github.com/hapijs/iron/milestone/9", + "version": "3.0.1" + }, + { + "date": "2014-08-18T20:24:59Z", + "id": 740464, + "issues": [], + "number": 5, + "url": "https://github.com/hapijs/iron/milestone/5", + "version": "3.0.0" + }, + { + "date": "2015-08-12T04:51:03Z", + "id": 780344, + "issues": [], + "number": 8, + "url": "https://github.com/hapijs/iron/milestone/8", + "version": "2.1.3" + }, + { + "date": "2015-08-12T04:51:01Z", + "id": 780343, + "issues": [ + { + "id": 42091033, + "labels": ["bug", "test"], + "number": 24, + "title": "Revert 3.0 changes. Back to 2.x", + "url": "https://github.com/hapijs/iron/issues/24" + } + ], + "number": 7, + "url": "https://github.com/hapijs/iron/milestone/7", + "version": "2.1.2" + }, + { + "date": "2014-08-02T07:34:52Z", + "id": 665015, + "issues": [ + { + "id": 39344389, + "labels": ["documentation"], + "number": 19, + "title": "Update contact", + "url": "https://github.com/hapijs/iron/issues/19" + } + ], + "number": 4, + "url": "https://github.com/hapijs/iron/milestone/4", + "version": "2.1.1" + }, + { + "date": "2014-05-20T21:00:48Z", + "id": 580355, + "issues": [ + { + "id": 33295598, + "labels": ["feature"], + "number": 17, + "title": "Expanding on the password object format so that it becomes possible to s...", + "url": "https://github.com/hapijs/iron/pull/17" + } + ], + "number": 2, + "url": "https://github.com/hapijs/iron/milestone/2", + "version": "2.1.0" + }, + { + "date": "2014-04-27T05:01:46Z", + "id": 641344, + "issues": [ + { + "id": 32304595, + "labels": ["test"], + "number": 15, + "title": "Bring coverage back to 100%", + "url": "https://github.com/hapijs/iron/issues/15" + } + ], + "number": 3, + "url": "https://github.com/hapijs/iron/milestone/3", + "version": "2.0.2" + }, + { + "date": "2014-02-25T21:29:07Z", + "id": 580354, + "issues": [ + { + "id": 28286097, + "labels": ["feature"], + "number": 14, + "title": "Support node 0.11", + "url": "https://github.com/hapijs/iron/issues/14" + } + ], + "number": 1, + "url": "https://github.com/hapijs/iron/milestone/1", + "version": "2.0.1" + } ] diff --git a/generated/modules/iron/info.json b/generated/modules/iron/info.json index 55d21fa4..cbb2f99e 100644 --- a/generated/modules/iron/info.json +++ b/generated/modules/iron/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 53, - "isPlugin": false, - "link": "https://github.com/hapijs/iron", - "name": "iron", - "package": "@hapi/iron", - "slogan": "Encapsulated tokens (encrypted and mac'ed objects).", - "sloganHtml": "Encapsulated tokens (encrypted and mac'ed objects).", - "stars": 631, - "updated": "2024-10-23T15:37:19Z", - "versions": [ - { - "branch": "v7.0.1", - "license": "BSD", - "name": "7.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["7.0.1"], - "latestVersion": "7.x.x" + "api": true, + "forks": 54, + "isPlugin": false, + "latestVersion": "7.x.x", + "link": "https://github.com/hapijs/iron", + "name": "iron", + "package": "@hapi/iron", + "slogan": "Encapsulated tokens (encrypted and mac'ed objects).", + "sloganHtml": "Encapsulated tokens (encrypted and mac'ed objects).", + "stars": 629, + "updated": "2024-10-23T15:37:19Z", + "versions": [ + { + "branch": "v7.0.1", + "license": "BSD", + "name": "7.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["7.0.1"] } diff --git a/generated/modules/jwt/changelog.json b/generated/modules/jwt/changelog.json index c40e44e6..5bd0b0f0 100644 --- a/generated/modules/jwt/changelog.json +++ b/generated/modules/jwt/changelog.json @@ -1,326 +1,342 @@ [ - { - "date": "2025-12-09T17:13:05Z", - "id": 14313465, - "issues": [ - { - "id": 3711691432, - "labels": ["bug"], - "number": 60, - "title": "Fix: jwt constant time fixed time", - "url": "https://github.com/hapijs/jwt/pull/60" - } - ], - "number": 18, - "url": "https://github.com/hapijs/jwt/milestone/18", - "version": "3.2.2" - }, - { - "date": "2025-12-09T17:13:04Z", - "id": 13604654, - "issues": [ - { - "id": 3376005672, - "labels": ["types"], - "number": 59, - "title": "chore: improve keys typings", - "url": "https://github.com/hapijs/jwt/pull/59" - } - ], - "number": 17, - "url": "https://github.com/hapijs/jwt/milestone/17", - "version": "3.2.1" - }, - { - "date": "2025-09-02T13:15:25Z", - "id": 9153711, - "issues": [ - { - "id": 1532992161, - "labels": ["types", "feature"], - "number": 54, - "title": "feat: add local typings", - "url": "https://github.com/hapijs/jwt/pull/54" - } - ], - "number": 16, - "url": "https://github.com/hapijs/jwt/milestone/16", - "version": "3.2.0" - }, - { - "date": "2023-02-04T10:17:46Z", - "id": 9004911, - "issues": [ - { - "id": 1423293255, - "labels": [], - "number": 53, - "title": "feat: EdDSA", - "url": "https://github.com/hapijs/jwt/pull/53" - }, - { - "id": 1344566733, - "labels": ["feature"], - "number": 48, - "title": "EdDSA (ed25519, ed448) support", - "url": "https://github.com/hapijs/jwt/issues/48" - } - ], - "number": 15, - "url": "https://github.com/hapijs/jwt/milestone/15", - "version": "3.1.0" - }, - { - "date": "2022-08-29T20:07:09Z", - "id": 8207040, - "issues": [ - { - "id": 1307363839, - "labels": ["dependency", "breaking changes", "feature", "test"], - "number": 47, - "title": "Support hapi v21, drop hapi v19, test ESM support", - "url": "https://github.com/hapijs/jwt/pull/47" - }, - { - "id": 782438699, - "labels": ["feature"], - "number": 39, - "title": "use utf-8 encoding, closes #21", - "url": "https://github.com/hapijs/jwt/pull/39" - }, - { - "id": 705408683, - "labels": ["bug"], - "number": 21, - "title": "Utils.b64stringify() is called wrong", - "url": "https://github.com/hapijs/jwt/issues/21" - } - ], - "number": 11, - "url": "https://github.com/hapijs/jwt/milestone/11", - "version": "3.0.0" - }, - { - "date": "2022-08-29T19:33:07Z", - "id": 8362152, - "issues": [ - { - "id": 1052995908, - "labels": ["feature"], - "number": 43, - "title": "add support for reading token from cookie", - "url": "https://github.com/hapijs/jwt/pull/43" - }, - { - "id": 748272290, - "labels": ["feature"], - "number": 28, - "title": "Load the JWT from an arbitrary location in the request", - "url": "https://github.com/hapijs/jwt/issues/28" - } - ], - "number": 14, - "url": "https://github.com/hapijs/jwt/milestone/14", - "version": "2.2.0" - }, - { - "date": "2022-03-24T23:48:31Z", - "id": 7064631, - "issues": [ - { - "id": 1159635829, - "labels": ["bug"], - "number": 46, - "title": "fix: make compliant with jwt spec", - "url": "https://github.com/hapijs/jwt/pull/46" - } - ], - "number": 9, - "url": "https://github.com/hapijs/jwt/milestone/9", - "version": "2.1.1" - }, - { - "date": "2021-08-17T02:41:27Z", - "id": 5921607, - "issues": [ - { - "id": 775451665, - "labels": [], - "number": 37, - "title": "headless support.", - "url": "https://github.com/hapijs/jwt/pull/37" - }, - { - "id": 765749921, - "labels": [], - "number": 34, - "title": "Fix serialNumber and remove workarounds", - "url": "https://github.com/hapijs/jwt/pull/34" - }, - { - "id": 748302384, - "labels": [], - "number": 29, - "title": "allow typ in header to be optional. ", - "url": "https://github.com/hapijs/jwt/pull/29" - }, - { - "id": 710610375, - "labels": ["documentation"], - "number": 23, - "title": "Improvements to the API.md", - "url": "https://github.com/hapijs/jwt/pull/23" - } - ], - "number": 8, - "url": "https://github.com/hapijs/jwt/milestone/8", - "version": "2.1.0" - }, - { - "date": "2020-12-01T22:01:25Z", - "id": 5031195, - "issues": [ - { - "id": 705132606, - "labels": [], - "number": 20, - "title": "Changes to README.md to align with other modules in the family", - "url": "https://github.com/hapijs/jwt/pull/20" - }, - { - "id": 702353531, - "labels": ["dependency"], + { + "date": "2026-06-12T08:53:52Z", + "id": 16327962, + "issues": [ + { + "id": 4647782096, + "labels": ["dependency"], + "number": 61, + "title": "chore: bump dependencies", + "url": "https://github.com/hapijs/jwt/pull/61" + } + ], + "number": 19, + "url": "https://github.com/hapijs/jwt/milestone/19", + "version": "3.2.4" + }, + { + "date": "2025-12-09T17:13:05Z", + "id": 14313465, + "issues": [ + { + "id": 3711691432, + "labels": ["bug"], + "number": 60, + "title": "Fix: jwt constant time fixed time", + "url": "https://github.com/hapijs/jwt/pull/60" + } + ], "number": 18, - "title": "Bump node-forge from 0.9.2 to 0.10.0", - "url": "https://github.com/hapijs/jwt/pull/18" - }, - { - "id": 684061128, - "labels": [], - "number": 14, - "title": "Update dependencies and travis", - "url": "https://github.com/hapijs/jwt/pull/14" - }, - { - "id": 659948541, - "labels": [], - "number": 12, - "title": "Add API.md", - "url": "https://github.com/hapijs/jwt/pull/12" - } - ], - "number": 7, - "url": "https://github.com/hapijs/jwt/milestone/7", - "version": "2.0.1" - }, - { - "date": "2020-01-22T08:29:33Z", - "id": 4655587, - "issues": [ - { - "id": 553353284, - "labels": ["dependency", "breaking changes"], + "url": "https://github.com/hapijs/jwt/milestone/18", + "version": "3.2.2" + }, + { + "date": "2025-12-09T17:13:04Z", + "id": 13604654, + "issues": [ + { + "id": 3376005672, + "labels": ["types"], + "number": 59, + "title": "chore: improve keys typings", + "url": "https://github.com/hapijs/jwt/pull/59" + } + ], + "number": 17, + "url": "https://github.com/hapijs/jwt/milestone/17", + "version": "3.2.1" + }, + { + "date": "2025-09-02T13:15:25Z", + "id": 9153711, + "issues": [ + { + "id": 1532992161, + "labels": ["types", "feature"], + "number": 54, + "title": "feat: add local typings", + "url": "https://github.com/hapijs/jwt/pull/54" + } + ], + "number": 16, + "url": "https://github.com/hapijs/jwt/milestone/16", + "version": "3.2.0" + }, + { + "date": "2023-02-04T10:17:46Z", + "id": 9004911, + "issues": [ + { + "id": 1423293255, + "labels": [], + "number": 53, + "title": "feat: EdDSA", + "url": "https://github.com/hapijs/jwt/pull/53" + }, + { + "id": 1344566733, + "labels": ["feature"], + "number": 48, + "title": "EdDSA (ed25519, ed448) support", + "url": "https://github.com/hapijs/jwt/issues/48" + } + ], + "number": 15, + "url": "https://github.com/hapijs/jwt/milestone/15", + "version": "3.1.0" + }, + { + "date": "2022-08-29T20:07:09Z", + "id": 8207040, + "issues": [ + { + "id": 1307363839, + "labels": ["dependency", "breaking changes", "feature", "test"], + "number": 47, + "title": "Support hapi v21, drop hapi v19, test ESM support", + "url": "https://github.com/hapijs/jwt/pull/47" + }, + { + "id": 782438699, + "labels": ["feature"], + "number": 39, + "title": "use utf-8 encoding, closes #21", + "url": "https://github.com/hapijs/jwt/pull/39" + }, + { + "id": 705408683, + "labels": ["bug"], + "number": 21, + "title": "Utils.b64stringify() is called wrong", + "url": "https://github.com/hapijs/jwt/issues/21" + } + ], "number": 11, - "title": "Require hapi 19 or newer", - "url": "https://github.com/hapijs/jwt/issues/11" - }, - { - "id": 553353115, - "labels": ["breaking changes"], - "number": 10, - "title": "Change plugin name to @commercial/jwt", - "url": "https://github.com/hapijs/jwt/issues/10" - }, - { - "id": 553352479, - "labels": ["dependency", "breaking changes"], + "url": "https://github.com/hapijs/jwt/milestone/11", + "version": "3.0.0" + }, + { + "date": "2022-08-29T19:33:07Z", + "id": 8362152, + "issues": [ + { + "id": 1052995908, + "labels": ["feature"], + "number": 43, + "title": "add support for reading token from cookie", + "url": "https://github.com/hapijs/jwt/pull/43" + }, + { + "id": 748272290, + "labels": ["feature"], + "number": 28, + "title": "Load the JWT from an arbitrary location in the request", + "url": "https://github.com/hapijs/jwt/issues/28" + } + ], + "number": 14, + "url": "https://github.com/hapijs/jwt/milestone/14", + "version": "2.2.0" + }, + { + "date": "2022-03-24T23:48:31Z", + "id": 7064631, + "issues": [ + { + "id": 1159635829, + "labels": ["bug"], + "number": 46, + "title": "fix: make compliant with jwt spec", + "url": "https://github.com/hapijs/jwt/pull/46" + } + ], "number": 9, - "title": "Only node 12", - "url": "https://github.com/hapijs/jwt/issues/9" - } - ], - "number": 6, - "url": "https://github.com/hapijs/jwt/milestone/6", - "version": "2.0.0" - }, - { - "date": "2019-09-12T22:41:01Z", - "id": 4574346, - "issues": [ - { - "id": 493061596, - "labels": ["dependency"], + "url": "https://github.com/hapijs/jwt/milestone/9", + "version": "2.1.1" + }, + { + "date": "2021-08-17T02:41:27Z", + "id": 5921607, + "issues": [ + { + "id": 775451665, + "labels": [], + "number": 37, + "title": "headless support.", + "url": "https://github.com/hapijs/jwt/pull/37" + }, + { + "id": 765749921, + "labels": [], + "number": 34, + "title": "Fix serialNumber and remove workarounds", + "url": "https://github.com/hapijs/jwt/pull/34" + }, + { + "id": 748302384, + "labels": [], + "number": 29, + "title": "allow typ in header to be optional. ", + "url": "https://github.com/hapijs/jwt/pull/29" + }, + { + "id": 710610375, + "labels": ["documentation"], + "number": 23, + "title": "Improvements to the API.md", + "url": "https://github.com/hapijs/jwt/pull/23" + } + ], + "number": 8, + "url": "https://github.com/hapijs/jwt/milestone/8", + "version": "2.1.0" + }, + { + "date": "2020-12-01T22:01:25Z", + "id": 5031195, + "issues": [ + { + "id": 705132606, + "labels": [], + "number": 20, + "title": "Changes to README.md to align with other modules in the family", + "url": "https://github.com/hapijs/jwt/pull/20" + }, + { + "id": 702353531, + "labels": ["dependency"], + "number": 18, + "title": "Bump node-forge from 0.9.2 to 0.10.0", + "url": "https://github.com/hapijs/jwt/pull/18" + }, + { + "id": 684061128, + "labels": [], + "number": 14, + "title": "Update dependencies and travis", + "url": "https://github.com/hapijs/jwt/pull/14" + }, + { + "id": 659948541, + "labels": [], + "number": 12, + "title": "Add API.md", + "url": "https://github.com/hapijs/jwt/pull/12" + } + ], + "number": 7, + "url": "https://github.com/hapijs/jwt/milestone/7", + "version": "2.0.1" + }, + { + "date": "2020-01-22T08:29:33Z", + "id": 4655587, + "issues": [ + { + "id": 553353284, + "labels": ["dependency", "breaking changes"], + "number": 11, + "title": "Require hapi 19 or newer", + "url": "https://github.com/hapijs/jwt/issues/11" + }, + { + "id": 553353115, + "labels": ["breaking changes"], + "number": 10, + "title": "Change plugin name to @commercial/jwt", + "url": "https://github.com/hapijs/jwt/issues/10" + }, + { + "id": 553352479, + "labels": ["dependency", "breaking changes"], + "number": 9, + "title": "Only node 12", + "url": "https://github.com/hapijs/jwt/issues/9" + } + ], "number": 6, - "title": "Update joi", - "url": "https://github.com/hapijs/jwt/issues/6" - } - ], - "number": 5, - "url": "https://github.com/hapijs/jwt/milestone/5", - "version": "1.1.2" - }, - { - "date": "2019-08-15T06:35:17Z", - "id": 4276129, - "issues": [ - { - "id": 480903991, - "labels": ["dependency"], + "url": "https://github.com/hapijs/jwt/milestone/6", + "version": "2.0.0" + }, + { + "date": "2019-09-12T22:41:01Z", + "id": 4574346, + "issues": [ + { + "id": 493061596, + "labels": ["dependency"], + "number": 6, + "title": "Update joi", + "url": "https://github.com/hapijs/jwt/issues/6" + } + ], "number": 5, - "title": "Update deps", - "url": "https://github.com/hapijs/jwt/issues/5" - } - ], - "number": 4, - "url": "https://github.com/hapijs/jwt/milestone/4", - "version": "1.1.1" - }, - { - "date": "2019-05-01T05:47:12Z", - "id": 4275995, - "issues": [ - { - "id": 439046343, - "labels": ["faq"], + "url": "https://github.com/hapijs/jwt/milestone/5", + "version": "1.1.2" + }, + { + "date": "2019-08-15T06:35:17Z", + "id": 4276129, + "issues": [ + { + "id": 480903991, + "labels": ["dependency"], + "number": 5, + "title": "Update deps", + "url": "https://github.com/hapijs/jwt/issues/5" + } + ], + "number": 4, + "url": "https://github.com/hapijs/jwt/milestone/4", + "version": "1.1.1" + }, + { + "date": "2019-05-01T05:47:12Z", + "id": 4275995, + "issues": [ + { + "id": 439046343, + "labels": ["faq"], + "number": 3, + "title": "Support ttlSec on generate()", + "url": "https://github.com/hapijs/jwt/issues/3" + } + ], "number": 3, - "title": "Support ttlSec on generate()", - "url": "https://github.com/hapijs/jwt/issues/3" - } - ], - "number": 3, - "url": "https://github.com/hapijs/jwt/milestone/3", - "version": "1.1.0" - }, - { - "date": "2019-05-01T00:43:01Z", - "id": 4275926, - "issues": [ - { - "id": 439033728, - "labels": ["bug"], + "url": "https://github.com/hapijs/jwt/milestone/3", + "version": "1.1.0" + }, + { + "date": "2019-05-01T00:43:01Z", + "id": 4275926, + "issues": [ + { + "id": 439033728, + "labels": ["bug"], + "number": 2, + "title": "Expire token on exp, not just after", + "url": "https://github.com/hapijs/jwt/issues/2" + } + ], "number": 2, - "title": "Expire token on exp, not just after", - "url": "https://github.com/hapijs/jwt/issues/2" - } - ], - "number": 2, - "url": "https://github.com/hapijs/jwt/milestone/2", - "version": "1.0.2" - }, - { - "date": "2019-04-30T23:41:11Z", - "id": 4275925, - "issues": [ - { - "id": 439021108, - "labels": ["bug"], + "url": "https://github.com/hapijs/jwt/milestone/2", + "version": "1.0.2" + }, + { + "date": "2019-04-30T23:41:11Z", + "id": 4275925, + "issues": [ + { + "id": 439021108, + "labels": ["bug"], + "number": 1, + "title": "Verify payload once, not per key", + "url": "https://github.com/hapijs/jwt/issues/1" + } + ], "number": 1, - "title": "Verify payload once, not per key", - "url": "https://github.com/hapijs/jwt/issues/1" - } - ], - "number": 1, - "url": "https://github.com/hapijs/jwt/milestone/1", - "version": "1.0.1" - } + "url": "https://github.com/hapijs/jwt/milestone/1", + "version": "1.0.1" + } ] diff --git a/generated/modules/jwt/info.json b/generated/modules/jwt/info.json index b0628277..8fc7370f 100644 --- a/generated/modules/jwt/info.json +++ b/generated/modules/jwt/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 25, - "isPlugin": true, - "link": "https://github.com/hapijs/jwt", - "name": "jwt", - "package": "@hapi/jwt", - "slogan": "JWT (JSON Web Token) Authentication.", - "sloganHtml": "JWT (JSON Web Token) Authentication.", - "stars": 35, - "updated": "2025-12-11T11:42:47Z", - "versions": [ - { - "branch": "v3.2.3", - "license": "BSD", - "name": "3.2.3", - "node": ">= 16" - } - ], - "versionsArray": ["3.2.3"], - "latestVersion": "3.x.x" + "api": true, + "forks": 25, + "isPlugin": true, + "latestVersion": "3.x.x", + "link": "https://github.com/hapijs/jwt", + "name": "jwt", + "package": "@hapi/jwt", + "slogan": "JWT (JSON Web Token) Authentication.", + "sloganHtml": "JWT (JSON Web Token) Authentication.", + "stars": 35, + "updated": "2026-06-12T08:54:01Z", + "versions": [ + { + "branch": "v3.2.4", + "license": "BSD", + "name": "3.2.4", + "node": ">= 16" + } + ], + "versionsArray": ["3.2.4"] } diff --git a/generated/modules/lab/changelog.json b/generated/modules/lab/changelog.json index caa8c3f8..24720acd 100644 --- a/generated/modules/lab/changelog.json +++ b/generated/modules/lab/changelog.json @@ -1,6272 +1,6272 @@ [ - { - "date": "2026-03-26T19:26:11Z", - "id": 15310747, - "issues": [ - { - "id": 3969245812, - "labels": ["bug"], - "number": 1087, - "title": "fix: guard parent access in `addTsEsmHook` for ESM-to-CJS sub-dependency resolution", - "url": "https://github.com/hapijs/lab/pull/1087" - }, - { - "id": 3967639716, - "labels": ["bug"], - "number": 1086, - "title": "`@hapi/lab` crashes when TypeScript tests depend on ESM packages", - "url": "https://github.com/hapijs/lab/issues/1086" - } - ], - "number": 202, - "url": "https://github.com/hapijs/lab/milestone/202", - "version": "26.0.1" - }, - { - "date": "2024-10-24T08:05:55Z", - "id": 11773498, - "issues": [ - { - "id": 2605570739, - "labels": ["breaking changes"], - "number": 1081, - "title": "chore: report node 18+ support", - "url": "https://github.com/hapijs/lab/pull/1081" - }, - { - "id": 2605559541, - "labels": ["breaking changes", "release notes"], - "number": 1080, - "title": "26.0.0 Release Notes", - "url": "https://github.com/hapijs/lab/issues/1080" - }, - { - "id": 2605548991, - "labels": ["breaking changes"], - "number": 1079, - "title": "chore: next version", - "url": "https://github.com/hapijs/lab/pull/1079" - }, - { - "id": 2433661752, - "labels": ["breaking changes"], - "number": 1076, - "title": "feat: target ESLint v9", - "url": "https://github.com/hapijs/lab/pull/1076" - }, - { - "id": 2058782718, - "labels": ["feature", "breaking changes"], - "number": 1071, - "title": "Tighten type checking config", - "url": "https://github.com/hapijs/lab/pull/1071" - } - ], - "number": 201, - "url": "https://github.com/hapijs/lab/milestone/201", - "version": "26.0.0" - }, - { - "date": "2024-10-22T13:15:46Z", - "id": 11746408, - "issues": [ - { - "id": 2591038481, - "labels": ["bug"], - "number": 1078, - "title": "Ignore new TypeScript global leak", - "url": "https://github.com/hapijs/lab/pull/1078" - } - ], - "number": 200, - "url": "https://github.com/hapijs/lab/milestone/200", - "version": "25.3.2" - }, - { - "date": "2024-10-17T13:15:31Z", - "id": 11369083, - "issues": [ - { - "id": 2433406320, - "labels": ["bug"], - "number": 1075, - "title": "fix: coverage for arrow functions returning literals", - "url": "https://github.com/hapijs/lab/pull/1075" - }, - { - "id": 2433386267, - "labels": ["bug"], - "number": 1074, - "title": "fix: lint typescript files", - "url": "https://github.com/hapijs/lab/pull/1074" - } - ], - "number": 199, - "url": "https://github.com/hapijs/lab/milestone/199", - "version": "25.3.1" - }, - { - "date": "2024-07-26T06:32:57Z", - "id": 11362775, - "issues": [ - { - "id": 2431088096, - "labels": ["feature"], - "number": 1073, - "title": "feat: add explicit extension support when using Typescript and ESM", - "url": "https://github.com/hapijs/lab/pull/1073" - } - ], - "number": 198, - "url": "https://github.com/hapijs/lab/milestone/198", - "version": "25.3.0" - }, - { - "date": "2024-01-15T13:14:31Z", - "id": 10420366, - "issues": [ - { - "id": 1992212686, - "labels": ["feature"], - "number": 1069, - "title": "Always lint .ts", - "url": "https://github.com/hapijs/lab/pull/1069" - }, - { - "id": 1818438189, - "labels": ["feature"], - "number": 1065, - "title": "Add `.ts` to the default `extensions` for `--lint`", - "url": "https://github.com/hapijs/lab/issues/1065" - } - ], - "number": 197, - "url": "https://github.com/hapijs/lab/milestone/197", - "version": "25.2.0" - }, - { - "date": "2024-01-15T13:10:57Z", - "id": 10420346, - "issues": [ - { - "id": 2058766656, - "labels": ["bug"], - "number": 1070, - "title": "Make report an allow list", - "url": "https://github.com/hapijs/lab/pull/1070" - } - ], - "number": 196, - "url": "https://github.com/hapijs/lab/milestone/196", - "version": "25.1.4" - }, - { - "date": "2023-02-11T18:20:06Z", - "id": 9033180, - "issues": [ - { - "id": 1559436368, - "labels": ["feature"], - "number": 1061, - "title": "Fix: add more typescript leaks", - "url": "https://github.com/hapijs/lab/pull/1061" - } - ], - "number": 195, - "url": "https://github.com/hapijs/lab/milestone/195", - "version": "25.1.2" - }, - { - "date": "2023-02-11T18:18:28Z", - "id": 9033178, - "issues": [ - { - "id": 1551792105, - "labels": ["dependency"], - "number": 1060, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/lab/pull/1060" - } - ], - "number": 194, - "url": "https://github.com/hapijs/lab/milestone/194", - "version": "25.1.1" - }, - { - "date": "2023-02-11T18:18:30Z", - "id": 7954546, - "issues": [ - { - "id": 1502816570, - "labels": ["bug", "types"], - "number": 1059, - "title": "Bump @types/node", - "url": "https://github.com/hapijs/lab/pull/1059" - }, - { - "id": 1501589848, - "labels": ["bug"], - "number": 1058, - "title": "Deal with `Symbol(undici.globalDispatcher.1)` in Node.js 18+", - "url": "https://github.com/hapijs/lab/pull/1058" - }, - { - "id": 1407465316, - "labels": [], - "number": 1057, - "title": "Enable linting of *.cjs and *.mjs files", - "url": "https://github.com/hapijs/lab/pull/1057" - }, - { - "id": 1243224288, - "labels": ["bug"], - "number": 1052, - "title": "Add missing space after colon", - "url": "https://github.com/hapijs/lab/pull/1052" - } - ], - "number": 193, - "url": "https://github.com/hapijs/lab/milestone/193", - "version": "25.1.0" - }, - { - "date": "2022-05-08T00:32:23Z", - "id": 7954474, - "issues": [ - { - "id": 1228740974, - "labels": ["bug"], - "number": 1051, - "title": "Add check for TS error 2820", - "url": "https://github.com/hapijs/lab/pull/1051" - } - ], - "number": 192, - "url": "https://github.com/hapijs/lab/milestone/192", - "version": "25.0.1" - }, - { - "date": "2022-05-07T22:58:25Z", - "id": 7832089, - "issues": [ - { - "id": 1227413091, - "labels": ["breaking changes", "dependency"], - "number": 1050, - "title": "Upgrade dependences", - "url": "https://github.com/hapijs/lab/pull/1050" - }, - { - "id": 1222922943, - "labels": ["feature"], - "number": 1048, - "title": "Update target to ES2020 to match node 14+", - "url": "https://github.com/hapijs/lab/pull/1048" - }, - { - "id": 1213347615, - "labels": ["feature", "dependency"], - "number": 1045, - "title": "Support node v18", - "url": "https://github.com/hapijs/lab/pull/1045" - }, - { - "id": 1198958528, - "labels": ["feature", "breaking changes"], - "number": 1037, - "title": "Remove undocumented --coverage-module option", - "url": "https://github.com/hapijs/lab/pull/1037" - }, - { - "id": 1191248070, - "labels": ["feature", "breaking changes", "dependency"], - "number": 1035, - "title": "Upgrade to eslint v8", - "url": "https://github.com/hapijs/lab/pull/1035" - }, - { - "id": 1191172849, - "labels": ["breaking changes"], - "number": 1034, - "title": "Drop support for node v12", - "url": "https://github.com/hapijs/lab/pull/1034" - }, - { - "id": 994054730, - "labels": ["feature"], - "number": 1021, - "title": "Update linter to work with ESLint 8", - "url": "https://github.com/hapijs/lab/issues/1021" - } - ], - "number": 190, - "url": "https://github.com/hapijs/lab/milestone/190", - "version": "25.0.0" - }, - { - "date": "2022-04-30T23:33:18Z", - "id": 7832088, - "issues": [ - { - "id": 1213064738, - "labels": ["feature"], - "number": 1044, - "title": "Revise leak detection to use fresh node globals", - "url": "https://github.com/hapijs/lab/pull/1044" - }, - { - "id": 1206106423, - "labels": ["feature"], - "number": 1043, - "title": "New --coverage-predicates option", - "url": "https://github.com/hapijs/lab/pull/1043" - }, - { - "id": 1205886093, - "labels": ["feature"], - "number": 1042, - "title": "Remove node 8 compat fix", - "url": "https://github.com/hapijs/lab/pull/1042" - }, - { - "id": 1205806858, - "labels": [], - "number": 1041, - "title": "feat: 🎸 depedencies cli option", - "url": "https://github.com/hapijs/lab/pull/1041" - }, - { - "id": 1198973177, - "labels": ["dependency"], - "number": 1038, - "title": "Update sindresorhus deps to pre ESM versions", - "url": "https://github.com/hapijs/lab/pull/1038" - }, - { - "id": 1198893406, - "labels": ["feature"], - "number": 1036, - "title": "Coverage for nullish coalescing operator", - "url": "https://github.com/hapijs/lab/pull/1036" - }, - { - "id": 1190529016, - "labels": ["feature"], - "number": 1033, - "title": "tsconfig paths alias", - "url": "https://github.com/hapijs/lab/issues/1033" - } - ], - "number": 189, - "url": "https://github.com/hapijs/lab/milestone/189", - "version": "24.7.0" - }, - { - "date": "2022-04-02T22:20:53Z", - "id": 7590000, - "issues": [ - { - "id": 1173620066, - "labels": ["feature"], - "number": 1032, - "title": "add Node.js 18 globals", - "url": "https://github.com/hapijs/lab/pull/1032" - }, - { - "id": 1137674150, - "labels": ["feature"], - "number": 1031, - "title": "Support for ES modules", - "url": "https://github.com/hapijs/lab/pull/1031" - } - ], - "number": 188, - "url": "https://github.com/hapijs/lab/milestone/188", - "version": "24.6.0" - }, - { - "date": "2022-01-19T18:48:34Z", - "id": 7529360, - "issues": [ - { - "id": 1106829691, - "labels": ["bug"], - "number": 1029, - "title": "Add inline typescript sources to transformed output", - "url": "https://github.com/hapijs/lab/pull/1029" - }, - { - "id": 1103277102, - "labels": ["bug"], - "number": 1028, - "title": "Skip coverage on non-mapped transpiled code", - "url": "https://github.com/hapijs/lab/pull/1028" - }, - { - "id": 946311418, - "labels": ["bug"], - "number": 1018, - "title": "Add @hapi/eslint-plugin as peer dependency", - "url": "https://github.com/hapijs/lab/pull/1018" - }, - { - "id": 943537816, - "labels": ["bug"], - "number": 1017, - "title": "Using the coverage reporter requires \"@hapi/eslint-plugin\" to be installed, even if it’s not used.", - "url": "https://github.com/hapijs/lab/issues/1017" - }, - { - "id": 832071826, - "labels": [], - "number": 1002, - "title": "Code coverage reports on transpiled JavaScript, instead of TypeScript source", - "url": "https://github.com/hapijs/lab/issues/1002" - }, - { - "id": 570739682, - "labels": ["support"], - "number": 972, - "title": "Original files in HTML reporter", - "url": "https://github.com/hapijs/lab/issues/972" - } - ], - "number": 187, - "url": "https://github.com/hapijs/lab/milestone/187", - "version": "24.5.1" - }, - { - "date": "2021-12-31T07:46:14Z", - "id": 7339933, - "issues": [ - { - "id": 1088214303, - "labels": ["feature"], - "number": 1026, - "title": "Add TypeScript support. Closes #1025", - "url": "https://github.com/hapijs/lab/pull/1026" - }, - { - "id": 822048399, - "labels": ["bug"], - "number": 1001, - "title": "Introduce an upper limit to how much actual vs. expected is diffed", - "url": "https://github.com/hapijs/lab/pull/1001" - } - ], - "number": 186, - "url": "https://github.com/hapijs/lab/milestone/186", - "version": "24.5.0" - }, - { - "date": "2021-11-09T05:10:49Z", - "id": 6954387, - "issues": [ - { - "id": 1007659587, - "labels": ["test"], - "number": 1023, - "title": "Cleanup flaky tests, lint CLI scripts", - "url": "https://github.com/hapijs/lab/pull/1023" - }, - { - "id": 981358944, - "labels": ["feature"], - "number": 1020, - "title": "Add DOMException and structuredClone globals to leaks module", - "url": "https://github.com/hapijs/lab/pull/1020" - }, - { - "id": 976314841, - "labels": ["feature"], - "number": 1019, - "title": "DOMException will be a global in Node.js 17+", - "url": "https://github.com/hapijs/lab/issues/1019" - } - ], - "number": 185, - "url": "https://github.com/hapijs/lab/milestone/185", - "version": "v24.4.0" - }, - { - "date": "2021-07-16T12:59:22Z", - "id": 6954385, - "issues": [ - { - "id": 942495254, - "labels": ["bug"], - "number": 1016, - "title": "fix: never instrument eslint configs for coverage", - "url": "https://github.com/hapijs/lab/pull/1016" - } - ], - "number": 184, - "url": "https://github.com/hapijs/lab/milestone/184", - "version": "v24.3.2" - }, - { - "date": "2021-07-16T12:58:49Z", - "id": 6931554, - "issues": [ - { - "id": 942240269, - "labels": ["bug"], - "number": 1015, - "title": "fix: correct semver range for @hapi/eslint-plugin", - "url": "https://github.com/hapijs/lab/pull/1015" - } - ], - "number": 183, - "url": "https://github.com/hapijs/lab/milestone/183", - "version": "v24.3.1" - }, - { - "date": "2021-07-09T07:45:45Z", - "id": 6900376, - "issues": [ - { - "id": 925570187, - "labels": ["dependency"], - "number": 1014, - "title": "Add eslint configuration", - "url": "https://github.com/hapijs/lab/pull/1014" - }, - { - "id": 925563698, - "labels": ["feature"], - "number": 1013, - "title": "Add eslint-plugin module config to lint/coverage feature", - "url": "https://github.com/hapijs/lab/pull/1013" - }, - { - "id": 898780652, - "labels": ["feature"], - "number": 1012, - "title": "Use the new module ESLint configuration", - "url": "https://github.com/hapijs/lab/issues/1012" - } - ], - "number": 182, - "url": "https://github.com/hapijs/lab/milestone/182", - "version": "v24.3.0" - }, - { - "date": "2021-06-29T17:25:40Z", - "id": 6689932, - "issues": [ - { - "id": 873779009, - "labels": ["bug"], - "number": 1007, - "title": "Report on private/protected class type errors", - "url": "https://github.com/hapijs/lab/pull/1007" - }, - { - "id": 869786463, - "labels": ["bug"], - "number": 1006, - "title": "Incorrect type error detection", - "url": "https://github.com/hapijs/lab/issues/1006" - } - ], - "number": 181, - "url": "https://github.com/hapijs/lab/milestone/181", - "version": "24.2.1" - }, - { - "date": "2021-04-23T03:31:51Z", - "id": 6684299, - "issues": [ - { - "id": 863825022, - "labels": ["feature"], - "number": 1004, - "title": "Add new globals for node v16", - "url": "https://github.com/hapijs/lab/pull/1004" - } - ], - "number": 180, - "url": "https://github.com/hapijs/lab/milestone/180", - "version": "24.2.0" - }, - { - "date": "2021-02-21T16:24:55Z", - "id": 6021623, - "issues": [ - { - "id": 780481768, - "labels": ["bug"], - "number": 1000, - "title": "Fix retrying of passing tests", - "url": "https://github.com/hapijs/lab/pull/1000" - } - ], - "number": 178, - "url": "https://github.com/hapijs/lab/milestone/178", - "version": "24.1.1" - }, - { - "date": "2020-10-22T15:59:02Z", - "id": 5907881, - "issues": [ - { - "id": 721543843, - "labels": ["feature"], - "number": 997, - "title": "lib: add new globals from Node.js 15.x", - "url": "https://github.com/hapijs/lab/pull/997" - } - ], - "number": 177, - "url": "https://github.com/hapijs/lab/milestone/177", - "version": "24.1.0" - }, - { - "date": "2020-09-23T02:29:34Z", - "id": 5195677, - "issues": [ - { - "id": 706882982, - "labels": ["breaking changes", "release notes"], - "number": 996, - "title": "24.0.0 Release Notes", - "url": "https://github.com/hapijs/lab/issues/996" - }, - { - "id": 695274947, - "labels": ["feature"], - "number": 995, - "title": "Wait for pending ticks started by test", - "url": "https://github.com/hapijs/lab/pull/995" - }, - { - "id": 690249019, - "labels": ["breaking changes"], - "number": 993, - "title": "Shallow clone context", - "url": "https://github.com/hapijs/lab/pull/993" - }, - { - "id": 683463673, - "labels": ["breaking changes", "dependency"], - "number": 992, - "title": "Allow typescript to be updated by clients", - "url": "https://github.com/hapijs/lab/pull/992" - }, - { - "id": 682770513, - "labels": ["feature"], - "number": 990, - "title": "Use eslint-plugin-hapi embedded config", - "url": "https://github.com/hapijs/lab/pull/990" - }, - { - "id": 677176243, - "labels": ["breaking changes"], - "number": 987, - "title": "throw error if an async experiment function is provided", - "url": "https://github.com/hapijs/lab/pull/987" - } - ], - "number": 176, - "url": "https://github.com/hapijs/lab/milestone/176", - "version": "24.0.0" - }, - { - "date": "2020-03-12T17:10:15Z", - "id": 4972606, - "issues": [ - { - "id": 579782324, - "labels": ["security", "dependency"], - "number": 975, - "title": "Replace mkdirp with Fs.mkdirSync with recursive: true", - "url": "https://github.com/hapijs/lab/pull/975" - }, - { - "id": 579782203, - "labels": ["security", "dependency"], - "number": 974, - "title": "Vulnerability in a dep of mkdirp", - "url": "https://github.com/hapijs/lab/issues/974" - } - ], - "number": 175, - "url": "https://github.com/hapijs/lab/milestone/175", - "version": "22.0.4" - }, - { - "date": "2020-01-04T09:24:50Z", - "id": 4961118, - "issues": [ - { - "id": 545263279, - "labels": ["dependency"], - "number": 968, - "title": "Update deps", - "url": "https://github.com/hapijs/lab/issues/968" - } - ], - "number": 174, - "url": "https://github.com/hapijs/lab/milestone/174", - "version": "22.0.3" - }, - { - "date": "2019-12-28T17:25:00Z", - "id": 4960457, - "issues": [ - { - "id": 543252424, - "labels": ["feature"], - "number": 963, - "title": "Record retries", - "url": "https://github.com/hapijs/lab/issues/963" - }, - { - "id": 543239099, - "labels": ["feature", "breaking changes", "dependency"], - "number": 962, - "title": "Replace Espree with babel-eslint", - "url": "https://github.com/hapijs/lab/issues/962" - } - ], - "number": 173, - "url": "https://github.com/hapijs/lab/milestone/173", - "version": "22.0.2" - }, - { - "date": "2019-12-28T07:27:49Z", - "id": 4960451, - "issues": [ - { - "id": 543085871, - "labels": ["bug"], - "number": 961, - "title": "Update es lint version", - "url": "https://github.com/hapijs/lab/issues/961" - } - ], - "number": 172, - "url": "https://github.com/hapijs/lab/milestone/172", - "version": "22.0.1" - }, - { - "date": "2019-12-28T07:09:49Z", - "id": 4746568, - "issues": [ - { - "id": 543083341, - "labels": ["breaking changes", "dependency"], - "number": 960, - "title": "Drop node 10", - "url": "https://github.com/hapijs/lab/issues/960" - }, - { - "id": 543076515, - "labels": ["breaking changes", "dependency"], - "number": 959, - "title": "Update lint rules", - "url": "https://github.com/hapijs/lab/issues/959" - }, - { - "id": 541912426, - "labels": ["test"], - "number": 957, - "title": "update test assertion for node core changes", - "url": "https://github.com/hapijs/lab/pull/957" - }, - { - "id": 541207991, - "labels": ["bug", "types"], - "number": 955, - "title": "TS: String object type -> string literal type", - "url": "https://github.com/hapijs/lab/pull/955" - }, - { - "id": 541202398, - "labels": ["bug", "types"], - "number": 954, - "title": "TS: Uses an inferred generic on flags.mustCall", - "url": "https://github.com/hapijs/lab/pull/954" - } - ], - "number": 171, - "url": "https://github.com/hapijs/lab/milestone/171", - "version": "22.0.0" - }, - { - "date": "2019-10-14T07:47:36Z", - "id": 4723278, - "issues": [ - { - "id": 506259152, - "labels": ["breaking changes", "types"], - "number": 950, - "title": "Update types", - "url": "https://github.com/hapijs/lab/issues/950" - }, - { - "id": 506259109, - "labels": ["breaking changes", "dependency"], - "number": 949, - "title": "Drop node 8", - "url": "https://github.com/hapijs/lab/issues/949" - } - ], - "number": 170, - "url": "https://github.com/hapijs/lab/milestone/170", - "version": "21.0.0" - }, - { - "date": "2019-10-05T02:51:10Z", - "id": 4684451, - "issues": [ - { - "id": 502866979, - "labels": ["feature"], - "number": 948, - "title": "Tags to skip types test line execution", - "url": "https://github.com/hapijs/lab/issues/948" - }, - { - "id": 498521608, - "labels": ["bug"], - "number": 945, - "title": "coverage-all option triggers TypeError: Cannot set property 'source' of undefined", - "url": "https://github.com/hapijs/lab/issues/945" - } - ], - "number": 169, - "url": "https://github.com/hapijs/lab/milestone/169", - "version": "20.4.0" - }, - { - "date": "2019-09-23T19:23:35Z", - "id": 4681562, - "issues": [ - { - "id": 497278200, - "labels": ["bug"], - "number": 943, - "title": "Fails to load npm modules in ts tests", - "url": "https://github.com/hapijs/lab/issues/943" - } - ], - "number": 168, - "url": "https://github.com/hapijs/lab/milestone/168", - "version": "20.3.2" - }, - { - "date": "2019-09-23T07:09:07Z", - "id": 4681297, - "issues": [ - { - "id": 496928353, - "labels": ["bug"], - "number": 942, - "title": "Support types test execution on windows", - "url": "https://github.com/hapijs/lab/issues/942" - } - ], - "number": 167, - "url": "https://github.com/hapijs/lab/milestone/167", - "version": "20.3.1" - }, - { - "date": "2019-09-23T04:52:06Z", - "id": 4619480, - "issues": [ - { - "id": 496747948, - "labels": ["bug"], - "number": 941, - "title": "External modules coverage fails on windows due to path", - "url": "https://github.com/hapijs/lab/issues/941" - }, - { - "id": 496083799, - "labels": ["feature"], - "number": 940, - "title": "Run TS tests, not just validate them", - "url": "https://github.com/hapijs/lab/issues/940" - }, - { - "id": 451217916, - "labels": ["bug"], - "number": 924, - "title": "New diff is broken", - "url": "https://github.com/hapijs/lab/issues/924" - }, - { - "id": 356041774, - "labels": ["bug"], - "number": 856, - "title": "coverage analysis modifies a function return", - "url": "https://github.com/hapijs/lab/issues/856" - } - ], - "number": 166, - "url": "https://github.com/hapijs/lab/milestone/166", - "version": "20.3.0" - }, - { - "date": "2019-09-01T07:31:52Z", - "id": 4599562, - "issues": [ - { - "id": 487852293, - "labels": ["bug", "dependency"], - "number": 938, - "title": "Stupid typescript", - "url": "https://github.com/hapijs/lab/issues/938" - } - ], - "number": 165, - "url": "https://github.com/hapijs/lab/milestone/165", - "version": "20.2.2" - }, - { - "date": "2019-08-24T00:55:35Z", - "id": 4577272, - "issues": [ - { - "id": 484757752, - "labels": ["feature"], - "number": 937, - "title": "Support coverage of external modules with own coverage reports", - "url": "https://github.com/hapijs/lab/issues/937" - } - ], - "number": 164, - "url": "https://github.com/hapijs/lab/milestone/164", - "version": "20.2.1" - }, - { - "date": "2019-08-15T23:22:50Z", - "id": 4409992, - "issues": [ - { - "id": 481023511, - "labels": ["feature"], - "number": 936, - "title": "Ignore symbol leaks", - "url": "https://github.com/hapijs/lab/issues/936" - } - ], - "number": 162, - "url": "https://github.com/hapijs/lab/milestone/162", - "version": "20.1.0" - }, - { - "date": "2019-08-07T20:02:18Z", - "id": 4556266, - "issues": [ - { - "id": 478102114, - "labels": ["breaking changes", "release notes", "dependency"], - "number": 933, - "title": "Update to eslint 6", - "url": "https://github.com/hapijs/lab/issues/933" - }, - { - "id": 478089339, - "labels": ["feature"], - "number": 932, - "title": "Single line coverage ignore", - "url": "https://github.com/hapijs/lab/issues/932" - } - ], - "number": 163, - "url": "https://github.com/hapijs/lab/milestone/163", - "version": "20.0.0" - }, - { - "date": "2019-06-14T20:35:58Z", - "id": 4325619, - "issues": [ - { - "id": 453926589, - "labels": ["feature"], - "number": 926, - "title": "Implement coverage bypass stack", - "url": "https://github.com/hapijs/lab/pull/926" - }, - { - "id": 447702301, - "labels": ["bug"], - "number": 923, - "title": "Support multiple \"only\" flags", - "url": "https://github.com/hapijs/lab/pull/923" - }, - { - "id": 447343962, - "labels": ["bug"], - "number": 922, - "title": "Support for multiple \"only\"", - "url": "https://github.com/hapijs/lab/issues/922" - }, - { - "id": 408047574, - "labels": ["feature"], - "number": 904, - "title": "Add affordance for coverage flag stack", - "url": "https://github.com/hapijs/lab/issues/904" - } - ], - "number": 161, - "url": "https://github.com/hapijs/lab/milestone/161", - "version": "19.1.0" - }, - { - "date": "2019-05-17T18:16:26Z", - "id": 4319783, - "issues": [ - { - "id": 445559536, - "labels": ["bug"], - "number": 921, - "title": "Handle ts \"Cannot find name\" error when expected", - "url": "https://github.com/hapijs/lab/issues/921" - } - ], - "number": 160, - "url": "https://github.com/hapijs/lab/milestone/160", - "version": "19.0.1" - }, - { - "date": "2019-05-16T07:43:32Z", - "id": 4252648, - "issues": [ - { - "id": 444803704, - "labels": ["breaking changes", "release notes"], - "number": 920, - "title": "19.0.0 Release Notes", - "url": "https://github.com/hapijs/lab/issues/920" - }, - { - "id": 444802175, - "labels": ["breaking changes"], - "number": 919, - "title": "Change console reporter labels", - "url": "https://github.com/hapijs/lab/issues/919" - }, - { - "id": 443069719, - "labels": ["feature"], - "number": 918, - "title": "Typescript test support", - "url": "https://github.com/hapijs/lab/issues/918" - }, - { - "id": 443038205, - "labels": ["breaking changes"], - "number": 917, - "title": "Remove debug-brk", - "url": "https://github.com/hapijs/lab/issues/917" - }, - { - "id": 440921222, - "labels": ["bug", "breaking changes"], - "number": 916, - "title": "Global leak detector skips Symbol() properties", - "url": "https://github.com/hapijs/lab/issues/916" - }, - { - "id": 439146173, - "labels": ["bug", "feature", "breaking changes"], - "number": 915, - "title": "Use util.inspect() for console reporter", - "url": "https://github.com/hapijs/lab/pull/915" - }, - { - "id": 438270598, - "labels": ["bug"], - "number": 914, - "title": "\"console\" reporter crashes if object contains a BigInt", - "url": "https://github.com/hapijs/lab/issues/914" - }, - { - "id": 152034037, - "labels": ["bug"], - "number": 572, - "title": "No mismatch highlighted on -0 !== 0 deep equality mismatch", - "url": "https://github.com/hapijs/lab/issues/572" - } - ], - "number": 159, - "url": "https://github.com/hapijs/lab/milestone/159", - "version": "19.0.0" - }, - { - "date": "2019-04-23T16:54:23Z", - "id": 4184477, - "issues": [ - { - "id": 436288057, - "labels": ["dependency"], - "number": 913, - "title": "Update lint rules modules", - "url": "https://github.com/hapijs/lab/issues/913" - }, - { - "id": 436287715, - "labels": ["bug"], - "number": 912, - "title": "Add globalThis to symbols", - "url": "https://github.com/hapijs/lab/issues/912" - } - ], - "number": 158, - "url": "https://github.com/hapijs/lab/milestone/158", - "version": "18.1.2" - }, - { - "date": "2019-04-23T16:45:14Z", - "id": 4184434, - "issues": [ - { - "id": 427199608, - "labels": ["dependency"], - "number": 911, - "title": "Update code", - "url": "https://github.com/hapijs/lab/issues/911" - } - ], - "number": 157, - "url": "https://github.com/hapijs/lab/milestone/157", - "version": "18.1.1" - }, - { - "date": "2019-03-29T21:40:22Z", - "id": 4049403, - "issues": [ - { - "id": 427188223, - "labels": ["non issue"], - "number": 910, - "title": "Change module namespace", - "url": "https://github.com/hapijs/lab/issues/910" - } - ], - "number": 156, - "url": "https://github.com/hapijs/lab/milestone/156", - "version": "18.1.0" - }, - { - "date": "2019-02-12T01:05:36Z", - "id": 3908506, - "issues": [ - { - "id": 409059131, - "labels": ["dependency"], - "number": 905, - "title": "Update deps", - "url": "https://github.com/hapijs/lab/issues/905" - } - ], - "number": 155, - "url": "https://github.com/hapijs/lab/milestone/155", - "version": "18.0.2" - }, - { - "date": "2018-12-17T23:01:47Z", - "id": 3819611, - "issues": [ - { - "id": 384006300, - "labels": ["bug", "dependency"], - "number": 898, - "title": "Switch back to Hoek.clone from lodash.deepClone.", - "url": "https://github.com/hapijs/lab/pull/898" - }, - { - "id": 381946973, - "labels": ["bug"], - "number": 895, - "title": "Fix coverage with sourcemaps inlined via Transform API.", - "url": "https://github.com/hapijs/lab/pull/895" - } - ], - "number": 154, - "url": "https://github.com/hapijs/lab/milestone/154", - "version": "18.0.1" - }, - { - "date": "2018-11-13T22:46:35Z", - "id": 3792012, - "issues": [ - { - "id": 380387019, - "labels": ["bug", "breaking changes"], - "number": 894, - "title": "Have correct exit code with multiple reporters", - "url": "https://github.com/hapijs/lab/pull/894" - }, - { - "id": 380002574, - "labels": ["lts"], - "number": 893, - "title": "Properly propagate term sig to child lab process", - "url": "https://github.com/hapijs/lab/pull/893" - }, - { - "id": 379995072, - "labels": ["documentation"], - "number": 892, - "title": "Add note about how to get a tests ID", - "url": "https://github.com/hapijs/lab/pull/892" - }, - { - "id": 379993286, - "labels": ["dependency", "lts"], - "number": 891, - "title": "Update eslint version", - "url": "https://github.com/hapijs/lab/pull/891" - }, - { - "id": 379989688, - "labels": ["lts"], - "number": 890, - "title": "Remove deprecated espree option", - "url": "https://github.com/hapijs/lab/pull/890" - }, - { - "id": 379987001, - "labels": ["documentation"], - "number": 889, - "title": "Remove docs about custom linter option", - "url": "https://github.com/hapijs/lab/pull/889" - }, - { - "id": 379982831, - "labels": ["bug"], - "number": 888, - "title": "Compare coverage pattern to canonical path", - "url": "https://github.com/hapijs/lab/pull/888" - }, - { - "id": 379369203, - "labels": ["lts"], - "number": 885, - "title": "Centralize espree options", - "url": "https://github.com/hapijs/lab/pull/885" - }, - { - "id": 379367206, - "labels": ["lts"], - "number": 884, - "title": "Remove old parallel flag from test", - "url": "https://github.com/hapijs/lab/pull/884" - }, - { - "id": 379364149, - "labels": ["bug"], - "number": 883, - "title": " Use correct gray color code", - "url": "https://github.com/hapijs/lab/pull/883" - }, - { - "id": 378503724, - "labels": ["test"], - "number": 882, - "title": "Add missing coverage and remove unnecessary checks", - "url": "https://github.com/hapijs/lab/pull/882" - }, - { - "id": 376722829, - "labels": ["breaking changes"], - "number": 878, - "title": "Fix false-positive coverage of if statements (REDUCES REPORTED COVERAGE!)", - "url": "https://github.com/hapijs/lab/pull/878" - }, - { - "id": 355575171, - "labels": ["bug"], - "number": 855, - "title": "Update linter configuration?", - "url": "https://github.com/hapijs/lab/issues/855" - }, - { - "id": 353342955, - "labels": ["bug"], - "number": 852, - "title": "Console reporter: \"gray\" is actually light green", - "url": "https://github.com/hapijs/lab/issues/852" - }, - { - "id": 336702275, - "labels": ["bug"], - "number": 842, - "title": "Coverage fails for multiple conditionals on same line (logical operators)", - "url": "https://github.com/hapijs/lab/issues/842" - }, - { - "id": 274439781, - "labels": ["documentation"], - "number": 788, - "title": "Documentation on using --id", - "url": "https://github.com/hapijs/lab/issues/788" - }, - { - "id": 261145156, - "labels": ["lts"], - "number": 762, - "title": "Request to consolidate parsers", - "url": "https://github.com/hapijs/lab/issues/762" - }, - { - "id": 260357665, - "labels": ["bug", "test"], - "number": 758, - "title": "CLI failure test doesn't appear to test what it claims", - "url": "https://github.com/hapijs/lab/issues/758" - } - ], - "number": 152, - "url": "https://github.com/hapijs/lab/milestone/152", - "version": "18.0.0" - }, - { - "date": "2018-11-05T15:17:31Z", - "id": 3792161, - "issues": [ - { - "id": 377032713, - "labels": ["feature"], - "number": 881, - "title": "Add coverage-pattern option", - "url": "https://github.com/hapijs/lab/pull/881" - }, - { - "id": 376998481, - "labels": ["non issue"], - "number": 880, - "title": "Remove engines", - "url": "https://github.com/hapijs/lab/issues/880" - }, - { - "id": 354360333, - "labels": ["feature"], - "number": 853, - "title": "Coverage being analized on the test file", - "url": "https://github.com/hapijs/lab/issues/853" - } - ], - "number": 153, - "url": "https://github.com/hapijs/lab/milestone/153", - "version": "17.3.0" - }, - { - "date": "2018-11-02T21:30:05Z", - "id": 3789019, - "issues": [ - { - "id": 376965969, - "labels": ["feature"], - "number": 879, - "title": "Check file pattern on coverage traversal", - "url": "https://github.com/hapijs/lab/pull/879" - }, - { - "id": 376631018, - "labels": ["feature"], - "number": 877, - "title": "Add --coverage-all option", - "url": "https://github.com/hapijs/lab/pull/877" - }, - { - "id": 232073949, - "labels": ["feature"], - "number": 710, - "title": "setting coverage-path doesn't include all code in path", - "url": "https://github.com/hapijs/lab/issues/710" - } - ], - "number": 151, - "url": "https://github.com/hapijs/lab/milestone/151", - "version": "17.2.0" - }, - { - "date": "2018-11-01T20:09:47Z", - "id": 3787396, - "issues": [ - { - "id": 376547926, - "labels": ["dependency"], - "number": 876, - "title": "Update dependencies", - "url": "https://github.com/hapijs/lab/pull/876" - }, - { - "id": 376544687, - "labels": ["non issue"], - "number": 875, - "title": "Revert console cov report truncation", - "url": "https://github.com/hapijs/lab/pull/875" - }, - { - "id": 375730097, - "labels": ["feature"], - "number": 871, - "title": "Improve console coverage report readability", - "url": "https://github.com/hapijs/lab/pull/871" - } - ], - "number": 150, - "url": "https://github.com/hapijs/lab/milestone/150", - "version": "17.1.0" - }, - { - "date": "2018-11-01T07:08:05Z", - "id": 3786521, - "issues": [ - { - "id": 376278628, - "labels": ["dependency"], - "number": 874, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/lab/issues/874" - } - ], - "number": 149, - "url": "https://github.com/hapijs/lab/milestone/149", - "version": "17.0.4" - }, - { - "date": "2018-10-31T20:53:09Z", - "id": 3769405, - "issues": [ - { - "id": 376073214, - "labels": ["bug"], - "number": 873, - "title": "Fails to handle non-Error errors", - "url": "https://github.com/hapijs/lab/issues/873" - }, - { - "id": 374744353, - "labels": ["bug"], - "number": 870, - "title": "Update type definitions to match documented API", - "url": "https://github.com/hapijs/lab/pull/870" - } - ], - "number": 148, - "url": "https://github.com/hapijs/lab/milestone/148", - "version": "17.0.3" - }, - { - "date": "2018-10-25T17:55:24Z", - "id": 3766142, - "issues": [ - { - "id": 374047602, - "labels": ["bug"], - "number": 869, - "title": "[ENHANCEMENT] Nullified test context on finish to prevent memory leaks", - "url": "https://github.com/hapijs/lab/pull/869" - }, - { - "id": 374003101, - "labels": ["bug"], - "number": 868, - "title": "Possible context memory leak?", - "url": "https://github.com/hapijs/lab/issues/868" - } - ], - "number": 147, - "url": "https://github.com/hapijs/lab/milestone/147", - "version": "17.0.2" - }, - { - "date": "2018-10-24T17:57:53Z", - "id": 3763162, - "issues": [ - { - "id": 373563999, - "labels": ["bug"], - "number": 867, - "title": "No longer skip scripts when multiple only", - "url": "https://github.com/hapijs/lab/pull/867" - } - ], - "number": 146, - "url": "https://github.com/hapijs/lab/milestone/146", - "version": "17.0.1" - }, - { - "date": "2018-10-23T20:25:38Z", - "id": 3641717, - "issues": [ - { - "id": 373176218, - "labels": ["lts"], - "number": 866, - "title": "Add node 11 to travis", - "url": "https://github.com/hapijs/lab/pull/866" - }, - { - "id": 373173229, - "labels": ["lts"], - "number": 865, - "title": "handle queueMicrotask global added in Node 11", - "url": "https://github.com/hapijs/lab/pull/865" - }, - { - "id": 373163702, - "labels": ["feature", "breaking changes"], - "number": 864, - "title": "Add testsuites output to junit", - "url": "https://github.com/hapijs/lab/pull/864" - }, - { - "id": 373088519, - "labels": ["bug", "breaking changes", "dependency"], - "number": 863, - "title": "Upgrade source-map and support limited sourcemap descriptors", - "url": "https://github.com/hapijs/lab/pull/863" - }, - { - "id": 363310766, - "labels": ["bug"], - "number": 860, - "title": "Fixed skipped console output color", - "url": "https://github.com/hapijs/lab/pull/860" - }, - { - "id": 345553787, - "labels": ["feature", "breaking changes"], - "number": 846, - "title": "Only is no longer limited to 1 test", - "url": "https://github.com/hapijs/lab/pull/846" - }, - { - "id": 344974148, - "labels": ["bug"], - "number": 845, - "title": "junit report generated has both classname and the name as \"classname + ' ' + name\".", - "url": "https://github.com/hapijs/lab/issues/845" - }, - { - "id": 258271091, - "labels": ["bug"], - "number": 750, - "title": "html reporter errors when encountering sourcemap chunks with typescript", - "url": "https://github.com/hapijs/lab/issues/750" - } - ], - "number": 145, - "url": "https://github.com/hapijs/lab/milestone/145", - "version": "17.0.0" - }, - { - "date": "2018-09-10T21:02:09Z", - "id": 3588004, - "issues": [ - { - "id": 356335646, - "labels": ["lts"], - "number": 858, - "title": "Update ecmaversion in eslint", - "url": "https://github.com/hapijs/lab/pull/858" - }, - { - "id": 353337976, - "labels": ["feature"], - "number": 851, - "title": "Fix stack trace trimming", - "url": "https://github.com/hapijs/lab/pull/851" - }, - { - "id": 353285642, - "labels": ["documentation"], - "number": 850, - "title": "Document `paths` parameter in .labrc.js", - "url": "https://github.com/hapijs/lab/pull/850" - } - ], - "number": 144, - "url": "https://github.com/hapijs/lab/milestone/144", - "version": "16.1.0" - }, - { - "date": "2018-08-21T19:37:04Z", - "id": 3402431, - "issues": [ - { - "id": 352672715, - "labels": ["bug", "dependency"], - "number": 849, - "title": "Update to eslint v5", - "url": "https://github.com/hapijs/lab/pull/849" - }, - { - "id": 344450011, - "labels": ["bug", "breaking changes"], - "number": 844, - "title": "Disable dep timeout, which is doc default", - "url": "https://github.com/hapijs/lab/pull/844" - }, - { - "id": 344077040, - "labels": ["feature"], - "number": 843, - "title": "Allow custom handling for global errors/rejections", - "url": "https://github.com/hapijs/lab/pull/843" - }, - { - "id": 333817071, - "labels": ["breaking changes"], - "number": 840, - "title": "update eslint-config-hapi dependency", - "url": "https://github.com/hapijs/lab/pull/840" - }, - { - "id": 270175090, - "labels": ["feature"], - "number": 782, - "title": "Disable \"uncaughtException\" handler for tests", - "url": "https://github.com/hapijs/lab/issues/782" - }, - { - "id": 246292317, - "labels": ["bug"], - "number": 729, - "title": "-M, --context-timeout is ignored; test passed even it is not triggered", - "url": "https://github.com/hapijs/lab/issues/729" - } - ], - "number": 143, - "url": "https://github.com/hapijs/lab/milestone/143", - "version": "16.0.0" - }, - { - "date": "2018-06-05T15:38:53Z", - "id": 3342034, - "issues": [ - { - "id": 328568401, - "labels": ["feature"], - "number": 838, - "title": "Support test context from befores", - "url": "https://github.com/hapijs/lab/pull/838" - }, - { - "id": 328555290, - "labels": ["feature"], - "number": 837, - "title": "Add BigInt globals", - "url": "https://github.com/hapijs/lab/pull/837" - }, - { - "id": 324178571, - "labels": ["feature"], - "number": 836, - "title": "Update coverage ECMA version to 9 (2018).", - "url": "https://github.com/hapijs/lab/pull/836" - } - ], - "number": 142, - "url": "https://github.com/hapijs/lab/milestone/142", - "version": "15.5.0" - }, - { - "date": "2018-05-13T14:53:07Z", - "id": 3326910, - "issues": [ - { - "id": 322599504, - "labels": ["bug"], - "number": 833, - "title": "Add WHATWG Encoding API globals", - "url": "https://github.com/hapijs/lab/pull/833" - } - ], - "number": 141, - "url": "https://github.com/hapijs/lab/milestone/141", - "version": "15.4.5" - }, - { - "date": "2018-05-07T18:35:21Z", - "id": 3325967, - "issues": [ - { - "id": 320906902, - "labels": ["bug"], - "number": 831, - "title": "Revert \"Wait for stdout to stop writing to exit\"", - "url": "https://github.com/hapijs/lab/pull/831" - } - ], - "number": 140, - "url": "https://github.com/hapijs/lab/milestone/140", - "version": "15.4.4" - }, - { - "date": "2018-05-07T15:09:19Z", - "id": 3325843, - "issues": [ - { - "id": 318614645, - "labels": ["bug"], - "number": 829, - "title": "Wait for stdout to stop writing to exit", - "url": "https://github.com/hapijs/lab/pull/829" - }, - { - "id": 310052692, - "labels": ["bug"], - "number": 824, - "title": "Calculate relative filename using node's path", - "url": "https://github.com/hapijs/lab/pull/824" - }, - { - "id": 310049654, - "labels": ["bug"], - "number": 823, - "title": "Transforming files does not work with yarn workspaces", - "url": "https://github.com/hapijs/lab/issues/823" - } - ], - "number": 139, - "url": "https://github.com/hapijs/lab/milestone/139", - "version": "15.4.3" - }, - { - "date": "2018-05-07T14:28:06Z", - "id": 3204223, - "issues": [ - { - "id": 320596196, - "labels": ["bug"], - "number": 830, - "title": "Fix coverage on transformed files. Fixes #826.", - "url": "https://github.com/hapijs/lab/pull/830" - } - ], - "number": 138, - "url": "https://github.com/hapijs/lab/milestone/138", - "version": "15.4.2" - }, - { - "date": "2018-03-20T18:14:16Z", - "id": 3180957, - "issues": [ - { - "id": 306970002, - "labels": ["dependency"], - "number": 821, - "title": "Update eslint", - "url": "https://github.com/hapijs/lab/pull/821" - }, - { - "id": 306890924, - "labels": ["bug"], - "number": 820, - "title": "Ignore default-plan-threshold for anything else than tests", - "url": "https://github.com/hapijs/lab/pull/820" - } - ], - "number": 137, - "url": "https://github.com/hapijs/lab/milestone/137", - "version": "15.4.1" - }, - { - "date": "2018-03-12T16:05:57Z", - "id": 3172736, - "issues": [ - { - "id": 304342903, - "labels": ["feature"], - "number": 819, - "title": "Implement minimum assertions threshold. Closes #690.", - "url": "https://github.com/hapijs/lab/pull/819" - }, - { - "id": 214388590, - "labels": ["feature"], - "number": 690, - "title": "Allow to specify minimum number of executed assertions", - "url": "https://github.com/hapijs/lab/issues/690" - } - ], - "number": 135, - "url": "https://github.com/hapijs/lab/milestone/135", - "version": "15.4.0" - }, - { - "date": "2018-03-08T21:31:40Z", - "id": 3144715, - "issues": [ - { - "id": 303014576, - "labels": ["security", "dependency"], - "number": 816, - "title": "Bump diff to 3.5", - "url": "https://github.com/hapijs/lab/pull/816" - } - ], - "number": 134, - "url": "https://github.com/hapijs/lab/milestone/134", - "version": "15.3.1" - }, - { - "date": "2018-02-26T17:45:39Z", - "id": 3103352, - "issues": [ - { - "id": 300330902, - "labels": ["dependency"], - "number": 815, - "title": "Update eslint dep", - "url": "https://github.com/hapijs/lab/pull/815" - }, - { - "id": 299389009, - "labels": ["bug"], - "number": 813, - "title": "Fail test if a falsy value is thrown by the test", - "url": "https://github.com/hapijs/lab/pull/813" - }, - { - "id": 299341766, - "labels": ["bug"], - "number": 812, - "title": "awaiting a rejected promise can still pass test", - "url": "https://github.com/hapijs/lab/issues/812" - }, - { - "id": 296553572, - "labels": ["feature"], - "number": 811, - "title": "Can exclude files from coverage", - "url": "https://github.com/hapijs/lab/pull/811" - } - ], - "number": 133, - "url": "https://github.com/hapijs/lab/milestone/133", - "version": "15.3.0" - }, - { - "date": "2018-02-09T17:40:15Z", - "id": 3075580, - "issues": [ - { - "id": 295939208, - "labels": ["bug"], - "number": 810, - "title": "Write CLI errors to stderr", - "url": "https://github.com/hapijs/lab/pull/810" - }, - { - "id": 295927472, - "labels": ["dependency"], - "number": 809, - "title": "Update eslint version", - "url": "https://github.com/hapijs/lab/pull/809" - }, - { - "id": 295808036, - "labels": ["lts"], - "number": 808, - "title": "add URL and URLSearchParams to global variables", - "url": "https://github.com/hapijs/lab/pull/808" - }, - { - "id": 93918006, - "labels": ["bug"], - "number": 399, - "title": "Missing exports.lab causes error when generating html coverage report ", - "url": "https://github.com/hapijs/lab/issues/399" - } - ], - "number": 132, - "url": "https://github.com/hapijs/lab/milestone/132", - "version": "15.2.2" - }, - { - "date": "2018-01-30T17:29:41Z", - "id": 3023445, - "issues": [ - { - "id": 292855071, - "labels": ["bug"], - "number": 807, - "title": "Report correct exit code with multiple reporters", - "url": "https://github.com/hapijs/lab/pull/807" - }, - { - "id": 292477233, - "labels": ["test"], - "number": 806, - "title": "Add multiple reporter tests", - "url": "https://github.com/hapijs/lab/pull/806" - }, - { - "id": 292454692, - "labels": ["dependency"], - "number": 805, - "title": "Update eslint version", - "url": "https://github.com/hapijs/lab/pull/805" - }, - { - "id": 291894481, - "labels": ["bug"], - "number": 804, - "title": "Using multiple reporters results into wrong exit code if test fails", - "url": "https://github.com/hapijs/lab/issues/804" - } - ], - "number": 131, - "url": "https://github.com/hapijs/lab/milestone/131", - "version": "15.2.1" - }, - { - "date": "2018-01-09T16:45:24Z", - "id": 2882205, - "issues": [ - { - "id": 287152838, - "labels": ["dependency"], - "number": 803, - "title": "Update eslint", - "url": "https://github.com/hapijs/lab/pull/803" - }, - { - "id": 286877687, - "labels": ["feature"], - "number": 802, - "title": "Support object rest/spread under eslint", - "url": "https://github.com/hapijs/lab/pull/802" - }, - { - "id": 286162374, - "labels": ["documentation"], - "number": 801, - "title": "update to use expect from code", - "url": "https://github.com/hapijs/lab/pull/801" - }, - { - "id": 280751501, - "labels": ["lts"], - "number": 797, - "title": "Update TypeScript typings", - "url": "https://github.com/hapijs/lab/pull/797" - }, - { - "id": 278810397, - "labels": ["documentation"], - "number": 794, - "title": "Fix usage example of flags.onCleanup", - "url": "https://github.com/hapijs/lab/pull/794" - }, - { - "id": 277537147, - "labels": ["bug"], - "number": 793, - "title": "Added index.d.ts to npmignore", - "url": "https://github.com/hapijs/lab/pull/793" - }, - { - "id": 272344090, - "labels": ["feature"], - "number": 786, - "title": "Add mustCall feature", - "url": "https://github.com/hapijs/lab/pull/786" - }, - { - "id": 271201654, - "labels": ["documentation"], - "number": 784, - "title": "Updated readme to include alias of ignore", - "url": "https://github.com/hapijs/lab/pull/784" - }, - { - "id": 176684579, - "labels": ["documentation"], - "number": 641, - "title": "ignore setting not supported in .labrc.js", - "url": "https://github.com/hapijs/lab/issues/641" - } - ], - "number": 129, - "url": "https://github.com/hapijs/lab/milestone/129", - "version": "15.2.0" - }, - { - "date": "2017-11-01T23:56:07Z", - "id": 2873176, - "issues": [ - { - "id": 270483247, - "labels": ["bug"], - "number": 783, - "title": "Fix for node 9", - "url": "https://github.com/hapijs/lab/pull/783" - }, - { - "id": 269663411, - "labels": ["documentation"], - "number": 779, - "title": "Remove outdated assert statements", - "url": "https://github.com/hapijs/lab/pull/779" - }, - { - "id": 269546864, - "labels": ["documentation"], - "number": 778, - "title": "assertion library \"code\" is not set by default / documentation is wrong", - "url": "https://github.com/hapijs/lab/issues/778" - }, - { - "id": 258202742, - "labels": ["bug"], - "number": 748, - "title": "New globals are coming", - "url": "https://github.com/hapijs/lab/issues/748" - } - ], - "number": 128, - "url": "https://github.com/hapijs/lab/milestone/128", - "version": "15.1.2" - }, - { - "date": "2017-10-30T01:28:09Z", - "id": 2872014, - "issues": [ - { - "id": 269371718, - "labels": ["bug"], - "number": 776, - "title": "Fix test script error duplicates", - "url": "https://github.com/hapijs/lab/pull/776" - } - ], - "number": 127, - "url": "https://github.com/hapijs/lab/milestone/127", - "version": "15.1.1" - }, - { - "date": "2017-10-29T05:05:39Z", - "id": 2860487, - "issues": [ - { - "id": 268467280, - "labels": ["dependency"], - "number": 774, - "title": "Update eslint", - "url": "https://github.com/hapijs/lab/pull/774" - }, - { - "id": 268065885, - "labels": ["bug"], - "number": 772, - "title": "Remove code as default assertion library. Resolves #771", - "url": "https://github.com/hapijs/lab/pull/772" - }, - { - "id": 267871574, - "labels": ["feature"], - "number": 769, - "title": "Display parser errors when requiring scripts", - "url": "https://github.com/hapijs/lab/pull/769" - }, - { - "id": 267851826, - "labels": ["documentation"], - "number": 768, - "title": "Update README.md", - "url": "https://github.com/hapijs/lab/pull/768" - } - ], - "number": 126, - "url": "https://github.com/hapijs/lab/milestone/126", - "version": "15.1.0" - }, - { - "date": "2017-10-23T20:17:40Z", - "id": 2833407, - "issues": [ - { - "id": 268057402, - "labels": ["breaking changes", "release notes"], - "number": 770, - "title": "15.0.0 Release Notes", - "url": "https://github.com/hapijs/lab/issues/770" - }, - { - "id": 265011154, - "labels": ["breaking changes"], - "number": 766, - "title": "Remove domains and callbacks", - "url": "https://github.com/hapijs/lab/pull/766" - }, - { - "id": 263324379, - "labels": ["feature", "breaking changes"], - "number": 765, - "title": "Use of onCleanup() when test returns a promise", - "url": "https://github.com/hapijs/lab/issues/765" - }, - { - "id": 258310982, - "labels": ["breaking changes"], - "number": 752, - "title": "Remove domains in favor of try/catch on async/await", - "url": "https://github.com/hapijs/lab/issues/752" - } - ], - "number": 125, - "url": "https://github.com/hapijs/lab/milestone/125", - "version": "15.0.0" - }, - { - "date": "2018-03-08T21:34:51Z", - "id": 2940549, - "issues": [ - { - "id": 303045253, - "labels": ["dependency"], - "number": 817, - "title": "Bump diff to 3.5 (v14.x.x)", - "url": "https://github.com/hapijs/lab/pull/817" - } - ], - "number": 130, - "url": "https://github.com/hapijs/lab/milestone/130", - "version": "14.3.3" - }, - { - "date": "2017-10-23T20:17:39Z", - "id": 2786923, - "issues": [ - { - "id": 276941893, - "labels": ["bug"], - "number": 792, - "title": "Fix for node 9", - "url": "https://github.com/hapijs/lab/pull/792" - }, - { - "id": 261722291, - "labels": ["dependency"], - "number": 763, - "title": "Update deps: eslint, source-map", - "url": "https://github.com/hapijs/lab/pull/763" - }, - { - "id": 260365080, - "labels": ["bug"], - "number": 760, - "title": "Helpful message when path not found", - "url": "https://github.com/hapijs/lab/pull/760" - }, - { - "id": 260363235, - "labels": ["bug"], - "number": 759, - "title": "More helpful message when test path not found", - "url": "https://github.com/hapijs/lab/issues/759" - } - ], - "number": 124, - "url": "https://github.com/hapijs/lab/milestone/124", - "version": "14.3.2" - }, - { - "date": "2017-09-23T14:24:05Z", - "id": 2770611, - "issues": [ - { - "id": 260001470, - "labels": ["bug"], - "number": 755, - "title": "Fix RangeError for --id when skipping a large number of tests", - "url": "https://github.com/hapijs/lab/pull/755" - } - ], - "number": 123, - "url": "https://github.com/hapijs/lab/milestone/123", - "version": "14.3.1" - }, - { - "date": "2017-09-16T04:01:12Z", - "id": 2736260, - "issues": [ - { - "id": 258205449, - "labels": ["feature"], - "number": 749, - "title": "update eslint parser version to 8", - "url": "https://github.com/hapijs/lab/pull/749" - }, - { - "id": 256227114, - "labels": ["documentation"], - "number": 746, - "title": "#647 add example of multiple reporters in .labrc.js", - "url": "https://github.com/hapijs/lab/pull/746" - } - ], - "number": 122, - "url": "https://github.com/hapijs/lab/milestone/122", - "version": "14.3.0" - }, - { - "date": "2017-08-31T15:59:07Z", - "id": 2724088, - "issues": [ - { - "id": 254382668, - "labels": ["dependency"], - "number": 745, - "title": "Update deps: eslint/supports-color", - "url": "https://github.com/hapijs/lab/pull/745" - }, - { - "id": 254357714, - "labels": ["bug"], - "number": 744, - "title": "Better color detection", - "url": "https://github.com/hapijs/lab/pull/744" - } - ], - "number": 121, - "url": "https://github.com/hapijs/lab/milestone/121", - "version": "14.2.2" - }, - { - "date": "2017-08-25T21:16:09Z", - "id": 2702556, - "issues": [ - { - "id": 253018824, - "labels": ["documentation"], - "number": 743, - "title": "Document verbosity value", - "url": "https://github.com/hapijs/lab/pull/743" - }, - { - "id": 253015719, - "labels": ["documentation"], - "number": 742, - "title": "Fix readme linting issues", - "url": "https://github.com/hapijs/lab/pull/742" - }, - { - "id": 252976730, - "labels": ["bug"], - "number": 740, - "title": "add object spread option", - "url": "https://github.com/hapijs/lab/pull/740" - }, - { - "id": 252974949, - "labels": ["bug"], - "number": 739, - "title": "Coverage is broken when using object spread operator", - "url": "https://github.com/hapijs/lab/issues/739" - }, - { - "id": 251367522, - "labels": ["support", "documentation"], - "number": 737, - "title": "Please add an explanation of verbosity; what does 'verbosity: 3.00' mean?", - "url": "https://github.com/hapijs/lab/issues/737" - } - ], - "number": 120, - "url": "https://github.com/hapijs/lab/milestone/120", - "version": "14.2.1" - }, - { - "date": "2017-08-15T14:02:20Z", - "id": 2697170, - "issues": [ - { - "id": 250186966, - "labels": ["lts"], - "number": 735, - "title": "Document definition file", - "url": "https://github.com/hapijs/lab/pull/735" - }, - { - "id": 249897280, - "labels": ["feature"], - "number": 734, - "title": "Add TypeScript definition file", - "url": "https://github.com/hapijs/lab/pull/734" - }, - { - "id": 247753017, - "labels": ["feature"], - "number": 731, - "title": "Typescript support", - "url": "https://github.com/hapijs/lab/issues/731" - } - ], - "number": 119, - "url": "https://github.com/hapijs/lab/milestone/119", - "version": "14.2.0" - }, - { - "date": "2017-08-11T20:11:29Z", - "id": 2638921, - "issues": [ - { - "id": 249735086, - "labels": ["dependency"], - "number": 733, - "title": "Update dependencies: eslint, espree", - "url": "https://github.com/hapijs/lab/pull/733" - }, - { - "id": 249729319, - "labels": ["bug"], - "number": 732, - "title": "Be explicit about errors thrown in before/afters", - "url": "https://github.com/hapijs/lab/pull/732" - }, - { - "id": 245440880, - "labels": ["bug"], - "number": 728, - "title": "Help: Multiple callbacks error with mongo AND lab.before", - "url": "https://github.com/hapijs/lab/issues/728" - } - ], - "number": 118, - "url": "https://github.com/hapijs/lab/milestone/118", - "version": "14.1.2" - }, - { - "date": "2017-07-13T11:23:53Z", - "id": 2601804, - "issues": [ - { - "id": 242667588, - "labels": ["test"], - "number": 727, - "title": "Fix failing test", - "url": "https://github.com/hapijs/lab/pull/727" - }, - { - "id": 242315128, - "labels": ["bug"], - "number": 726, - "title": "Fix npm 5.2 error", - "url": "https://github.com/hapijs/lab/pull/726" - } - ], - "number": 117, - "url": "https://github.com/hapijs/lab/milestone/117", - "version": "14.1.1" - }, - { - "date": "2017-06-24T01:09:51Z", - "id": 2581545, - "issues": [ - { - "id": 238273195, - "labels": ["feature"], - "number": 722, - "title": "Expose Code features directly on script", - "url": "https://github.com/hapijs/lab/pull/722" - }, - { - "id": 237072019, - "labels": ["bug"], - "number": 721, - "title": "Failed befores properly fail related tests", - "url": "https://github.com/hapijs/lab/pull/721" - }, - { - "id": 87055283, - "labels": ["bug"], - "number": 370, - "title": "Fail conditions documentation is unclear", - "url": "https://github.com/hapijs/lab/issues/370" - } - ], - "number": 116, - "url": "https://github.com/hapijs/lab/milestone/116", - "version": "14.1.0" - }, - { - "date": "2017-06-13T22:27:23Z", - "id": 2581424, - "issues": [ - { - "id": 235708927, - "labels": ["bug"], - "number": 720, - "title": "Support eslint 4 ignore path", - "url": "https://github.com/hapijs/lab/pull/720" - } - ], - "number": 115, - "url": "https://github.com/hapijs/lab/milestone/115", - "version": "14.0.1" - }, - { - "date": "2017-06-13T20:49:06Z", - "id": 2525188, - "issues": [ - { - "id": 235687024, - "labels": ["breaking changes", "release notes"], - "number": 719, - "title": "14.0.0 Release Notes", - "url": "https://github.com/hapijs/lab/issues/719" - }, - { - "id": 235621814, - "labels": ["bug", "breaking changes"], - "number": 718, - "title": "Error on tests with both promise and callback", - "url": "https://github.com/hapijs/lab/pull/718" - }, - { - "id": 235600505, - "labels": ["breaking changes", "dependency"], - "number": 717, - "title": "Update eslint/code versions", - "url": "https://github.com/hapijs/lab/pull/717" - }, - { - "id": 235429623, - "labels": ["breaking changes", "dependency"], - "number": 715, - "title": "Upgrade to ESLint v4", - "url": "https://github.com/hapijs/lab/issues/715" - }, - { - "id": 232430144, - "labels": ["feature", "breaking changes"], - "number": 713, - "title": "Bundle code as default assertion library", - "url": "https://github.com/hapijs/lab/pull/713" - }, - { - "id": 232424259, - "labels": ["feature", "breaking changes"], - "number": 712, - "title": "Include code assertion library", - "url": "https://github.com/hapijs/lab/issues/712" - }, - { - "id": 154633360, - "labels": ["bug", "breaking changes"], - "number": 580, - "title": "Confusing warning when mixing Promise and callback style", - "url": "https://github.com/hapijs/lab/issues/580" - } - ], - "number": 114, - "url": "https://github.com/hapijs/lab/milestone/114", - "version": "14.0.0" - }, - { - "date": "2017-05-16T20:02:52Z", - "id": 2491802, - "issues": [ - { - "id": 229148260, - "labels": ["dependency"], - "number": 707, - "title": "Update espree version", - "url": "https://github.com/hapijs/lab/pull/707" - }, - { - "id": 229146376, - "labels": ["dependency"], - "number": 706, - "title": "upgrade eslint to 3.19.x", - "url": "https://github.com/hapijs/lab/pull/706" - }, - { - "id": 228838079, - "labels": ["dependency"], - "number": 705, - "title": "Error when doing code coverage: \"ecmaVersion must be 3, 5, 6, or 7.\"", - "url": "https://github.com/hapijs/lab/issues/705" - }, - { - "id": 227158508, - "labels": ["feature"], - "number": 704, - "title": "Add WebAssembly to allowed globals", - "url": "https://github.com/hapijs/lab/pull/704" - }, - { - "id": 221119919, - "labels": ["feature"], - "number": 697, - "title": "Node 8 will add `WebAssembly` global", - "url": "https://github.com/hapijs/lab/issues/697" - } - ], - "number": 113, - "url": "https://github.com/hapijs/lab/milestone/113", - "version": "13.1.0" - }, - { - "date": "2017-05-01T15:09:15Z", - "id": 2489806, - "issues": [ - { - "id": 225399880, - "labels": ["bug"], - "number": 701, - "title": "Ignore while a promise returns inside a test with a value. Only watch for rejection", - "url": "https://github.com/hapijs/lab/pull/701" - }, - { - "id": 225397446, - "labels": ["bug"], - "number": 700, - "title": "Promises that return values now error on finished", - "url": "https://github.com/hapijs/lab/issues/700" - } - ], - "number": 112, - "url": "https://github.com/hapijs/lab/milestone/112", - "version": "13.0.4" - }, - { - "date": "2017-04-29T16:30:45Z", - "id": 2455727, - "issues": [ - { - "id": 225267509, - "labels": ["bug"], - "number": 699, - "title": "Fix a domain leak and onCleanup failures", - "url": "https://github.com/hapijs/lab/pull/699" - } - ], - "number": 111, - "url": "https://github.com/hapijs/lab/milestone/111", - "version": "13.0.3" - }, - { - "date": "2017-04-13T15:59:55Z", - "id": 2379927, - "issues": [ - { - "id": 221589491, - "labels": ["bug"], - "number": 698, - "title": "Improve bail strategy not to execute next befores/afters", - "url": "https://github.com/hapijs/lab/pull/698" - }, - { - "id": 219250158, - "labels": ["documentation"], - "number": 696, - "title": "Extending linting", - "url": "https://github.com/hapijs/lab/issues/696" - }, - { - "id": 215162595, - "labels": ["documentation"], - "number": 693, - "title": "plan and Lab.assertions not working", - "url": "https://github.com/hapijs/lab/issues/693" - }, - { - "id": 214227039, - "labels": ["test"], - "number": 689, - "title": "Fix test", - "url": "https://github.com/hapijs/lab/pull/689" - }, - { - "id": 214109810, - "labels": ["test"], - "number": 688, - "title": "Add failing test for conditional value", - "url": "https://github.com/hapijs/lab/pull/688" - } - ], - "number": 110, - "url": "https://github.com/hapijs/lab/milestone/110", - "version": "13.0.2" - }, - { - "date": "2017-03-12T01:29:34Z", - "id": 2379649, - "issues": [ - { - "id": 213573276, - "labels": ["bug"], - "number": 686, - "title": "Fix coverage of zero-comment scripts", - "url": "https://github.com/hapijs/lab/pull/686" - }, - { - "id": 213553237, - "labels": ["bug"], - "number": 685, - "title": "TypeError: Reduce of empty array with no initial value", - "url": "https://github.com/hapijs/lab/issues/685" - } - ], - "number": 109, - "url": "https://github.com/hapijs/lab/milestone/109", - "version": "13.0.1" - }, - { - "date": "2017-03-11T18:25:11Z", - "id": 2281370, - "issues": [ - { - "id": 213548534, - "labels": ["breaking changes", "release notes"], - "number": 684, - "title": "13.0.0 Release Notes", - "url": "https://github.com/hapijs/lab/issues/684" - }, - { - "id": 213546841, - "labels": ["dependency", "lts"], - "number": 683, - "title": "Minor cleanup", - "url": "https://github.com/hapijs/lab/pull/683" - }, - { - "id": 211956905, - "labels": ["bug"], - "number": 681, - "title": "Reduce leaked memory via domains and timers", - "url": "https://github.com/hapijs/lab/pull/681" - }, - { - "id": 209632663, - "labels": ["dependency"], - "number": 677, - "title": "Update eslint version", - "url": "https://github.com/hapijs/lab/pull/677" - }, - { - "id": 180940443, - "labels": ["feature", "breaking changes"], - "number": 648, - "title": "Original files in HTML reporter", - "url": "https://github.com/hapijs/lab/pull/648" - }, - { - "id": 163328727, - "labels": ["bug"], - "number": 614, - "title": "Test coverage shows untransformed output", - "url": "https://github.com/hapijs/lab/issues/614" - } - ], - "number": 108, - "url": "https://github.com/hapijs/lab/milestone/108", - "version": "13.0.0" - }, - { - "date": "2017-01-27T02:02:49Z", - "id": 2266256, - "issues": [ - { - "id": 202340870, - "labels": ["feature"], - "number": 674, - "title": "Typos and inspect supports port", - "url": "https://github.com/hapijs/lab/pull/674" - }, - { - "id": 202142016, - "labels": ["feature"], - "number": 673, - "title": "Add support for Node.js and WebStorm debuggers", - "url": "https://github.com/hapijs/lab/pull/673" - }, - { - "id": 184359773, - "labels": ["feature"], - "number": 651, - "title": "Implement --inspect so debugging inside a test is possible?", - "url": "https://github.com/hapijs/lab/issues/651" - } - ], - "number": 107, - "url": "https://github.com/hapijs/lab/milestone/107", - "version": "12.1.0" - }, - { - "date": "2017-01-20T05:09:12Z", - "id": 2247674, - "issues": [ - { - "id": 202051882, - "labels": ["breaking changes", "release notes"], - "number": 672, - "title": "12.0.0 Release Notes", - "url": "https://github.com/hapijs/lab/issues/672" - }, - { - "id": 201176805, - "labels": ["feature"], - "number": 671, - "title": "Add --bail support", - "url": "https://github.com/hapijs/lab/pull/671" - }, - { - "id": 200997489, - "labels": ["feature", "breaking changes"], - "number": 670, - "title": "upgrade espree parser to use ECMAScript latest 8", - "url": "https://github.com/hapijs/lab/pull/670" - }, - { - "id": 200849089, - "labels": ["feature", "breaking changes"], - "number": 668, - "title": ".labrc.js with --harmony options execute failed", - "url": "https://github.com/hapijs/lab/issues/668" - }, - { - "id": 176481833, - "labels": ["bug"], - "number": 640, - "title": "cli `--help` command showing incorrect commands", - "url": "https://github.com/hapijs/lab/issues/640" - }, - { - "id": 43270778, - "labels": ["feature"], - "number": 214, - "title": "Stop Tests On First Failure", - "url": "https://github.com/hapijs/lab/issues/214" - } - ], - "number": 106, - "url": "https://github.com/hapijs/lab/milestone/106", - "version": "12.0.0" - }, - { - "date": "2017-01-12T15:40:16Z", - "id": 2129829, - "issues": [ - { - "id": 200398261, - "labels": ["dependency"], - "number": 666, - "title": "Update eslint", - "url": "https://github.com/hapijs/lab/pull/666" - }, - { - "id": 200268535, - "labels": ["test"], - "number": 665, - "title": "Fix test and deprecation warning", - "url": "https://github.com/hapijs/lab/pull/665" - }, - { - "id": 198281065, - "labels": ["dependency"], - "number": 664, - "title": "Update eslint version", - "url": "https://github.com/hapijs/lab/pull/664" - } - ], - "number": 105, - "url": "https://github.com/hapijs/lab/milestone/105", - "version": "11.2.2" - }, - { - "date": "2016-11-11T17:13:36Z", - "id": 2120029, - "issues": [ - { - "id": 188768263, - "labels": ["bug"], - "number": 662, - "title": "fix: don't show seed when shuffle was not enabled", - "url": "https://github.com/hapijs/lab/pull/662" - } - ], - "number": 104, - "url": "https://github.com/hapijs/lab/milestone/104", - "version": "11.2.1" - }, - { - "date": "2016-11-07T19:39:10Z", - "id": 2029596, - "issues": [ - { - "id": 187802139, - "labels": ["dependency"], - "number": 659, - "title": "Node 7, update deps", - "url": "https://github.com/hapijs/lab/pull/659" - }, - { - "id": 187242713, - "labels": ["feature"], - "number": 658, - "title": "Added a flag (-R, --rejections) to make the test fail if an unhandled Promise rejection happened during its execution", - "url": "https://github.com/hapijs/lab/pull/658" - }, - { - "id": 187170158, - "labels": ["feature"], - "number": 657, - "title": "feat: allow to set the seed for --shuffle with --seed.", - "url": "https://github.com/hapijs/lab/pull/657" - }, - { - "id": 187129473, - "labels": ["feature"], - "number": 656, - "title": "when tests fail with `--shuffle`, how to run tests in the failing order?", - "url": "https://github.com/hapijs/lab/issues/656" - }, - { - "id": 186828504, - "labels": ["dependency"], - "number": 654, - "title": "Update eslint to 3.9.x", - "url": "https://github.com/hapijs/lab/pull/654" - }, - { - "id": 185531905, - "labels": ["bug"], - "number": 653, - "title": "fixes logic for lab.before timeout #652", - "url": "https://github.com/hapijs/lab/pull/653" - }, - { - "id": 184476576, - "labels": ["bug"], - "number": 652, - "title": "disable lab before timeout", - "url": "https://github.com/hapijs/lab/issues/652" - }, - { - "id": 183988243, - "labels": ["feature"], - "number": 649, - "title": "Make the test fail on a Promise unhandled rejection", - "url": "https://github.com/hapijs/lab/issues/649" - } - ], - "number": 103, - "url": "https://github.com/hapijs/lab/milestone/103", - "version": "11.2.0" - }, - { - "date": "2016-09-26T18:05:34Z", - "id": 1953874, - "issues": [ - { - "id": 179295149, - "labels": ["feature", "dependency"], - "number": 646, - "title": "Update deps: eslint, diff", - "url": "https://github.com/hapijs/lab/pull/646" - }, - { - "id": 178943275, - "labels": ["dependency"], - "number": 645, - "title": "Update eslint", - "url": "https://github.com/hapijs/lab/pull/645" - }, - { - "id": 178502074, - "labels": ["bug"], - "number": 644, - "title": "fixing invalid markup on filter checkboxes", - "url": "https://github.com/hapijs/lab/pull/644" - }, - { - "id": 177616742, - "labels": ["documentation"], - "number": 643, - "title": "Docs: Fix URL in CONTRIBUTING.md", - "url": "https://github.com/hapijs/lab/pull/643" - }, - { - "id": 176169691, - "labels": ["documentation"], - "number": 639, - "title": "Docs: Added documentation for the assert argument", - "url": "https://github.com/hapijs/lab/pull/639" - }, - { - "id": 175296621, - "labels": ["documentation"], - "number": 634, - "title": "The `assert` command line flag should be properly documented", - "url": "https://github.com/hapijs/lab/issues/634" - } - ], - "number": 102, - "url": "https://github.com/hapijs/lab/milestone/102", - "version": "11.1.0" - }, - { - "date": "2016-08-21T22:29:43Z", - "id": 1942789, - "issues": [ - { - "id": 172344998, - "labels": ["bug"], - "number": 630, - "title": "Disable debug mode by default", - "url": "https://github.com/hapijs/lab/pull/630" - }, - { - "id": 172334532, - "labels": ["bug"], - "number": 629, - "title": "Failed tests reported twice", - "url": "https://github.com/hapijs/lab/issues/629" - } - ], - "number": 101, - "url": "https://github.com/hapijs/lab/milestone/101", - "version": "11.0.1" - }, - { - "date": "2016-08-15T16:14:58Z", - "id": 1875731, - "issues": [ - { - "id": 171202897, - "labels": ["breaking changes", "release notes"], - "number": 624, - "title": "11.0.0 Release Notes", - "url": "https://github.com/hapijs/lab/issues/624" - }, - { - "id": 171078718, - "labels": ["bug"], - "number": 622, - "title": "Test entire node range before bypassing", - "url": "https://github.com/hapijs/lab/pull/622" - }, - { - "id": 171075938, - "labels": ["dependency"], - "number": 621, - "title": "Update eslint dep", - "url": "https://github.com/hapijs/lab/pull/621" - }, - { - "id": 170987855, - "labels": ["bug"], - "number": 620, - "title": "Ensure we're not bypassing loc that should be covered", - "url": "https://github.com/hapijs/lab/pull/620" - }, - { - "id": 170788789, - "labels": ["breaking changes", "dependency"], - "number": 619, - "title": "update to eslint-config-hapi@10.x.x", - "url": "https://github.com/hapijs/lab/pull/619" - }, - { - "id": 109237200, - "labels": ["bug"], - "number": 459, - "title": "`/* `$lab:coverage:(off|on)$` */` disables coverage for a whole module", - "url": "https://github.com/hapijs/lab/issues/459" - } - ], - "number": 100, - "url": "https://github.com/hapijs/lab/milestone/100", - "version": "11.0.0" - }, - { - "date": "2016-07-11T12:57:08Z", - "id": 1827871, - "issues": [ - { - "id": 164828702, - "labels": ["feature"], - "number": 615, - "title": "Upgrade eslint to v3", - "url": "https://github.com/hapijs/lab/issues/615" - }, - { - "id": 162791787, - "labels": ["feature"], - "number": 613, - "title": "labrc.js can override all cli options", - "url": "https://github.com/hapijs/lab/pull/613" - }, - { - "id": 162189951, - "labels": ["dependency"], - "number": 611, - "title": "closes #610", - "url": "https://github.com/hapijs/lab/pull/611" - }, - { - "id": 162188334, - "labels": ["dependency"], - "number": 610, - "title": "Upgrade to eslint@2.13.x", - "url": "https://github.com/hapijs/lab/issues/610" - }, - { - "id": 162179625, - "labels": ["bug"], - "number": 609, - "title": "some options can't be configured with .labrc.js ", - "url": "https://github.com/hapijs/lab/issues/609" - } - ], - "number": 99, - "url": "https://github.com/hapijs/lab/milestone/99", - "version": "10.9.0" - }, - { - "date": "2016-06-14T23:58:31Z", - "id": 1824923, - "issues": [ - { - "id": 160309436, - "labels": ["bug"], - "number": 608, - "title": "Fix NODE_ENV not being set (fixes #606)", - "url": "https://github.com/hapijs/lab/pull/608" - }, - { - "id": 160291914, - "labels": ["bug"], - "number": 606, - "title": "NODE_ENV is no longer defaulting to 'test'", - "url": "https://github.com/hapijs/lab/issues/606" - } - ], - "number": 98, - "url": "https://github.com/hapijs/lab/milestone/98", - "version": "10.8.2" - }, - { - "date": "2016-06-14T02:22:14Z", - "id": 1824845, - "issues": [ - { - "id": 160081846, - "labels": ["bug"], - "number": 603, - "title": "Display a warning for failed patterns", - "url": "https://github.com/hapijs/lab/pull/603" - }, - { - "id": 126688752, - "labels": ["bug"], - "number": 511, - "title": "Show better error message when -P fails to find matching patterns", - "url": "https://github.com/hapijs/lab/issues/511" - } - ], - "number": 97, - "url": "https://github.com/hapijs/lab/milestone/97", - "version": "10.8.1" - }, - { - "date": "2016-06-14T01:33:36Z", - "id": 1788698, - "issues": [ - { - "id": 159062419, - "labels": ["feature"], - "number": 601, - "title": "Support .labrc.js for configuration", - "url": "https://github.com/hapijs/lab/pull/601" - }, - { - "id": 158507266, - "labels": ["bug"], - "number": 599, - "title": "Cleanup leak harmony checks", - "url": "https://github.com/hapijs/lab/pull/599" - }, - { - "id": 158485189, - "labels": ["feature"], - "number": 598, - "title": "Support .labrc files for configuration defaults", - "url": "https://github.com/hapijs/lab/issues/598" - } - ], - "number": 96, - "url": "https://github.com/hapijs/lab/milestone/96", - "version": "10.8.0" - }, - { - "date": "2016-05-25T23:58:38Z", - "id": 1785532, - "issues": [ - { - "id": 156855960, - "labels": ["bug"], - "number": 597, - "title": "Add space after failed test x", - "url": "https://github.com/hapijs/lab/pull/597" - }, - { - "id": 156653870, - "labels": ["bug"], - "number": 596, - "title": "Adjust gray to comply with solarized dark theme", - "url": "https://github.com/hapijs/lab/pull/596" - } - ], - "number": 95, - "url": "https://github.com/hapijs/lab/milestone/95", - "version": "10.7.1" - }, - { - "date": "2016-05-24T18:30:55Z", - "id": 1780005, - "issues": [ - { - "id": 156576621, - "labels": ["dependency"], - "number": 595, - "title": "Update eslint to v2.10.x", - "url": "https://github.com/hapijs/lab/pull/595" - }, - { - "id": 156574444, - "labels": ["feature"], - "number": 594, - "title": "Cleanup lint-fix setting", - "url": "https://github.com/hapijs/lab/pull/594" - }, - { - "id": 156413640, - "labels": ["feature"], - "number": 593, - "title": "Support ability to add notes to a test", - "url": "https://github.com/hapijs/lab/pull/593" - }, - { - "id": 156317151, - "labels": ["feature"], - "number": 591, - "title": "Add --lint-fix option.", - "url": "https://github.com/hapijs/lab/pull/591" - }, - { - "id": 94780799, - "labels": ["feature"], - "number": 402, - "title": "Add ability to attach notes to test results", - "url": "https://github.com/hapijs/lab/issues/402" - } - ], - "number": 94, - "url": "https://github.com/hapijs/lab/milestone/94", - "version": "10.7.0" - }, - { - "date": "2016-05-21T02:53:04Z", - "id": 1775323, - "issues": [ - { - "id": 156079934, - "labels": ["dependency"], - "number": 589, - "title": "Update to code v3", - "url": "https://github.com/hapijs/lab/pull/589" - }, - { - "id": 155641061, - "labels": ["bug"], - "number": 588, - "title": "Make coverage excludes more explicit", - "url": "https://github.com/hapijs/lab/pull/588" - }, - { - "id": 155637470, - "labels": ["bug"], - "number": 587, - "title": "Support the same test name in diff experiments", - "url": "https://github.com/hapijs/lab/pull/587" - }, - { - "id": 109679735, - "labels": ["bug"], - "number": 461, - "title": "File Name Coverage Issue", - "url": "https://github.com/hapijs/lab/issues/461" - }, - { - "id": 89642128, - "labels": ["bug"], - "number": 375, - "title": "Experiment description not showing in output", - "url": "https://github.com/hapijs/lab/issues/375" - } - ], - "number": 93, - "url": "https://github.com/hapijs/lab/milestone/93", - "version": "10.6.1" - }, - { - "date": "2016-05-19T00:59:31Z", - "id": 1752305, - "issues": [ - { - "id": 155411669, - "labels": ["feature"], - "number": 586, - "title": "Default output to stdout", - "url": "https://github.com/hapijs/lab/pull/586" - }, - { - "id": 155408905, - "labels": ["documentation"], - "number": 585, - "title": "Document how to only run linting", - "url": "https://github.com/hapijs/lab/pull/585" - }, - { - "id": 155388536, - "labels": ["feature"], - "number": 584, - "title": "Don't execute before/after on experiments that lack tests", - "url": "https://github.com/hapijs/lab/pull/584" - }, - { - "id": 155381554, - "labels": ["documentation"], - "number": 583, - "title": "Better documentation for schedule", - "url": "https://github.com/hapijs/lab/pull/583" - }, - { - "id": 146269548, - "labels": ["support", "documentation"], - "number": 559, - "title": "Run linting only", - "url": "https://github.com/hapijs/lab/issues/559" - }, - { - "id": 106271059, - "labels": ["feature"], - "number": 440, - "title": "before and after blocks", - "url": "https://github.com/hapijs/lab/issues/440" - }, - { - "id": 92445908, - "labels": ["feature"], - "number": 390, - "title": "Enable output for single-file usage", - "url": "https://github.com/hapijs/lab/issues/390" - }, - { - "id": 66948859, - "labels": ["feature"], - "number": 337, - "title": "Skipped tests should have their beforeEach() skipped too?", - "url": "https://github.com/hapijs/lab/issues/337" - }, - { - "id": 53089220, - "labels": ["documentation"], - "number": 288, - "title": "self-run scripts don't generate output or respect CLI arguments", - "url": "https://github.com/hapijs/lab/issues/288" - } - ], - "number": 92, - "url": "https://github.com/hapijs/lab/milestone/92", - "version": "10.6.0" - }, - { - "date": "2016-05-06T19:31:25Z", - "id": 1752135, - "issues": [ - { - "id": 153521449, - "labels": ["bug"], - "number": 579, - "title": "Promise test check should allow more than one argument", - "url": "https://github.com/hapijs/lab/issues/579" - } - ], - "number": 91, - "url": "https://github.com/hapijs/lab/milestone/91", - "version": "10.5.1" - }, - { - "date": "2016-05-06T18:14:01Z", - "id": 1746605, - "issues": [ - { - "id": 153506534, - "labels": ["feature"], - "number": 578, - "title": "Post test cleanup. Closes #577", - "url": "https://github.com/hapijs/lab/pull/578" - }, - { - "id": 153506242, - "labels": ["feature"], - "number": 577, - "title": "Post test cleanup", - "url": "https://github.com/hapijs/lab/issues/577" - }, - { - "id": 152925715, - "labels": ["dependency"], - "number": 576, - "title": "Support bossy 3", - "url": "https://github.com/hapijs/lab/pull/576" - } - ], - "number": 90, - "url": "https://github.com/hapijs/lab/milestone/90", - "version": "10.5.0" - }, - { - "date": "2016-05-04T02:56:57Z", - "id": 1734332, - "issues": [ - { - "id": 152918380, - "labels": ["dependency"], - "number": 575, - "title": "Update dependencies", - "url": "https://github.com/hapijs/lab/pull/575" - }, - { - "id": 152676105, - "labels": ["feature"], - "number": 574, - "title": "id-557: Error thrown when I use --coverage-exclude", - "url": "https://github.com/hapijs/lab/pull/574" - }, - { - "id": 152505527, - "labels": ["feature"], - "number": 573, - "title": "use stable stringify for better objects diff", - "url": "https://github.com/hapijs/lab/pull/573" - }, - { - "id": 146018774, - "labels": ["feature"], - "number": 557, - "title": "Error thrown when I use --coverage-exclude", - "url": "https://github.com/hapijs/lab/issues/557" - } - ], - "number": 89, - "url": "https://github.com/hapijs/lab/milestone/89", - "version": "10.4.0" - }, - { - "date": "2016-04-27T15:28:14Z", - "id": 1685339, - "issues": [ - { - "id": 151414136, - "labels": ["bug"], - "number": 570, - "title": "Works correctly with node v6", - "url": "https://github.com/hapijs/lab/pull/570" - }, - { - "id": 151396000, - "labels": ["bug"], - "number": 569, - "title": "Add Reflect to whitelist", - "url": "https://github.com/hapijs/lab/pull/569" - }, - { - "id": 151390393, - "labels": ["bug"], - "number": 568, - "title": "leaks detected:Reflect using node v6.0.0", - "url": "https://github.com/hapijs/lab/issues/568" - } - ], - "number": 88, - "url": "https://github.com/hapijs/lab/milestone/88", - "version": "10.3.2" - }, - { - "date": "2016-04-05T18:13:31Z", - "id": 1646135, - "issues": [ - { - "id": 144862665, - "labels": ["bug"], - "number": 556, - "title": "Code coverage: Always surround expressions in ternary operator with parenthesis", - "url": "https://github.com/hapijs/lab/pull/556" - }, - { - "id": 144520504, - "labels": ["bug"], - "number": 555, - "title": "Code coverage for conditional operator with comma operator isn't handled correctly", - "url": "https://github.com/hapijs/lab/issues/555" - }, - { - "id": 144083383, - "labels": ["dependency"], - "number": 554, - "title": "Update eslint to v2.5", - "url": "https://github.com/hapijs/lab/pull/554" - }, - { - "id": 142972219, - "labels": ["documentation"], - "number": 548, - "title": "Update README.md", - "url": "https://github.com/hapijs/lab/pull/548" - } - ], - "number": 87, - "url": "https://github.com/hapijs/lab/milestone/87", - "version": "10.3.1" - }, - { - "date": "2016-03-15T17:07:44Z", - "id": 1618721, - "issues": [ - { - "id": 141037837, - "labels": ["bug", "dependency"], - "number": 545, - "title": "Update deps and fix flushing to stdout", - "url": "https://github.com/hapijs/lab/pull/545" - }, - { - "id": 140934331, - "labels": ["feature"], - "number": 544, - "title": "Feature/silent skips", - "url": "https://github.com/hapijs/lab/pull/544" - }, - { - "id": 139300403, - "labels": ["bug"], - "number": 541, - "title": "Allow stdout to flush", - "url": "https://github.com/hapijs/lab/pull/541" - } - ], - "number": 86, - "url": "https://github.com/hapijs/lab/milestone/86", - "version": "10.3.0" - }, - { - "date": "2016-03-02T20:23:39Z", - "id": 1610400, - "issues": [ - { - "id": 137678113, - "labels": ["feature"], - "number": 538, - "title": "Add `plan` option for tests", - "url": "https://github.com/hapijs/lab/pull/538" - }, - { - "id": 46519793, - "labels": ["feature"], - "number": 257, - "title": "Set expected number of assertions", - "url": "https://github.com/hapijs/lab/issues/257" - } - ], - "number": 85, - "url": "https://github.com/hapijs/lab/milestone/85", - "version": "10.2.0" - }, - { - "date": "2016-02-28T18:56:11Z", - "id": 1604140, - "issues": [ - { - "id": 136945448, - "labels": ["feature"], - "number": 537, - "title": "Feature: promises", - "url": "https://github.com/hapijs/lab/pull/537" - }, - { - "id": 136912331, - "labels": ["feature"], - "number": 536, - "title": "Support promises in tests and setup / teardown", - "url": "https://github.com/hapijs/lab/issues/536" - }, - { - "id": 136502751, - "labels": ["bug"], - "number": 534, - "title": "Fix \"multiple only\" error with multiple outputs", - "url": "https://github.com/hapijs/lab/pull/534" - }, - { - "id": 136313154, - "labels": ["documentation"], - "number": 533, - "title": "Update readme for global only", - "url": "https://github.com/hapijs/lab/pull/533" - } - ], - "number": 84, - "url": "https://github.com/hapijs/lab/milestone/84", - "version": "10.1.0" - }, - { - "date": "2016-02-24T23:38:00Z", - "id": 1596177, - "issues": [ - { - "id": 136213898, - "labels": ["breaking changes", "release notes"], - "number": 530, - "title": "10.0.0 Release Notes", - "url": "https://github.com/hapijs/lab/issues/530" - }, - { - "id": 136092402, - "labels": ["breaking changes"], - "number": 527, - "title": "Global \"only\" (#524)", - "url": "https://github.com/hapijs/lab/pull/527" - }, - { - "id": 134842295, - "labels": ["feature", "breaking changes", "documentation"], - "number": 524, - "title": "Add a global `only` flag to improve TDD experience", - "url": "https://github.com/hapijs/lab/issues/524" - } - ], - "number": 83, - "url": "https://github.com/hapijs/lab/milestone/83", - "version": "10.0.0" - }, - { - "date": "2016-02-22T03:35:05Z", - "id": 1591966, - "issues": [ - { - "id": 134997797, - "labels": ["feature"], - "number": 525, - "title": "Support shuffling execution of scripts", - "url": "https://github.com/hapijs/lab/pull/525" - } - ], - "number": 82, - "url": "https://github.com/hapijs/lab/milestone/82", - "version": "9.1.0" - }, - { - "date": "2016-02-18T23:56:00Z", - "id": 1591297, - "issues": [ - { - "id": 134733108, - "labels": ["breaking changes", "release notes"], - "number": 523, - "title": "9.0.0 Release Notes", - "url": "https://github.com/hapijs/lab/issues/523" - }, - { - "id": 134727323, - "labels": ["breaking changes"], - "number": 522, - "title": "Remove jslint and support custom linters", - "url": "https://github.com/hapijs/lab/pull/522" - }, - { - "id": 124826239, - "labels": ["feature"], - "number": 507, - "title": "Add JavaScript Standard Style (`standard`) as a linter option", - "url": "https://github.com/hapijs/lab/issues/507" - }, - { - "id": 51812153, - "labels": ["feature"], - "number": 282, - "title": "Make linter pluggable? (PR offer)", - "url": "https://github.com/hapijs/lab/issues/282" - } - ], - "number": 81, - "url": "https://github.com/hapijs/lab/milestone/81", - "version": "9.0.0" - }, - { - "date": "2016-02-18T18:38:50Z", - "id": 1589323, - "issues": [ - { - "id": 134583278, - "labels": ["bug"], - "number": 521, - "title": "Fix coverage of trailing function declaration", - "url": "https://github.com/hapijs/lab/pull/521" - }, - { - "id": 134391689, - "labels": ["feature"], - "number": 520, - "title": "Fix coverage report for single-line functions and single-expression arrow functions", - "url": "https://github.com/hapijs/lab/pull/520" - }, - { - "id": 48838103, - "labels": ["bug"], - "number": 274, - "title": "Single line functions are not property tested for coverage", - "url": "https://github.com/hapijs/lab/issues/274" - } - ], - "number": 80, - "url": "https://github.com/hapijs/lab/milestone/80", - "version": "8.4.0" - }, - { - "date": "2016-02-17T20:06:05Z", - "id": 1531833, - "issues": [ - { - "id": 134372757, - "labels": ["dependency"], - "number": 519, - "title": "update to eslint@2.x.x", - "url": "https://github.com/hapijs/lab/pull/519" - } - ], - "number": 79, - "url": "https://github.com/hapijs/lab/milestone/79", - "version": "8.3.0" - }, - { - "date": "2016-01-21T20:52:43Z", - "id": 1528046, - "issues": [ - { - "id": 127835890, - "labels": ["feature", "dependency"], - "number": 516, - "title": "upgrade to espree@3.x.x", - "url": "https://github.com/hapijs/lab/pull/516" - } - ], - "number": 78, - "url": "https://github.com/hapijs/lab/milestone/78", - "version": "8.2.0" - }, - { - "date": "2016-01-20T22:09:17Z", - "id": 1502647, - "issues": [ - { - "id": 127756344, - "labels": ["feature"], - "number": 515, - "title": "enable parsing the spread operator", - "url": "https://github.com/hapijs/lab/pull/515" - }, - { - "id": 127755895, - "labels": ["feature"], - "number": 514, - "title": "use of the spread operator breaks coverage", - "url": "https://github.com/hapijs/lab/issues/514" - } - ], - "number": 77, - "url": "https://github.com/hapijs/lab/milestone/77", - "version": "8.1.0" - }, - { - "date": "2016-01-12T17:22:57Z", - "id": 1475332, - "issues": [ - { - "id": 125873416, - "labels": ["bug"], - "number": 510, - "title": "Fix coverage when require cache is reset", - "url": "https://github.com/hapijs/lab/pull/510" - }, - { - "id": 125011818, - "labels": ["documentation"], - "number": 508, - "title": "--coverage-exclude should support multiple paths", - "url": "https://github.com/hapijs/lab/issues/508" - }, - { - "id": 123982126, - "labels": ["bug"], - "number": 505, - "title": "Coverage calculated wrong.", - "url": "https://github.com/hapijs/lab/issues/505" - } - ], - "number": 76, - "url": "https://github.com/hapijs/lab/milestone/76", - "version": "8.0.2" - }, - { - "date": "2015-12-27T22:49:45Z", - "id": 1444824, - "issues": [ - { - "id": 123900840, - "labels": ["bug"], - "number": 504, - "title": "Lab .eslintrc rules overrides local eslint rules.", - "url": "https://github.com/hapijs/lab/issues/504" - }, - { - "id": 123900660, - "labels": ["bug"], - "number": 503, - "title": "Fix eslint configuration file format support.", - "url": "https://github.com/hapijs/lab/pull/503" - }, - { - "id": 120885064, - "labels": ["bug"], - "number": 500, - "title": "fix diff text visibility for console reporter", - "url": "https://github.com/hapijs/lab/pull/500" - }, - { - "id": 118722902, - "labels": ["bug"], - "number": 493, - "title": "Diff colors render diff text unreadable", - "url": "https://github.com/hapijs/lab/issues/493" - } - ], - "number": 75, - "url": "https://github.com/hapijs/lab/milestone/75", - "version": "8.0.1" - }, - { - "date": "2015-12-04T19:52:36Z", - "id": 1407824, - "issues": [ - { - "id": 120473965, - "labels": ["breaking changes", "release notes"], - "number": 499, - "title": "8.0.0 release notes", - "url": "https://github.com/hapijs/lab/issues/499" - }, - { - "id": 120472322, - "labels": ["dependency"], - "number": 498, - "title": "Update dependencies", - "url": "https://github.com/hapijs/lab/pull/498" - }, - { - "id": 119624842, - "labels": ["feature", "breaking changes"], - "number": 496, - "title": "update to eslint-config-hapi@8.x.x", - "url": "https://github.com/hapijs/lab/pull/496" - }, - { - "id": 119520318, - "labels": ["feature"], - "number": 495, - "title": "Add objectLiteralShorthandMethods to supported ES6 features", - "url": "https://github.com/hapijs/lab/pull/495" - }, - { - "id": 118526802, - "labels": ["dependency"], - "number": 492, - "title": "Update dependencies items and eslint", - "url": "https://github.com/hapijs/lab/pull/492" - }, - { - "id": 118460977, - "labels": ["feature"], - "number": 491, - "title": "Coverage reporting does not support parsing ES6 objectLiteralComputedProperties", - "url": "https://github.com/hapijs/lab/issues/491" - }, - { - "id": 117008398, - "labels": ["documentation"], - "number": 487, - "title": "Es6-ify the README examples", - "url": "https://github.com/hapijs/lab/pull/487" - }, - { - "id": 114421846, - "labels": ["dependency"], - "number": 479, - "title": "Update hapijs/items to 2.0.0 from 1.1.1", - "url": "https://github.com/hapijs/lab/issues/479" - } - ], - "number": 74, - "url": "https://github.com/hapijs/lab/milestone/74", - "version": "8.0.0" - }, - { - "date": "2015-11-12T04:23:41Z", - "id": 1394332, - "issues": [ - { - "id": 116475668, - "labels": ["feature", "dependency"], - "number": 484, - "title": "Update linter to include for loop rules", - "url": "https://github.com/hapijs/lab/pull/484" - } - ], - "number": 73, - "url": "https://github.com/hapijs/lab/milestone/73", - "version": "7.3.0" - }, - { - "date": "2015-11-04T20:30:28Z", - "id": 1386318, - "issues": [ - { - "id": 115137489, - "labels": ["feature"], - "number": 480, - "title": "Update hapi linter dependencies", - "url": "https://github.com/hapijs/lab/pull/480" - } - ], - "number": 72, - "url": "https://github.com/hapijs/lab/milestone/72", - "version": "7.2.0" - }, - { - "date": "2015-10-30T22:59:47Z", - "id": 1379215, - "issues": [ - { - "id": 114368330, - "labels": ["feature"], - "number": 478, - "title": "Update to use ES6 style and lint rules", - "url": "https://github.com/hapijs/lab/pull/478" - }, - { - "id": 114361519, - "labels": ["feature"], - "number": 477, - "title": "Es6", - "url": "https://github.com/hapijs/lab/pull/477" - }, - { - "id": 114323480, - "labels": ["feature"], - "number": 476, - "title": "ES6 linting rules", - "url": "https://github.com/hapijs/lab/issues/476" - }, - { - "id": 113884362, - "labels": ["bug"], - "number": 475, - "title": "consider testing arg passed to done is an error object", - "url": "https://github.com/hapijs/lab/issues/475" - } - ], - "number": 71, - "url": "https://github.com/hapijs/lab/milestone/71", - "version": "7.1.0" - }, - { - "date": "2015-10-27T11:45:30Z", - "id": 1340761, - "issues": [ - { - "id": 113564486, - "labels": ["breaking changes", "release notes"], - "number": 474, - "title": "7.0.0 release notes", - "url": "https://github.com/hapijs/lab/issues/474" - }, - { - "id": 113554360, - "labels": ["breaking changes"], - "number": 473, - "title": "Remove node 0.10 support", - "url": "https://github.com/hapijs/lab/pull/473" - }, - { - "id": 113309851, - "labels": ["bug"], - "number": 471, - "title": "Do not add tracking code before \"var\" in \"for(var x of xs)\"", - "url": "https://github.com/hapijs/lab/pull/471" - }, - { - "id": 113051088, - "labels": ["bug"], - "number": 470, - "title": "for(var x of xs) is not handled correctly when coverage is turned on", - "url": "https://github.com/hapijs/lab/issues/470" - } - ], - "number": 70, - "url": "https://github.com/hapijs/lab/milestone/70", - "version": "7.0.0" - }, - { - "date": "2015-10-06T16:52:03Z", - "id": 1328079, - "issues": [ - { - "id": 109637355, - "labels": ["feature"], - "number": 460, - "title": "Add objectLiteralShorthandMethods to supported ES6 features", - "url": "https://github.com/hapijs/lab/pull/460" - } - ], - "number": 69, - "url": "https://github.com/hapijs/lab/milestone/69", - "version": "6.2.0" - }, - { - "date": "2015-09-29T00:25:06Z", - "id": 1327673, - "issues": [ - { - "id": 108769507, - "labels": ["feature"], - "number": 457, - "title": "Error data", - "url": "https://github.com/hapijs/lab/pull/457" - } - ], - "number": 68, - "url": "https://github.com/hapijs/lab/milestone/68", - "version": "6.1.0" - }, - { - "date": "2015-09-28T19:10:28Z", - "id": 1316712, - "issues": [ - { - "id": 108726549, - "labels": ["breaking changes", "release notes"], - "number": 455, - "title": "6.0.0 release notes", - "url": "https://github.com/hapijs/lab/issues/455" - }, - { - "id": 108478623, - "labels": ["feature"], - "number": 454, - "title": "Update to eslint-config-hapi@3.x.x", - "url": "https://github.com/hapijs/lab/pull/454" - }, - { - "id": 108415823, - "labels": ["feature"], - "number": 453, - "title": "Lint warning for unused variables except internals", - "url": "https://github.com/hapijs/lab/issues/453" - }, - { - "id": 107619039, - "labels": ["feature"], - "number": 452, - "title": "-V/--version flag to show version", - "url": "https://github.com/hapijs/lab/pull/452" - }, - { - "id": 107544047, - "labels": ["feature"], - "number": 449, - "title": "Add --version to CLI", - "url": "https://github.com/hapijs/lab/issues/449" - } - ], - "number": 67, - "url": "https://github.com/hapijs/lab/milestone/67", - "version": "6.0.0" - }, - { - "date": "2015-09-21T16:20:59Z", - "id": 1316693, - "issues": [ - { - "id": 107547318, - "labels": ["bug"], - "number": 451, - "title": "Rename template for npm publish", - "url": "https://github.com/hapijs/lab/pull/451" - } - ], - "number": 66, - "url": "https://github.com/hapijs/lab/milestone/66", - "version": "5.18.1" - }, - { - "date": "2015-09-21T16:16:48Z", - "id": 1308904, - "issues": [ - { - "id": 107456452, - "labels": ["feature"], - "number": 448, - "title": "Add linting information and test failures to html", - "url": "https://github.com/hapijs/lab/pull/448" - }, - { - "id": 107319632, - "labels": ["test", "dependency"], - "number": 447, - "title": "Upgrade deps and avoid relying on unix commands", - "url": "https://github.com/hapijs/lab/pull/447" - }, - { - "id": 106241159, - "labels": ["feature"], - "number": 439, - "title": "Document html coverage report source markup", - "url": "https://github.com/hapijs/lab/issues/439" - } - ], - "number": 65, - "url": "https://github.com/hapijs/lab/milestone/65", - "version": "5.18.0" - }, - { - "date": "2015-09-16T17:12:24Z", - "id": 1307547, - "issues": [ - { - "id": 106678104, - "labels": ["feature"], - "number": 445, - "title": "JSON reporter now supports lint output", - "url": "https://github.com/hapijs/lab/pull/445" - }, - { - "id": 106615195, - "labels": ["feature"], - "number": 443, - "title": "add lint results to json reporter", - "url": "https://github.com/hapijs/lab/issues/443" - } - ], - "number": 64, - "url": "https://github.com/hapijs/lab/milestone/64", - "version": "5.17.0" - }, - { - "date": "2015-09-16T01:10:32Z", - "id": 1301611, - "issues": [ - { - "id": 106601983, - "labels": ["dependency"], - "number": 442, - "title": "Update insecure dependencies (eslint, handlebars)", - "url": "https://github.com/hapijs/lab/pull/442" - }, - { - "id": 106391668, - "labels": ["documentation"], - "number": 441, - "title": "Document coverage ignore syntax, fixes #438", - "url": "https://github.com/hapijs/lab/pull/441" - } - ], - "number": 63, - "url": "https://github.com/hapijs/lab/milestone/63", - "version": "5.16.2" - }, - { - "date": "2015-09-11T19:06:03Z", - "id": 1286785, - "issues": [ - { - "id": 105735059, - "labels": ["bug"], - "number": 437, - "title": "Drop camelcase lint rule", - "url": "https://github.com/hapijs/lab/issues/437" - }, - { - "id": 105628454, - "labels": ["dependency"], - "number": 436, - "title": "Update to eslint-config-hapi@2.x.x", - "url": "https://github.com/hapijs/lab/pull/436" - }, - { - "id": 104905781, - "labels": ["bug"], - "number": 433, - "title": "Add Infinity to stringify", - "url": "https://github.com/hapijs/lab/pull/433" - }, - { - "id": 104627130, - "labels": ["dependency"], - "number": 432, - "title": "Updated eslint version", - "url": "https://github.com/hapijs/lab/pull/432" - } - ], - "number": 62, - "url": "https://github.com/hapijs/lab/milestone/62", - "version": "5.16.1" - }, - { - "date": "2015-09-02T16:59:41Z", - "id": 1266724, - "issues": [ - { - "id": 104392271, - "labels": ["documentation"], - "number": 431, - "title": "Add docs for extending lab's linter", - "url": "https://github.com/hapijs/lab/pull/431" - }, - { - "id": 102869685, - "labels": ["feature"], - "number": 429, - "title": "Use a shareable config for ESLint", - "url": "https://github.com/hapijs/lab/pull/429" - }, - { - "id": 88897303, - "labels": ["documentation"], - "number": 372, - "title": ".eslintrc files should build on default settings", - "url": "https://github.com/hapijs/lab/issues/372" - } - ], - "number": 61, - "url": "https://github.com/hapijs/lab/milestone/61", - "version": "5.16.0" - }, - { - "date": "2015-08-21T17:54:09Z", - "id": 1249342, - "issues": [ - { - "id": 101860096, - "labels": ["bug"], - "number": 428, - "title": "Show invisible tokens on stringify", - "url": "https://github.com/hapijs/lab/pull/428" - }, - { - "id": 101100196, - "labels": ["bug"], - "number": 424, - "title": "Fix stack traces when using transforms", - "url": "https://github.com/hapijs/lab/pull/424" - } - ], - "number": 60, - "url": "https://github.com/hapijs/lab/milestone/60", - "version": "5.15.2" - }, - { - "date": "2015-08-11T03:00:51Z", - "id": 1242452, - "issues": [ - { - "id": 99879575, - "labels": ["bug"], - "number": 421, - "title": "Fix circular JSON for console reporter", - "url": "https://github.com/hapijs/lab/pull/421" - } - ], - "number": 59, - "url": "https://github.com/hapijs/lab/milestone/59", - "version": "5.15.1" - }, - { - "date": "2015-08-05T17:13:18Z", - "id": 1239543, - "issues": [ - { - "id": 99076586, - "labels": ["feature"], - "number": 420, - "title": "Add command line options to override coverage path and excludes", - "url": "https://github.com/hapijs/lab/pull/420" - } - ], - "number": 58, - "url": "https://github.com/hapijs/lab/milestone/58", - "version": "5.15.0" - }, - { - "date": "2015-08-04T04:05:37Z", - "id": 1228076, - "issues": [ - { - "id": 98884595, - "labels": ["bug"], - "number": 416, - "title": "Allow custom reporters from CLI", - "url": "https://github.com/hapijs/lab/pull/416" - }, - { - "id": 98884535, - "labels": ["bug"], - "number": 415, - "title": "Custom reporters not allowed from cli", - "url": "https://github.com/hapijs/lab/issues/415" - }, - { - "id": 98879069, - "labels": ["test"], - "number": 414, - "title": "Fix test for equal call with extra param", - "url": "https://github.com/hapijs/lab/pull/414" - }, - { - "id": 98762264, - "labels": ["test"], - "number": 413, - "title": "Fix extra params passed to equal that are invalid", - "url": "https://github.com/hapijs/lab/issues/413" - }, - { - "id": 98639223, - "labels": ["dependency"], - "number": 412, - "title": "Update eslint to 1.0.x", - "url": "https://github.com/hapijs/lab/pull/412" - } - ], - "number": 57, - "url": "https://github.com/hapijs/lab/milestone/57", - "version": "5.14.1" - }, - { - "date": "2015-07-27T18:53:02Z", - "id": 1193934, - "issues": [ - { - "id": 95047362, - "labels": ["bug"], - "number": 406, - "title": "Fix exit code when multiple reporters encounter a failure", - "url": "https://github.com/hapijs/lab/pull/406" - }, - { - "id": 95027055, - "labels": ["feature"], - "number": 404, - "title": "enable more es6 features for Espree", - "url": "https://github.com/hapijs/lab/pull/404" - }, - { - "id": 93330417, - "labels": ["bug"], - "number": 397, - "title": "Attach sub-reporters to the multiple reporter", - "url": "https://github.com/hapijs/lab/pull/397" - }, - { - "id": 92818980, - "labels": ["bug"], - "number": 393, - "title": "Exit code always 0 with multiple reporters", - "url": "https://github.com/hapijs/lab/issues/393" - } - ], - "number": 56, - "url": "https://github.com/hapijs/lab/milestone/56", - "version": "5.14.0" - }, - { - "date": "2015-07-05T23:56:12Z", - "id": 1192822, - "issues": [ - { - "id": 93157293, - "labels": ["feature"], - "number": 395, - "title": "Support filename pattern matching in CLI", - "url": "https://github.com/hapijs/lab/pull/395" - }, - { - "id": 90928151, - "labels": ["feature"], - "number": 384, - "title": "File name matching glob pattern", - "url": "https://github.com/hapijs/lab/issues/384" - } - ], - "number": 55, - "url": "https://github.com/hapijs/lab/milestone/55", - "version": "5.13.0" - }, - { - "date": "2015-07-03T22:40:22Z", - "id": 1191539, - "issues": [ - { - "id": 92944656, - "labels": ["bug"], - "number": 394, - "title": "Revert lint rule on spaced comments", - "url": "https://github.com/hapijs/lab/pull/394" - } - ], - "number": 54, - "url": "https://github.com/hapijs/lab/milestone/54", - "version": "5.12.1" - }, - { - "date": "2015-07-02T20:43:04Z", - "id": 1181582, - "issues": [ - { - "id": 92729031, - "labels": ["bug"], - "number": 392, - "title": "Attach results to the reporter", - "url": "https://github.com/hapijs/lab/pull/392" - }, - { - "id": 92232676, - "labels": ["feature"], - "number": 389, - "title": "Multiple reporters and multiple outputs", - "url": "https://github.com/hapijs/lab/pull/389" - }, - { - "id": 91323550, - "labels": ["dependency"], - "number": 387, - "title": "Update to eslint 0.24.x and add array bracket spacing linting rule", - "url": "https://github.com/hapijs/lab/pull/387" - }, - { - "id": 91038754, - "labels": ["feature"], - "number": 386, - "title": "enable code coverage support with ES6", - "url": "https://github.com/hapijs/lab/pull/386" - }, - { - "id": 90353005, - "labels": ["feature"], - "number": 381, - "title": "Added space after comment rule", - "url": "https://github.com/hapijs/lab/pull/381" - } - ], - "number": 53, - "url": "https://github.com/hapijs/lab/milestone/53", - "version": "5.12.0" - }, - { - "date": "2015-06-25T19:21:18Z", - "id": 1175318, - "issues": [ - { - "id": 90989623, - "labels": ["bug"], - "number": 385, - "title": "Support more relaxed no-shadow rule", - "url": "https://github.com/hapijs/lab/pull/385" - }, - { - "id": 90251316, - "labels": ["dependency"], - "number": 380, - "title": "Update source-map-support to 0.3.x ", - "url": "https://github.com/hapijs/lab/pull/380" - }, - { - "id": 90242843, - "labels": ["bug"], - "number": 379, - "title": "Shadow lint error going too far", - "url": "https://github.com/hapijs/lab/issues/379" - } - ], - "number": 52, - "url": "https://github.com/hapijs/lab/milestone/52", - "version": "5.11.1" - }, - { - "date": "2015-06-22T15:15:26Z", - "id": 1157031, - "issues": [ - { - "id": 90126606, - "labels": ["bug"], - "number": 377, - "title": "Remove lint rule for line around comments", - "url": "https://github.com/hapijs/lab/pull/377" - }, - { - "id": 89970756, - "labels": ["bug"], - "number": 376, - "title": "Lint too aggressive with empty lines before comments", - "url": "https://github.com/hapijs/lab/issues/376" - }, - { - "id": 87063640, - "labels": ["feature"], - "number": 371, - "title": "Use no-shadow lint rule", - "url": "https://github.com/hapijs/lab/pull/371" - }, - { - "id": 86884189, - "labels": ["feature"], - "number": 369, - "title": "no-catch-shadow", - "url": "https://github.com/hapijs/lab/issues/369" - } - ], - "number": 51, - "url": "https://github.com/hapijs/lab/milestone/51", - "version": "5.11.0" - }, - { - "date": "2015-06-09T15:12:31Z", - "id": 1121383, - "issues": [ - { - "id": 86279061, - "labels": ["feature"], - "number": 368, - "title": "Enforce capitalization of imported module variable names", - "url": "https://github.com/hapijs/lab/pull/368" - }, - { - "id": 80971373, - "labels": ["feature", "dependency"], - "number": 366, - "title": "Linting update", - "url": "https://github.com/hapijs/lab/pull/366" - }, - { - "id": 80206941, - "labels": ["non issue"], - "number": 365, - "title": "Update license attribute", - "url": "https://github.com/hapijs/lab/pull/365" - }, - { - "id": 79941684, - "labels": ["non issue"], - "number": 364, - "title": "Cleanup repo style", - "url": "https://github.com/hapijs/lab/pull/364" - } - ], - "number": 50, - "url": "https://github.com/hapijs/lab/milestone/50", - "version": "5.10.0" - }, - { - "date": "2015-05-20T15:11:00Z", - "id": 1107216, - "issues": [ - { - "id": 78025638, - "labels": ["feature"], - "number": 362, - "title": "Default both linting thresholds to 0.", - "url": "https://github.com/hapijs/lab/pull/362" - }, - { - "id": 77983757, - "labels": ["bug"], - "number": 361, - "title": "Lint option -L should fail test if any linting problems are found", - "url": "https://github.com/hapijs/lab/issues/361" - }, - { - "id": 77002039, - "labels": ["bug"], - "number": 360, - "title": "Use global handle for __$$labCov for use strict.", - "url": "https://github.com/hapijs/lab/pull/360" - }, - { - "id": 76894141, - "labels": ["bug"], - "number": 359, - "title": "Change afterEaches to run in more natural order", - "url": "https://github.com/hapijs/lab/pull/359" - }, - { - "id": 76867860, - "labels": ["bug"], - "number": 358, - "title": "unable to test when employing template strings", - "url": "https://github.com/hapijs/lab/issues/358" - }, - { - "id": 76186385, - "labels": ["bug"], - "number": 357, - "title": "afterEach's run in unnatural order", - "url": "https://github.com/hapijs/lab/issues/357" - } - ], - "number": 49, - "url": "https://github.com/hapijs/lab/milestone/49", - "version": "5.9.0" - }, - { - "date": "2015-05-12T17:30:25Z", - "id": 1085591, - "issues": [ - { - "id": 75646223, - "labels": ["bug"], - "number": 356, - "title": "Fix coverage on loop labels. Fixes #355.", - "url": "https://github.com/hapijs/lab/pull/356" - }, - { - "id": 75480039, - "labels": ["bug"], - "number": 355, - "title": "Error when running lab with coverage on babel compiled code", - "url": "https://github.com/hapijs/lab/issues/355" - }, - { - "id": 73252695, - "labels": ["bug"], - "number": 354, - "title": "Fix coverage modifying \"use strict\" statements.", - "url": "https://github.com/hapijs/lab/pull/354" - } - ], - "number": 48, - "url": "https://github.com/hapijs/lab/milestone/48", - "version": "5.8.1" - }, - { - "date": "2015-04-27T15:36:27Z", - "id": 1082809, - "issues": [ - { - "id": 71089250, - "labels": ["documentation"], - "number": 352, - "title": "Fix #351. Add message about threshold and npm error message.", - "url": "https://github.com/hapijs/lab/pull/352" - }, - { - "id": 71080760, - "labels": ["documentation"], - "number": 351, - "title": "npm ERR! Exit status 1 when threshold is not met", - "url": "https://github.com/hapijs/lab/issues/351" - }, - { - "id": 70901045, - "labels": ["feature"], - "number": 350, - "title": "Lint thresholds", - "url": "https://github.com/hapijs/lab/pull/350" - } - ], - "number": 47, - "url": "https://github.com/hapijs/lab/milestone/47", - "version": "5.8.0" - }, - { - "date": "2015-04-24T20:04:59Z", - "id": 1076229, - "issues": [ - { - "id": 70730148, - "labels": ["feature"], - "number": 349, - "title": "Add 4 space indent rule", - "url": "https://github.com/hapijs/lab/pull/349" - }, - { - "id": 70527449, - "labels": ["feature"], - "number": 348, - "title": "Add some more rules to ESLint", - "url": "https://github.com/hapijs/lab/issues/348" - }, - { - "id": 70526613, - "labels": ["feature"], - "number": 347, - "title": "Added two eslint rules to lab to enforce the hapi code style.", - "url": "https://github.com/hapijs/lab/pull/347" - } - ], - "number": 46, - "url": "https://github.com/hapijs/lab/milestone/46", - "version": "5.7.0" - }, - { - "date": "2015-04-20T23:19:16Z", - "id": 1075506, - "issues": [ - { - "id": 69670487, - "labels": ["dependency"], - "number": 345, - "title": "Switch to espree", - "url": "https://github.com/hapijs/lab/pull/345" - }, - { - "id": 69617464, - "labels": ["dependency"], - "number": 344, - "title": "Update dependencies", - "url": "https://github.com/hapijs/lab/pull/344" - }, - { - "id": 63761506, - "labels": ["feature", "dependency"], - "number": 332, - "title": "using `espree` or `acorn` instead of esprima", - "url": "https://github.com/hapijs/lab/issues/332" - } - ], - "number": 45, - "url": "https://github.com/hapijs/lab/milestone/45", - "version": "5.6.1" - }, - { - "date": "2015-04-20T15:26:55Z", - "id": 1034978, - "issues": [ - { - "id": 67507980, - "labels": ["bug"], - "number": 341, - "title": "Fix HTML reporter when using live-transformed code", - "url": "https://github.com/hapijs/lab/pull/341" - }, - { - "id": 67170507, - "labels": ["feature"], - "number": 339, - "title": "Add ESLint rule for blank line at beginning of function scope", - "url": "https://github.com/hapijs/lab/pull/339" - } - ], - "number": 44, - "url": "https://github.com/hapijs/lab/milestone/44", - "version": "5.6.0" - }, - { - "date": "2015-03-23T19:24:19Z", - "id": 1015007, - "issues": [ - { - "id": 61895461, - "labels": ["dependency"], - "number": 327, - "title": "[DEP] eslint 0.14 to 0.17", - "url": "https://github.com/hapijs/lab/pull/327" - }, - { - "id": 61879721, - "labels": ["dependency"], - "number": 326, - "title": "Update eslint to 0.17.0", - "url": "https://github.com/hapijs/lab/issues/326" - } - ], - "number": 43, - "url": "https://github.com/hapijs/lab/milestone/43", - "version": "5.5.1" - }, - { - "date": "2015-03-10T16:07:30Z", - "id": 1006028, - "issues": [ - { - "id": 60059510, - "labels": ["feature"], - "number": 324, - "title": "Allow test files to have different extensions with transform", - "url": "https://github.com/hapijs/lab/pull/324" - }, - { - "id": 59956792, - "labels": ["bug"], - "number": 323, - "title": "Fix EventEmitter bug", - "url": "https://github.com/hapijs/lab/pull/323" - }, - { - "id": 59921293, - "labels": ["bug"], - "number": 322, - "title": "Fix domain not exited", - "url": "https://github.com/hapijs/lab/pull/322" - }, - { - "id": 59590479, - "labels": ["feature"], - "number": 317, - "title": "Support custom reporters - closes #216 & closes #309", - "url": "https://github.com/hapijs/lab/pull/317" - } - ], - "number": 42, - "url": "https://github.com/hapijs/lab/milestone/42", - "version": "5.5.0" - }, - { - "date": "2015-03-04T16:20:34Z", - "id": 999281, - "issues": [ - { - "id": 59732649, - "labels": ["feature"], - "number": 321, - "title": "Allow --lint-options to be passed to configure linters", - "url": "https://github.com/hapijs/lab/pull/321" - }, - { - "id": 59625077, - "labels": ["feature"], - "number": 320, - "title": "Fixes #319: Instructs --output to create given directory recursively.", - "url": "https://github.com/hapijs/lab/pull/320" - }, - { - "id": 59623293, - "labels": ["feature"], - "number": 319, - "title": "--output should create given directory tree", - "url": "https://github.com/hapijs/lab/issues/319" - }, - { - "id": 59606847, - "labels": ["feature"], - "number": 318, - "title": "add debug option to show domain error stack", - "url": "https://github.com/hapijs/lab/pull/318" - }, - { - "id": 59437843, - "labels": ["feature"], - "number": 316, - "title": "Properly support sourcemaps when using the transform option", - "url": "https://github.com/hapijs/lab/pull/316" - } - ], - "number": 41, - "url": "https://github.com/hapijs/lab/milestone/41", - "version": "5.4.0" - }, - { - "date": "2015-02-27T19:36:56Z", - "id": 947123, - "issues": [ - { - "id": 58452261, - "labels": ["feature"], - "number": 311, - "title": "Add live transform of source code before coverage analysis", - "url": "https://github.com/hapijs/lab/pull/311" - }, - { - "id": 57806435, - "labels": ["dependency"], - "number": 308, - "title": " Remove Makefile and advice about it. Closes #284.", - "url": "https://github.com/hapijs/lab/pull/308" - }, - { - "id": 57804231, - "labels": ["dependency"], - "number": 307, - "title": "Linting update", - "url": "https://github.com/hapijs/lab/pull/307" - } - ], - "number": 40, - "url": "https://github.com/hapijs/lab/milestone/40", - "version": "5.3.0" - }, - { - "date": "2015-01-22T16:43:37Z", - "id": 928851, - "issues": [ - { - "id": 55061608, - "labels": ["bug"], - "number": 297, - "title": "Add Intl global", - "url": "https://github.com/hapijs/lab/issues/297" - }, - { - "id": 55022532, - "labels": ["bug"], - "number": 295, - "title": "Ignore Intl global", - "url": "https://github.com/hapijs/lab/pull/295" - }, - { - "id": 50326872, - "labels": ["feature"], - "number": 280, - "title": "Ignoring files in linting", - "url": "https://github.com/hapijs/lab/issues/280" - } - ], - "number": 39, - "url": "https://github.com/hapijs/lab/milestone/39", - "version": "5.2.1" - }, - { - "date": "2015-01-09T16:22:40Z", - "id": 878797, - "issues": [ - { - "id": 53628939, - "labels": ["feature"], - "number": 290, - "title": "make linter pluggable", - "url": "https://github.com/hapijs/lab/pull/290" - }, - { - "id": 52748453, - "labels": ["bug"], - "number": 286, - "title": "Avoid double timeout on before/after", - "url": "https://github.com/hapijs/lab/pull/286" - } - ], - "number": 38, - "url": "https://github.com/hapijs/lab/milestone/38", - "version": "5.2.0" - }, - { - "date": "2014-11-24T18:41:06Z", - "id": 873901, - "issues": [ - { - "id": 49729639, - "labels": ["feature"], - "number": 278, - "title": "Fix before/after exceptions to be reported", - "url": "https://github.com/hapijs/lab/pull/278" - }, - { - "id": 49705098, - "labels": ["feature"], - "number": 277, - "title": "Errors thrown in after & afterEach can cause immediate exit with code 0", - "url": "https://github.com/hapijs/lab/issues/277" - } - ], - "number": 37, - "url": "https://github.com/hapijs/lab/milestone/37", - "version": "5.1.0" - }, - { - "date": "2014-11-20T07:50:54Z", - "id": 856840, - "issues": [ - { - "id": 49506445, - "labels": ["bug"], - "number": 276, - "title": "(true ? true : false) ? 'x' : false === true when coverage enabled (should be 'x')", - "url": "https://github.com/hapijs/lab/issues/276" - } - ], - "number": 36, - "url": "https://github.com/hapijs/lab/milestone/36", - "version": "5.0.3" - }, - { - "date": "2014-11-07T02:55:39Z", - "id": 837429, - "issues": [ - { - "id": 48015403, - "labels": ["bug"], - "number": 271, - "title": "Add Map, Set, and WeakSet to the Harmony globals and improve testing", - "url": "https://github.com/hapijs/lab/pull/271" - }, - { - "id": 46735086, - "labels": ["bug"], - "number": 262, - "title": "Fix console reporting", - "url": "https://github.com/hapijs/lab/pull/262" - } - ], - "number": 35, - "url": "https://github.com/hapijs/lab/milestone/35", - "version": "5.0.2" - }, - { - "date": "2014-10-23T13:46:47Z", - "id": 836292, - "issues": [ - { - "id": 46625919, - "labels": ["bug"], - "number": 261, - "title": "Remove extra hoek typo in package.json", - "url": "https://github.com/hapijs/lab/issues/261" - }, - { - "id": 46540243, - "labels": ["feature"], - "number": 260, - "title": "Add verbosity index", - "url": "https://github.com/hapijs/lab/pull/260" - } - ], - "number": 34, - "url": "https://github.com/hapijs/lab/milestone/34", - "version": "5.0.1" - }, - { - "date": "2014-10-22T17:53:46Z", - "id": 830636, - "issues": [ - { - "id": 46538350, - "labels": ["breaking changes", "release notes"], - "number": 259, - "title": "5.0.0 Release Notes", - "url": "https://github.com/hapijs/lab/issues/259" - }, - { - "id": 46537096, - "labels": ["bug"], - "number": 258, - "title": "Remove extra line breaks in lint report", - "url": "https://github.com/hapijs/lab/pull/258" - }, - { - "id": 46458413, - "labels": ["feature"], - "number": 256, - "title": "Assertions library option", - "url": "https://github.com/hapijs/lab/pull/256" - }, - { - "id": 46451752, - "labels": ["documentation"], - "number": 254, - "title": "Fix documentation to exclude chai ", - "url": "https://github.com/hapijs/lab/issues/254" - }, - { - "id": 46450110, - "labels": ["breaking changes", "dependency"], - "number": 253, - "title": "Remove Chai", - "url": "https://github.com/hapijs/lab/pull/253" - }, - { - "id": 46357134, - "labels": ["bug"], - "number": 252, - "title": "Lint report formatting", - "url": "https://github.com/hapijs/lab/issues/252" - }, - { - "id": 46039262, - "labels": ["breaking changes", "dependency"], - "number": 250, - "title": "Remove chai", - "url": "https://github.com/hapijs/lab/issues/250" - } - ], - "number": 33, - "url": "https://github.com/hapijs/lab/milestone/33", - "version": "5.0.0" - }, - { - "date": "2014-10-17T19:31:11Z", - "id": 820055, - "issues": [ - { - "id": 45929548, - "labels": ["feature"], - "number": 249, - "title": "Fix #217: throw on invalid function declaration", - "url": "https://github.com/hapijs/lab/pull/249" - }, - { - "id": 45517444, - "labels": ["bug"], - "number": 247, - "title": "Run linting in child process", - "url": "https://github.com/hapijs/lab/pull/247" - }, - { - "id": 45501273, - "labels": ["bug"], - "number": 246, - "title": "Remove extra line breaks in report", - "url": "https://github.com/hapijs/lab/pull/246" - }, - { - "id": 45419177, - "labels": ["bug"], - "number": 245, - "title": "Spawn linting in child process", - "url": "https://github.com/hapijs/lab/issues/245" - }, - { - "id": 45416982, - "labels": ["bug"], - "number": 244, - "title": "Remove extra line breaks", - "url": "https://github.com/hapijs/lab/issues/244" - } - ], - "number": 32, - "url": "https://github.com/hapijs/lab/milestone/32", - "version": "4.7.0" - }, - { - "date": "2014-10-09T16:14:02Z", - "id": 818463, - "issues": [ - { - "id": 45382651, - "labels": ["bug"], - "number": 243, - "title": "Remove brace-style rule", - "url": "https://github.com/hapijs/lab/pull/243" - }, - { - "id": 45381958, - "labels": ["bug"], - "number": 242, - "title": "Remove brace-style lint rule", - "url": "https://github.com/hapijs/lab/issues/242" - }, - { - "id": 45379531, - "labels": ["feature"], - "number": 241, - "title": "Lint arg is now a boolean", - "url": "https://github.com/hapijs/lab/pull/241" - }, - { - "id": 45299340, - "labels": ["bug"], - "number": 240, - "title": "Removing consistent-return", - "url": "https://github.com/hapijs/lab/pull/240" - }, - { - "id": 45299182, - "labels": ["bug"], - "number": 239, - "title": "Drop consistent-return lint rule", - "url": "https://github.com/hapijs/lab/issues/239" - }, - { - "id": 45298521, - "labels": ["bug"], - "number": 238, - "title": "Remove no-lonely-if", - "url": "https://github.com/hapijs/lab/pull/238" - }, - { - "id": 45298347, - "labels": ["feature"], - "number": 237, - "title": "Switch -L to be boolean and only use eslint", - "url": "https://github.com/hapijs/lab/issues/237" - }, - { - "id": 45298291, - "labels": ["bug"], - "number": 236, - "title": "Remove no-lonely-if", - "url": "https://github.com/hapijs/lab/issues/236" - } - ], - "number": 31, - "url": "https://github.com/hapijs/lab/milestone/31", - "version": "4.6.2" - }, - { - "date": "2014-10-08T14:58:18Z", - "id": 817128, - "issues": [ - { - "id": 45253297, - "labels": ["test"], - "number": 234, - "title": "Ignore tests for lab", - "url": "https://github.com/hapijs/lab/pull/234" - }, - { - "id": 45253028, - "labels": ["test"], - "number": 233, - "title": "Add eslintignore for labs tests", - "url": "https://github.com/hapijs/lab/issues/233" - }, - { - "id": 45251451, - "labels": ["feature"], - "number": 232, - "title": "Fixing lint rules and only showing files when issues", - "url": "https://github.com/hapijs/lab/pull/232" - }, - { - "id": 45247402, - "labels": ["feature"], - "number": 231, - "title": "Only show linted files if there are issues", - "url": "https://github.com/hapijs/lab/issues/231" - } - ], - "number": 30, - "url": "https://github.com/hapijs/lab/milestone/30", - "version": "4.6.1" - }, - { - "date": "2014-10-07T17:21:13Z", - "id": 811863, - "issues": [ - { - "id": 43214932, - "labels": ["feature"], - "number": 213, - "title": "WIP - Add linting support", - "url": "https://github.com/hapijs/lab/pull/213" - } - ], - "number": 29, - "url": "https://github.com/hapijs/lab/milestone/29", - "version": "4.6.0" - }, - { - "date": "2014-10-02T19:29:18Z", - "id": 802712, - "issues": [ - { - "id": 44717271, - "labels": ["bug"], - "number": 226, - "title": "Support windows console output", - "url": "https://github.com/hapijs/lab/pull/226" - }, - { - "id": 44717107, - "labels": ["bug"], - "number": 225, - "title": "Console reporter doesn't display well on windows", - "url": "https://github.com/hapijs/lab/issues/225" - } - ], - "number": 28, - "url": "https://github.com/hapijs/lab/milestone/28", - "version": "4.5.2" - }, - { - "date": "2014-09-25T15:25:55Z", - "id": 801645, - "issues": [ - { - "id": 43890354, - "labels": ["bug"], - "number": 219, - "title": "Fix mistakes on previous pull requests", - "url": "https://github.com/hapijs/lab/pull/219" - } - ], - "number": 27, - "url": "https://github.com/hapijs/lab/milestone/27", - "version": "4.5.1" - }, - { - "date": "2014-09-24T19:39:53Z", - "id": 791889, - "issues": [ - { - "id": 43323172, - "labels": ["feature"], - "number": 215, - "title": "Add optional timeouts on before(Each), after(Each)", - "url": "https://github.com/hapijs/lab/pull/215" - }, - { - "id": 42701627, - "labels": ["feature"], - "number": 207, - "title": "Fix #178: Add sourcemaps support", - "url": "https://github.com/hapijs/lab/pull/207" - }, - { - "id": 41792408, - "labels": ["feature"], - "number": 178, - "title": "Code coverage with sourcemaps support", - "url": "https://github.com/hapijs/lab/issues/178" - } - ], - "number": 26, - "url": "https://github.com/hapijs/lab/milestone/26", - "version": "4.5.0" - }, - { - "date": "2014-09-16T16:44:16Z", - "id": 790004, - "issues": [ - { - "id": 42893421, - "labels": ["bug"], - "number": 212, - "title": "Fix #209: omit undefined options", - "url": "https://github.com/hapijs/lab/pull/212" - }, - { - "id": 42834797, - "labels": ["bug"], - "number": 209, - "title": "code error results in all tests passing", - "url": "https://github.com/hapijs/lab/issues/209" - } - ], - "number": 25, - "url": "https://github.com/hapijs/lab/milestone/25", - "version": "4.4.4" - }, - { - "date": "2014-09-15T14:54:23Z", - "id": 787951, - "issues": [ - { - "id": 42735514, - "labels": ["bug"], - "number": 208, - "title": "Support multiple tests from the command line.", - "url": "https://github.com/hapijs/lab/pull/208" - } - ], - "number": 24, - "url": "https://github.com/hapijs/lab/milestone/24", - "version": "4.4.3" - }, - { - "date": "2014-09-12T18:39:19Z", - "id": 787890, - "issues": [ - { - "id": 42656105, - "labels": ["bug"], - "number": 205, - "title": "Output and leaks are honored", - "url": "https://github.com/hapijs/lab/pull/205" - }, - { - "id": 42656033, - "labels": ["bug"], - "number": 204, - "title": "CLI: -o not honored", - "url": "https://github.com/hapijs/lab/issues/204" - } - ], - "number": 23, - "url": "https://github.com/hapijs/lab/milestone/23", - "version": "4.4.2" - }, - { - "date": "2014-09-12T17:43:55Z", - "id": 787777, - "issues": [ - { - "id": 42651684, - "labels": ["bug"], - "number": 203, - "title": "Support junit as reporter on cli", - "url": "https://github.com/hapijs/lab/pull/203" - }, - { - "id": 42646576, - "labels": ["bug"], + { + "date": "2026-03-26T19:26:11Z", + "id": 15310747, + "issues": [ + { + "id": 3969245812, + "labels": ["bug"], + "number": 1087, + "title": "fix: guard parent access in `addTsEsmHook` for ESM-to-CJS sub-dependency resolution", + "url": "https://github.com/hapijs/lab/pull/1087" + }, + { + "id": 3967639716, + "labels": ["bug"], + "number": 1086, + "title": "`@hapi/lab` crashes when TypeScript tests depend on ESM packages", + "url": "https://github.com/hapijs/lab/issues/1086" + } + ], + "number": 202, + "url": "https://github.com/hapijs/lab/milestone/202", + "version": "26.0.1" + }, + { + "date": "2024-10-24T08:05:55Z", + "id": 11773498, + "issues": [ + { + "id": 2605570739, + "labels": ["breaking changes"], + "number": 1081, + "title": "chore: report node 18+ support", + "url": "https://github.com/hapijs/lab/pull/1081" + }, + { + "id": 2605559541, + "labels": ["breaking changes", "release notes"], + "number": 1080, + "title": "26.0.0 Release Notes", + "url": "https://github.com/hapijs/lab/issues/1080" + }, + { + "id": 2605548991, + "labels": ["breaking changes"], + "number": 1079, + "title": "chore: next version", + "url": "https://github.com/hapijs/lab/pull/1079" + }, + { + "id": 2433661752, + "labels": ["breaking changes"], + "number": 1076, + "title": "feat: target ESLint v9", + "url": "https://github.com/hapijs/lab/pull/1076" + }, + { + "id": 2058782718, + "labels": ["feature", "breaking changes"], + "number": 1071, + "title": "Tighten type checking config", + "url": "https://github.com/hapijs/lab/pull/1071" + } + ], + "number": 201, + "url": "https://github.com/hapijs/lab/milestone/201", + "version": "26.0.0" + }, + { + "date": "2024-10-22T13:15:46Z", + "id": 11746408, + "issues": [ + { + "id": 2591038481, + "labels": ["bug"], + "number": 1078, + "title": "Ignore new TypeScript global leak", + "url": "https://github.com/hapijs/lab/pull/1078" + } + ], "number": 200, - "title": "junit reporter unavailable", - "url": "https://github.com/hapijs/lab/issues/200" - } - ], - "number": 22, - "url": "https://github.com/hapijs/lab/milestone/22", - "version": "4.4.1" - }, - { - "date": "2014-09-12T16:16:01Z", - "id": 778915, - "issues": [ - { - "id": 42643607, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/200", + "version": "25.3.2" + }, + { + "date": "2024-10-17T13:15:31Z", + "id": 11369083, + "issues": [ + { + "id": 2433406320, + "labels": ["bug"], + "number": 1075, + "title": "fix: coverage for arrow functions returning literals", + "url": "https://github.com/hapijs/lab/pull/1075" + }, + { + "id": 2433386267, + "labels": ["bug"], + "number": 1074, + "title": "fix: lint typescript files", + "url": "https://github.com/hapijs/lab/pull/1074" + } + ], "number": 199, - "title": "Add --ignore option and document alias arguments", - "url": "https://github.com/hapijs/lab/pull/199" - }, - { - "id": 42642279, - "labels": ["test"], + "url": "https://github.com/hapijs/lab/milestone/199", + "version": "25.3.1" + }, + { + "date": "2024-07-26T06:32:57Z", + "id": 11362775, + "issues": [ + { + "id": 2431088096, + "labels": ["feature"], + "number": 1073, + "title": "feat: add explicit extension support when using Typescript and ESM", + "url": "https://github.com/hapijs/lab/pull/1073" + } + ], "number": 198, - "title": "Add test for unknown arguments", - "url": "https://github.com/hapijs/lab/pull/198" - }, - { - "id": 42639125, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/198", + "version": "25.3.0" + }, + { + "date": "2024-01-15T13:14:31Z", + "id": 10420366, + "issues": [ + { + "id": 1992212686, + "labels": ["feature"], + "number": 1069, + "title": "Always lint .ts", + "url": "https://github.com/hapijs/lab/pull/1069" + }, + { + "id": 1818438189, + "labels": ["feature"], + "number": 1065, + "title": "Add `.ts` to the default `extensions` for `--lint`", + "url": "https://github.com/hapijs/lab/issues/1065" + } + ], "number": 197, - "title": "Restrict CLI reporter checks and add usage on errors", - "url": "https://github.com/hapijs/lab/pull/197" - }, - { - "id": 42638958, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/197", + "version": "25.2.0" + }, + { + "date": "2024-01-15T13:10:57Z", + "id": 10420346, + "issues": [ + { + "id": 2058766656, + "labels": ["bug"], + "number": 1070, + "title": "Make report an allow list", + "url": "https://github.com/hapijs/lab/pull/1070" + } + ], "number": 196, - "title": "Globals", - "url": "https://github.com/hapijs/lab/issues/196" - }, - { - "id": 42636264, - "labels": ["dependency"], + "url": "https://github.com/hapijs/lab/milestone/196", + "version": "25.1.4" + }, + { + "date": "2023-02-11T18:20:06Z", + "id": 9033180, + "issues": [ + { + "id": 1559436368, + "labels": ["feature"], + "number": 1061, + "title": "Fix: add more typescript leaks", + "url": "https://github.com/hapijs/lab/pull/1061" + } + ], + "number": 195, + "url": "https://github.com/hapijs/lab/milestone/195", + "version": "25.1.2" + }, + { + "date": "2023-02-11T18:18:28Z", + "id": 9033178, + "issues": [ + { + "id": 1551792105, + "labels": ["dependency"], + "number": 1060, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/lab/pull/1060" + } + ], + "number": 194, + "url": "https://github.com/hapijs/lab/milestone/194", + "version": "25.1.1" + }, + { + "date": "2023-02-11T18:18:30Z", + "id": 7954546, + "issues": [ + { + "id": 1502816570, + "labels": ["bug", "types"], + "number": 1059, + "title": "Bump @types/node", + "url": "https://github.com/hapijs/lab/pull/1059" + }, + { + "id": 1501589848, + "labels": ["bug"], + "number": 1058, + "title": "Deal with `Symbol(undici.globalDispatcher.1)` in Node.js 18+", + "url": "https://github.com/hapijs/lab/pull/1058" + }, + { + "id": 1407465316, + "labels": [], + "number": 1057, + "title": "Enable linting of *.cjs and *.mjs files", + "url": "https://github.com/hapijs/lab/pull/1057" + }, + { + "id": 1243224288, + "labels": ["bug"], + "number": 1052, + "title": "Add missing space after colon", + "url": "https://github.com/hapijs/lab/pull/1052" + } + ], "number": 193, - "title": "Upping to bossy 1.0.0", - "url": "https://github.com/hapijs/lab/pull/193" - }, - { - "id": 42483561, - "labels": ["dependency"], + "url": "https://github.com/hapijs/lab/milestone/193", + "version": "25.1.0" + }, + { + "date": "2022-05-08T00:32:23Z", + "id": 7954474, + "issues": [ + { + "id": 1228740974, + "labels": ["bug"], + "number": 1051, + "title": "Add check for TS error 2820", + "url": "https://github.com/hapijs/lab/pull/1051" + } + ], "number": 192, - "title": "Switching from optimist to bossy", - "url": "https://github.com/hapijs/lab/pull/192" - }, - { - "id": 42483446, - "labels": ["dependency"], - "number": 191, - "title": "Switch from optimist to bossy", - "url": "https://github.com/hapijs/lab/issues/191" - }, - { - "id": 42206408, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/192", + "version": "25.0.1" + }, + { + "date": "2022-05-07T22:58:25Z", + "id": 7832089, + "issues": [ + { + "id": 1227413091, + "labels": ["breaking changes", "dependency"], + "number": 1050, + "title": "Upgrade dependences", + "url": "https://github.com/hapijs/lab/pull/1050" + }, + { + "id": 1222922943, + "labels": ["feature"], + "number": 1048, + "title": "Update target to ES2020 to match node 14+", + "url": "https://github.com/hapijs/lab/pull/1048" + }, + { + "id": 1213347615, + "labels": ["feature", "dependency"], + "number": 1045, + "title": "Support node v18", + "url": "https://github.com/hapijs/lab/pull/1045" + }, + { + "id": 1198958528, + "labels": ["feature", "breaking changes"], + "number": 1037, + "title": "Remove undocumented --coverage-module option", + "url": "https://github.com/hapijs/lab/pull/1037" + }, + { + "id": 1191248070, + "labels": ["feature", "breaking changes", "dependency"], + "number": 1035, + "title": "Upgrade to eslint v8", + "url": "https://github.com/hapijs/lab/pull/1035" + }, + { + "id": 1191172849, + "labels": ["breaking changes"], + "number": 1034, + "title": "Drop support for node v12", + "url": "https://github.com/hapijs/lab/pull/1034" + }, + { + "id": 994054730, + "labels": ["feature"], + "number": 1021, + "title": "Update linter to work with ESLint 8", + "url": "https://github.com/hapijs/lab/issues/1021" + } + ], + "number": 190, + "url": "https://github.com/hapijs/lab/milestone/190", + "version": "25.0.0" + }, + { + "date": "2022-04-30T23:33:18Z", + "id": 7832088, + "issues": [ + { + "id": 1213064738, + "labels": ["feature"], + "number": 1044, + "title": "Revise leak detection to use fresh node globals", + "url": "https://github.com/hapijs/lab/pull/1044" + }, + { + "id": 1206106423, + "labels": ["feature"], + "number": 1043, + "title": "New --coverage-predicates option", + "url": "https://github.com/hapijs/lab/pull/1043" + }, + { + "id": 1205886093, + "labels": ["feature"], + "number": 1042, + "title": "Remove node 8 compat fix", + "url": "https://github.com/hapijs/lab/pull/1042" + }, + { + "id": 1205806858, + "labels": [], + "number": 1041, + "title": "feat: 🎸 depedencies cli option", + "url": "https://github.com/hapijs/lab/pull/1041" + }, + { + "id": 1198973177, + "labels": ["dependency"], + "number": 1038, + "title": "Update sindresorhus deps to pre ESM versions", + "url": "https://github.com/hapijs/lab/pull/1038" + }, + { + "id": 1198893406, + "labels": ["feature"], + "number": 1036, + "title": "Coverage for nullish coalescing operator", + "url": "https://github.com/hapijs/lab/pull/1036" + }, + { + "id": 1190529016, + "labels": ["feature"], + "number": 1033, + "title": "tsconfig paths alias", + "url": "https://github.com/hapijs/lab/issues/1033" + } + ], + "number": 189, + "url": "https://github.com/hapijs/lab/milestone/189", + "version": "24.7.0" + }, + { + "date": "2022-04-02T22:20:53Z", + "id": 7590000, + "issues": [ + { + "id": 1173620066, + "labels": ["feature"], + "number": 1032, + "title": "add Node.js 18 globals", + "url": "https://github.com/hapijs/lab/pull/1032" + }, + { + "id": 1137674150, + "labels": ["feature"], + "number": 1031, + "title": "Support for ES modules", + "url": "https://github.com/hapijs/lab/pull/1031" + } + ], + "number": 188, + "url": "https://github.com/hapijs/lab/milestone/188", + "version": "24.6.0" + }, + { + "date": "2022-01-19T18:48:34Z", + "id": 7529360, + "issues": [ + { + "id": 1106829691, + "labels": ["bug"], + "number": 1029, + "title": "Add inline typescript sources to transformed output", + "url": "https://github.com/hapijs/lab/pull/1029" + }, + { + "id": 1103277102, + "labels": ["bug"], + "number": 1028, + "title": "Skip coverage on non-mapped transpiled code", + "url": "https://github.com/hapijs/lab/pull/1028" + }, + { + "id": 946311418, + "labels": ["bug"], + "number": 1018, + "title": "Add @hapi/eslint-plugin as peer dependency", + "url": "https://github.com/hapijs/lab/pull/1018" + }, + { + "id": 943537816, + "labels": ["bug"], + "number": 1017, + "title": "Using the coverage reporter requires \"@hapi/eslint-plugin\" to be installed, even if it’s not used.", + "url": "https://github.com/hapijs/lab/issues/1017" + }, + { + "id": 832071826, + "labels": [], + "number": 1002, + "title": "Code coverage reports on transpiled JavaScript, instead of TypeScript source", + "url": "https://github.com/hapijs/lab/issues/1002" + }, + { + "id": 570739682, + "labels": ["support"], + "number": 972, + "title": "Original files in HTML reporter", + "url": "https://github.com/hapijs/lab/issues/972" + } + ], "number": 187, - "title": "Added clover reporter", - "url": "https://github.com/hapijs/lab/pull/187" - } - ], - "number": 21, - "url": "https://github.com/hapijs/lab/milestone/21", - "version": "4.4.0" - }, - { - "date": "2014-09-04T19:17:18Z", - "id": 766654, - "issues": [ - { - "id": 41966889, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/187", + "version": "24.5.1" + }, + { + "date": "2021-12-31T07:46:14Z", + "id": 7339933, + "issues": [ + { + "id": 1088214303, + "labels": ["feature"], + "number": 1026, + "title": "Add TypeScript support. Closes #1025", + "url": "https://github.com/hapijs/lab/pull/1026" + }, + { + "id": 822048399, + "labels": ["bug"], + "number": 1001, + "title": "Introduce an upper limit to how much actual vs. expected is diffed", + "url": "https://github.com/hapijs/lab/pull/1001" + } + ], + "number": 186, + "url": "https://github.com/hapijs/lab/milestone/186", + "version": "24.5.0" + }, + { + "date": "2021-11-09T05:10:49Z", + "id": 6954387, + "issues": [ + { + "id": 1007659587, + "labels": ["test"], + "number": 1023, + "title": "Cleanup flaky tests, lint CLI scripts", + "url": "https://github.com/hapijs/lab/pull/1023" + }, + { + "id": 981358944, + "labels": ["feature"], + "number": 1020, + "title": "Add DOMException and structuredClone globals to leaks module", + "url": "https://github.com/hapijs/lab/pull/1020" + }, + { + "id": 976314841, + "labels": ["feature"], + "number": 1019, + "title": "DOMException will be a global in Node.js 17+", + "url": "https://github.com/hapijs/lab/issues/1019" + } + ], + "number": 185, + "url": "https://github.com/hapijs/lab/milestone/185", + "version": "v24.4.0" + }, + { + "date": "2021-07-16T12:59:22Z", + "id": 6954385, + "issues": [ + { + "id": 942495254, + "labels": ["bug"], + "number": 1016, + "title": "fix: never instrument eslint configs for coverage", + "url": "https://github.com/hapijs/lab/pull/1016" + } + ], + "number": 184, + "url": "https://github.com/hapijs/lab/milestone/184", + "version": "v24.3.2" + }, + { + "date": "2021-07-16T12:58:49Z", + "id": 6931554, + "issues": [ + { + "id": 942240269, + "labels": ["bug"], + "number": 1015, + "title": "fix: correct semver range for @hapi/eslint-plugin", + "url": "https://github.com/hapijs/lab/pull/1015" + } + ], + "number": 183, + "url": "https://github.com/hapijs/lab/milestone/183", + "version": "v24.3.1" + }, + { + "date": "2021-07-09T07:45:45Z", + "id": 6900376, + "issues": [ + { + "id": 925570187, + "labels": ["dependency"], + "number": 1014, + "title": "Add eslint configuration", + "url": "https://github.com/hapijs/lab/pull/1014" + }, + { + "id": 925563698, + "labels": ["feature"], + "number": 1013, + "title": "Add eslint-plugin module config to lint/coverage feature", + "url": "https://github.com/hapijs/lab/pull/1013" + }, + { + "id": 898780652, + "labels": ["feature"], + "number": 1012, + "title": "Use the new module ESLint configuration", + "url": "https://github.com/hapijs/lab/issues/1012" + } + ], "number": 182, - "title": "Adding lcov format reporter", - "url": "https://github.com/hapijs/lab/pull/182" - }, - { - "id": 41950278, - "labels": ["documentation"], + "url": "https://github.com/hapijs/lab/milestone/182", + "version": "v24.3.0" + }, + { + "date": "2021-06-29T17:25:40Z", + "id": 6689932, + "issues": [ + { + "id": 873779009, + "labels": ["bug"], + "number": 1007, + "title": "Report on private/protected class type errors", + "url": "https://github.com/hapijs/lab/pull/1007" + }, + { + "id": 869786463, + "labels": ["bug"], + "number": 1006, + "title": "Incorrect type error detection", + "url": "https://github.com/hapijs/lab/issues/1006" + } + ], + "number": 181, + "url": "https://github.com/hapijs/lab/milestone/181", + "version": "24.2.1" + }, + { + "date": "2021-04-23T03:31:51Z", + "id": 6684299, + "issues": [ + { + "id": 863825022, + "labels": ["feature"], + "number": 1004, + "title": "Add new globals for node v16", + "url": "https://github.com/hapijs/lab/pull/1004" + } + ], "number": 180, - "title": "Stray asterisk in README", - "url": "https://github.com/hapijs/lab/issues/180" - }, - { - "id": 41828997, - "labels": ["test"], - "number": 179, - "title": "Add tests for coverage that throws", - "url": "https://github.com/hapijs/lab/pull/179" - }, - { - "id": 36653773, - "labels": ["feature"], - "number": 109, - "title": "Option to output coverage in lcov format", - "url": "https://github.com/hapijs/lab/issues/109" - } - ], - "number": 20, - "url": "https://github.com/hapijs/lab/milestone/20", - "version": "4.3.0" - }, - { - "date": "2014-08-26T21:18:31Z", - "id": 760674, - "issues": [ - { - "id": 41202105, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/180", + "version": "24.2.0" + }, + { + "date": "2021-02-21T16:24:55Z", + "id": 6021623, + "issues": [ + { + "id": 780481768, + "labels": ["bug"], + "number": 1000, + "title": "Fix retrying of passing tests", + "url": "https://github.com/hapijs/lab/pull/1000" + } + ], + "number": 178, + "url": "https://github.com/hapijs/lab/milestone/178", + "version": "24.1.1" + }, + { + "date": "2020-10-22T15:59:02Z", + "id": 5907881, + "issues": [ + { + "id": 721543843, + "labels": ["feature"], + "number": 997, + "title": "lib: add new globals from Node.js 15.x", + "url": "https://github.com/hapijs/lab/pull/997" + } + ], + "number": 177, + "url": "https://github.com/hapijs/lab/milestone/177", + "version": "24.1.0" + }, + { + "date": "2020-09-23T02:29:34Z", + "id": 5195677, + "issues": [ + { + "id": 706882982, + "labels": ["breaking changes", "release notes"], + "number": 996, + "title": "24.0.0 Release Notes", + "url": "https://github.com/hapijs/lab/issues/996" + }, + { + "id": 695274947, + "labels": ["feature"], + "number": 995, + "title": "Wait for pending ticks started by test", + "url": "https://github.com/hapijs/lab/pull/995" + }, + { + "id": 690249019, + "labels": ["breaking changes"], + "number": 993, + "title": "Shallow clone context", + "url": "https://github.com/hapijs/lab/pull/993" + }, + { + "id": 683463673, + "labels": ["breaking changes", "dependency"], + "number": 992, + "title": "Allow typescript to be updated by clients", + "url": "https://github.com/hapijs/lab/pull/992" + }, + { + "id": 682770513, + "labels": ["feature"], + "number": 990, + "title": "Use eslint-plugin-hapi embedded config", + "url": "https://github.com/hapijs/lab/pull/990" + }, + { + "id": 677176243, + "labels": ["breaking changes"], + "number": 987, + "title": "throw error if an async experiment function is provided", + "url": "https://github.com/hapijs/lab/pull/987" + } + ], "number": 176, - "title": "Adding test run data to html report", - "url": "https://github.com/hapijs/lab/pull/176" - }, - { - "id": 41097110, - "labels": ["test"], + "url": "https://github.com/hapijs/lab/milestone/176", + "version": "24.0.0" + }, + { + "date": "2020-03-12T17:10:15Z", + "id": 4972606, + "issues": [ + { + "id": 579782324, + "labels": ["security", "dependency"], + "number": 975, + "title": "Replace mkdirp with Fs.mkdirSync with recursive: true", + "url": "https://github.com/hapijs/lab/pull/975" + }, + { + "id": 579782203, + "labels": ["security", "dependency"], + "number": 974, + "title": "Vulnerability in a dep of mkdirp", + "url": "https://github.com/hapijs/lab/issues/974" + } + ], "number": 175, - "title": "Cleanup tests for timeout overrides", - "url": "https://github.com/hapijs/lab/pull/175" - }, - { - "id": 40969785, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/175", + "version": "22.0.4" + }, + { + "date": "2020-01-04T09:24:50Z", + "id": 4961118, + "issues": [ + { + "id": 545263279, + "labels": ["dependency"], + "number": 968, + "title": "Update deps", + "url": "https://github.com/hapijs/lab/issues/968" + } + ], "number": 174, - "title": "Add lines covered and not covered to the CC report", - "url": "https://github.com/hapijs/lab/pull/174" - }, - { - "id": 38036162, - "labels": ["feature"], - "number": 118, - "title": "Way to get coverage report in HTML at the same time as console", - "url": "https://github.com/hapijs/lab/issues/118" - } - ], - "number": 19, - "url": "https://github.com/hapijs/lab/milestone/19", - "version": "4.2.0" - }, - { - "date": "2014-08-20T21:21:08Z", - "id": 752740, - "issues": [ - { - "id": 40746047, - "labels": [], + "url": "https://github.com/hapijs/lab/milestone/174", + "version": "22.0.3" + }, + { + "date": "2019-12-28T17:25:00Z", + "id": 4960457, + "issues": [ + { + "id": 543252424, + "labels": ["feature"], + "number": 963, + "title": "Record retries", + "url": "https://github.com/hapijs/lab/issues/963" + }, + { + "id": 543239099, + "labels": ["feature", "breaking changes", "dependency"], + "number": 962, + "title": "Replace Espree with babel-eslint", + "url": "https://github.com/hapijs/lab/issues/962" + } + ], + "number": 173, + "url": "https://github.com/hapijs/lab/milestone/173", + "version": "22.0.2" + }, + { + "date": "2019-12-28T07:27:49Z", + "id": 4960451, + "issues": [ + { + "id": 543085871, + "labels": ["bug"], + "number": 961, + "title": "Update es lint version", + "url": "https://github.com/hapijs/lab/issues/961" + } + ], "number": 172, - "title": "Upping to version 4.1.0", - "url": "https://github.com/hapijs/lab/pull/172" - }, - { - "id": 40745472, - "labels": ["release notes"], + "url": "https://github.com/hapijs/lab/milestone/172", + "version": "22.0.1" + }, + { + "date": "2019-12-28T07:09:49Z", + "id": 4746568, + "issues": [ + { + "id": 543083341, + "labels": ["breaking changes", "dependency"], + "number": 960, + "title": "Drop node 10", + "url": "https://github.com/hapijs/lab/issues/960" + }, + { + "id": 543076515, + "labels": ["breaking changes", "dependency"], + "number": 959, + "title": "Update lint rules", + "url": "https://github.com/hapijs/lab/issues/959" + }, + { + "id": 541912426, + "labels": ["test"], + "number": 957, + "title": "update test assertion for node core changes", + "url": "https://github.com/hapijs/lab/pull/957" + }, + { + "id": 541207991, + "labels": ["bug", "types"], + "number": 955, + "title": "TS: String object type -> string literal type", + "url": "https://github.com/hapijs/lab/pull/955" + }, + { + "id": 541202398, + "labels": ["bug", "types"], + "number": 954, + "title": "TS: Uses an inferred generic on flags.mustCall", + "url": "https://github.com/hapijs/lab/pull/954" + } + ], "number": 171, - "title": "4.1.0 Release Notes", - "url": "https://github.com/hapijs/lab/issues/171" - }, - { - "id": 40626256, - "labels": ["documentation"], + "url": "https://github.com/hapijs/lab/milestone/171", + "version": "22.0.0" + }, + { + "date": "2019-10-14T07:47:36Z", + "id": 4723278, + "issues": [ + { + "id": 506259152, + "labels": ["breaking changes", "types"], + "number": 950, + "title": "Update types", + "url": "https://github.com/hapijs/lab/issues/950" + }, + { + "id": 506259109, + "labels": ["breaking changes", "dependency"], + "number": 949, + "title": "Drop node 8", + "url": "https://github.com/hapijs/lab/issues/949" + } + ], + "number": 170, + "url": "https://github.com/hapijs/lab/milestone/170", + "version": "21.0.0" + }, + { + "date": "2019-10-05T02:51:10Z", + "id": 4684451, + "issues": [ + { + "id": 502866979, + "labels": ["feature"], + "number": 948, + "title": "Tags to skip types test line execution", + "url": "https://github.com/hapijs/lab/issues/948" + }, + { + "id": 498521608, + "labels": ["bug"], + "number": 945, + "title": "coverage-all option triggers TypeError: Cannot set property 'source' of undefined", + "url": "https://github.com/hapijs/lab/issues/945" + } + ], + "number": 169, + "url": "https://github.com/hapijs/lab/milestone/169", + "version": "20.4.0" + }, + { + "date": "2019-09-23T19:23:35Z", + "id": 4681562, + "issues": [ + { + "id": 497278200, + "labels": ["bug"], + "number": 943, + "title": "Fails to load npm modules in ts tests", + "url": "https://github.com/hapijs/lab/issues/943" + } + ], "number": 168, - "title": "updated README to cover JUnit reporter", - "url": "https://github.com/hapijs/lab/pull/168" - }, - { - "id": 40621859, - "labels": ["documentation"], + "url": "https://github.com/hapijs/lab/milestone/168", + "version": "20.3.2" + }, + { + "date": "2019-09-23T07:09:07Z", + "id": 4681297, + "issues": [ + { + "id": 496928353, + "labels": ["bug"], + "number": 942, + "title": "Support types test execution on windows", + "url": "https://github.com/hapijs/lab/issues/942" + } + ], "number": 167, - "title": "Document JUnit reporter", - "url": "https://github.com/hapijs/lab/issues/167" - }, - { - "id": 40578983, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/167", + "version": "20.3.1" + }, + { + "date": "2019-09-23T04:52:06Z", + "id": 4619480, + "issues": [ + { + "id": 496747948, + "labels": ["bug"], + "number": 941, + "title": "External modules coverage fails on windows due to path", + "url": "https://github.com/hapijs/lab/issues/941" + }, + { + "id": 496083799, + "labels": ["feature"], + "number": 940, + "title": "Run TS tests, not just validate them", + "url": "https://github.com/hapijs/lab/issues/940" + }, + { + "id": 451217916, + "labels": ["bug"], + "number": 924, + "title": "New diff is broken", + "url": "https://github.com/hapijs/lab/issues/924" + }, + { + "id": 356041774, + "labels": ["bug"], + "number": 856, + "title": "coverage analysis modifies a function return", + "url": "https://github.com/hapijs/lab/issues/856" + } + ], "number": 166, - "title": "Added junit reporter", - "url": "https://github.com/hapijs/lab/pull/166" - }, - { - "id": 40469258, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/166", + "version": "20.3.0" + }, + { + "date": "2019-09-01T07:31:52Z", + "id": 4599562, + "issues": [ + { + "id": 487852293, + "labels": ["bug", "dependency"], + "number": 938, + "title": "Stupid typescript", + "url": "https://github.com/hapijs/lab/issues/938" + } + ], "number": 165, - "title": "Junit output", - "url": "https://github.com/hapijs/lab/issues/165" - }, - { - "id": 40456605, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/165", + "version": "20.2.2" + }, + { + "date": "2019-08-24T00:55:35Z", + "id": 4577272, + "issues": [ + { + "id": 484757752, + "labels": ["feature"], + "number": 937, + "title": "Support coverage of external modules with own coverage reports", + "url": "https://github.com/hapijs/lab/issues/937" + } + ], "number": 164, - "title": "Feature - Prevent clobbered timer globals from interfering with runner", - "url": "https://github.com/hapijs/lab/pull/164" - }, - { - "id": 40395473, - "labels": ["feature"], - "number": 163, - "title": "Updating TAP reporter to specification version 13", - "url": "https://github.com/hapijs/lab/pull/163" - }, - { - "id": 40386162, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/164", + "version": "20.2.1" + }, + { + "date": "2019-08-15T23:22:50Z", + "id": 4409992, + "issues": [ + { + "id": 481023511, + "labels": ["feature"], + "number": 936, + "title": "Ignore symbol leaks", + "url": "https://github.com/hapijs/lab/issues/936" + } + ], "number": 162, - "title": "cli override. Closes #161", - "url": "https://github.com/hapijs/lab/pull/162" - }, - { - "id": 40383421, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/162", + "version": "20.1.0" + }, + { + "date": "2019-08-07T20:02:18Z", + "id": 4556266, + "issues": [ + { + "id": 478102114, + "labels": ["breaking changes", "release notes", "dependency"], + "number": 933, + "title": "Update to eslint 6", + "url": "https://github.com/hapijs/lab/issues/933" + }, + { + "id": 478089339, + "labels": ["feature"], + "number": 932, + "title": "Single line coverage ignore", + "url": "https://github.com/hapijs/lab/issues/932" + } + ], + "number": 163, + "url": "https://github.com/hapijs/lab/milestone/163", + "version": "20.0.0" + }, + { + "date": "2019-06-14T20:35:58Z", + "id": 4325619, + "issues": [ + { + "id": 453926589, + "labels": ["feature"], + "number": 926, + "title": "Implement coverage bypass stack", + "url": "https://github.com/hapijs/lab/pull/926" + }, + { + "id": 447702301, + "labels": ["bug"], + "number": 923, + "title": "Support multiple \"only\" flags", + "url": "https://github.com/hapijs/lab/pull/923" + }, + { + "id": 447343962, + "labels": ["bug"], + "number": 922, + "title": "Support for multiple \"only\"", + "url": "https://github.com/hapijs/lab/issues/922" + }, + { + "id": 408047574, + "labels": ["feature"], + "number": 904, + "title": "Add affordance for coverage flag stack", + "url": "https://github.com/hapijs/lab/issues/904" + } + ], "number": 161, - "title": "Allow setting CLI options programatically ", - "url": "https://github.com/hapijs/lab/issues/161" - }, - { - "id": 40271367, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/161", + "version": "19.1.0" + }, + { + "date": "2019-05-17T18:16:26Z", + "id": 4319783, + "issues": [ + { + "id": 445559536, + "labels": ["bug"], + "number": 921, + "title": "Handle ts \"Cannot find name\" error when expected", + "url": "https://github.com/hapijs/lab/issues/921" + } + ], + "number": 160, + "url": "https://github.com/hapijs/lab/milestone/160", + "version": "19.0.1" + }, + { + "date": "2019-05-16T07:43:32Z", + "id": 4252648, + "issues": [ + { + "id": 444803704, + "labels": ["breaking changes", "release notes"], + "number": 920, + "title": "19.0.0 Release Notes", + "url": "https://github.com/hapijs/lab/issues/920" + }, + { + "id": 444802175, + "labels": ["breaking changes"], + "number": 919, + "title": "Change console reporter labels", + "url": "https://github.com/hapijs/lab/issues/919" + }, + { + "id": 443069719, + "labels": ["feature"], + "number": 918, + "title": "Typescript test support", + "url": "https://github.com/hapijs/lab/issues/918" + }, + { + "id": 443038205, + "labels": ["breaking changes"], + "number": 917, + "title": "Remove debug-brk", + "url": "https://github.com/hapijs/lab/issues/917" + }, + { + "id": 440921222, + "labels": ["bug", "breaking changes"], + "number": 916, + "title": "Global leak detector skips Symbol() properties", + "url": "https://github.com/hapijs/lab/issues/916" + }, + { + "id": 439146173, + "labels": ["bug", "feature", "breaking changes"], + "number": 915, + "title": "Use util.inspect() for console reporter", + "url": "https://github.com/hapijs/lab/pull/915" + }, + { + "id": 438270598, + "labels": ["bug"], + "number": 914, + "title": "\"console\" reporter crashes if object contains a BigInt", + "url": "https://github.com/hapijs/lab/issues/914" + }, + { + "id": 152034037, + "labels": ["bug"], + "number": 572, + "title": "No mismatch highlighted on -0 !== 0 deep equality mismatch", + "url": "https://github.com/hapijs/lab/issues/572" + } + ], "number": 159, - "title": "Detect missing exports.lab in the cli runner", - "url": "https://github.com/hapijs/lab/pull/159" - }, - { - "id": 40162316, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/159", + "version": "19.0.0" + }, + { + "date": "2019-04-23T16:54:23Z", + "id": 4184477, + "issues": [ + { + "id": 436288057, + "labels": ["dependency"], + "number": 913, + "title": "Update lint rules modules", + "url": "https://github.com/hapijs/lab/issues/913" + }, + { + "id": 436287715, + "labels": ["bug"], + "number": 912, + "title": "Add globalThis to symbols", + "url": "https://github.com/hapijs/lab/issues/912" + } + ], + "number": 158, + "url": "https://github.com/hapijs/lab/milestone/158", + "version": "18.1.2" + }, + { + "date": "2019-04-23T16:45:14Z", + "id": 4184434, + "issues": [ + { + "id": 427199608, + "labels": ["dependency"], + "number": 911, + "title": "Update code", + "url": "https://github.com/hapijs/lab/issues/911" + } + ], "number": 157, - "title": "Handle tests without a \"exports.lab\" gracefully", - "url": "https://github.com/hapijs/lab/issues/157" - }, - { - "id": 38222959, - "labels": ["feature"], - "number": 119, - "title": "Duration of tests shown via TAP", - "url": "https://github.com/hapijs/lab/issues/119" - } - ], - "number": 18, - "url": "https://github.com/hapijs/lab/milestone/18", - "version": "4.1.0" - }, - { - "date": "2014-08-13T19:41:04Z", - "id": 748101, - "issues": [ - { - "id": 40086596, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/157", + "version": "18.1.1" + }, + { + "date": "2019-03-29T21:40:22Z", + "id": 4049403, + "issues": [ + { + "id": 427188223, + "labels": ["non issue"], + "number": 910, + "title": "Change module namespace", + "url": "https://github.com/hapijs/lab/issues/910" + } + ], "number": 156, - "title": "Remove skipped tests from total run count", - "url": "https://github.com/hapijs/lab/pull/156" - }, - { - "id": 40086439, - "labels": ["documentation"], + "url": "https://github.com/hapijs/lab/milestone/156", + "version": "18.1.0" + }, + { + "date": "2019-02-12T01:05:36Z", + "id": 3908506, + "issues": [ + { + "id": 409059131, + "labels": ["dependency"], + "number": 905, + "title": "Update deps", + "url": "https://github.com/hapijs/lab/issues/905" + } + ], "number": 155, - "title": "Clarify how `only` behaves", - "url": "https://github.com/hapijs/lab/issues/155" - }, - { - "id": 40080381, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/155", + "version": "18.0.2" + }, + { + "date": "2018-12-17T23:01:47Z", + "id": 3819611, + "issues": [ + { + "id": 384006300, + "labels": ["bug", "dependency"], + "number": 898, + "title": "Switch back to Hoek.clone from lodash.deepClone.", + "url": "https://github.com/hapijs/lab/pull/898" + }, + { + "id": 381946973, + "labels": ["bug"], + "number": 895, + "title": "Fix coverage with sourcemaps inlined via Transform API.", + "url": "https://github.com/hapijs/lab/pull/895" + } + ], "number": 154, - "title": "Skipped tests still reported on console reporter as being run", - "url": "https://github.com/hapijs/lab/issues/154" - }, - { - "id": 40005417, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/154", + "version": "18.0.1" + }, + { + "date": "2018-11-13T22:46:35Z", + "id": 3792012, + "issues": [ + { + "id": 380387019, + "labels": ["bug", "breaking changes"], + "number": 894, + "title": "Have correct exit code with multiple reporters", + "url": "https://github.com/hapijs/lab/pull/894" + }, + { + "id": 380002574, + "labels": ["lts"], + "number": 893, + "title": "Properly propagate term sig to child lab process", + "url": "https://github.com/hapijs/lab/pull/893" + }, + { + "id": 379995072, + "labels": ["documentation"], + "number": 892, + "title": "Add note about how to get a tests ID", + "url": "https://github.com/hapijs/lab/pull/892" + }, + { + "id": 379993286, + "labels": ["dependency", "lts"], + "number": 891, + "title": "Update eslint version", + "url": "https://github.com/hapijs/lab/pull/891" + }, + { + "id": 379989688, + "labels": ["lts"], + "number": 890, + "title": "Remove deprecated espree option", + "url": "https://github.com/hapijs/lab/pull/890" + }, + { + "id": 379987001, + "labels": ["documentation"], + "number": 889, + "title": "Remove docs about custom linter option", + "url": "https://github.com/hapijs/lab/pull/889" + }, + { + "id": 379982831, + "labels": ["bug"], + "number": 888, + "title": "Compare coverage pattern to canonical path", + "url": "https://github.com/hapijs/lab/pull/888" + }, + { + "id": 379369203, + "labels": ["lts"], + "number": 885, + "title": "Centralize espree options", + "url": "https://github.com/hapijs/lab/pull/885" + }, + { + "id": 379367206, + "labels": ["lts"], + "number": 884, + "title": "Remove old parallel flag from test", + "url": "https://github.com/hapijs/lab/pull/884" + }, + { + "id": 379364149, + "labels": ["bug"], + "number": 883, + "title": " Use correct gray color code", + "url": "https://github.com/hapijs/lab/pull/883" + }, + { + "id": 378503724, + "labels": ["test"], + "number": 882, + "title": "Add missing coverage and remove unnecessary checks", + "url": "https://github.com/hapijs/lab/pull/882" + }, + { + "id": 376722829, + "labels": ["breaking changes"], + "number": 878, + "title": "Fix false-positive coverage of if statements (REDUCES REPORTED COVERAGE!)", + "url": "https://github.com/hapijs/lab/pull/878" + }, + { + "id": 355575171, + "labels": ["bug"], + "number": 855, + "title": "Update linter configuration?", + "url": "https://github.com/hapijs/lab/issues/855" + }, + { + "id": 353342955, + "labels": ["bug"], + "number": 852, + "title": "Console reporter: \"gray\" is actually light green", + "url": "https://github.com/hapijs/lab/issues/852" + }, + { + "id": 336702275, + "labels": ["bug"], + "number": 842, + "title": "Coverage fails for multiple conditionals on same line (logical operators)", + "url": "https://github.com/hapijs/lab/issues/842" + }, + { + "id": 274439781, + "labels": ["documentation"], + "number": 788, + "title": "Documentation on using --id", + "url": "https://github.com/hapijs/lab/issues/788" + }, + { + "id": 261145156, + "labels": ["lts"], + "number": 762, + "title": "Request to consolidate parsers", + "url": "https://github.com/hapijs/lab/issues/762" + }, + { + "id": 260357665, + "labels": ["bug", "test"], + "number": 758, + "title": "CLI failure test doesn't appear to test what it claims", + "url": "https://github.com/hapijs/lab/issues/758" + } + ], "number": 152, - "title": "Set env variable immediately in cli", - "url": "https://github.com/hapijs/lab/pull/152" - }, - { - "id": 40005337, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/152", + "version": "18.0.0" + }, + { + "date": "2018-11-05T15:17:31Z", + "id": 3792161, + "issues": [ + { + "id": 377032713, + "labels": ["feature"], + "number": 881, + "title": "Add coverage-pattern option", + "url": "https://github.com/hapijs/lab/pull/881" + }, + { + "id": 376998481, + "labels": ["non issue"], + "number": 880, + "title": "Remove engines", + "url": "https://github.com/hapijs/lab/issues/880" + }, + { + "id": 354360333, + "labels": ["feature"], + "number": 853, + "title": "Coverage being analized on the test file", + "url": "https://github.com/hapijs/lab/issues/853" + } + ], + "number": 153, + "url": "https://github.com/hapijs/lab/milestone/153", + "version": "17.3.0" + }, + { + "date": "2018-11-02T21:30:05Z", + "id": 3789019, + "issues": [ + { + "id": 376965969, + "labels": ["feature"], + "number": 879, + "title": "Check file pattern on coverage traversal", + "url": "https://github.com/hapijs/lab/pull/879" + }, + { + "id": 376631018, + "labels": ["feature"], + "number": 877, + "title": "Add --coverage-all option", + "url": "https://github.com/hapijs/lab/pull/877" + }, + { + "id": 232073949, + "labels": ["feature"], + "number": 710, + "title": "setting coverage-path doesn't include all code in path", + "url": "https://github.com/hapijs/lab/issues/710" + } + ], "number": 151, - "title": "Environment not set before require when using CLI", - "url": "https://github.com/hapijs/lab/issues/151" - }, - { - "id": 39989543, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/151", + "version": "17.2.0" + }, + { + "date": "2018-11-01T20:09:47Z", + "id": 3787396, + "issues": [ + { + "id": 376547926, + "labels": ["dependency"], + "number": 876, + "title": "Update dependencies", + "url": "https://github.com/hapijs/lab/pull/876" + }, + { + "id": 376544687, + "labels": ["non issue"], + "number": 875, + "title": "Revert console cov report truncation", + "url": "https://github.com/hapijs/lab/pull/875" + }, + { + "id": 375730097, + "labels": ["feature"], + "number": 871, + "title": "Improve console coverage report readability", + "url": "https://github.com/hapijs/lab/pull/871" + } + ], "number": 150, - "title": "Default to test environment", - "url": "https://github.com/hapijs/lab/pull/150" - }, - { - "id": 39963220, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/150", + "version": "17.1.0" + }, + { + "date": "2018-11-01T07:08:05Z", + "id": 3786521, + "issues": [ + { + "id": 376278628, + "labels": ["dependency"], + "number": 874, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/lab/issues/874" + } + ], "number": 149, - "title": "Changed session errors to script errors.", - "url": "https://github.com/hapijs/lab/pull/149" - }, - { - "id": 39941911, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/149", + "version": "17.0.4" + }, + { + "date": "2018-10-31T20:53:09Z", + "id": 3769405, + "issues": [ + { + "id": 376073214, + "labels": ["bug"], + "number": 873, + "title": "Fails to handle non-Error errors", + "url": "https://github.com/hapijs/lab/issues/873" + }, + { + "id": 374744353, + "labels": ["bug"], + "number": 870, + "title": "Update type definitions to match documented API", + "url": "https://github.com/hapijs/lab/pull/870" + } + ], "number": 148, - "title": "Environment set too late", - "url": "https://github.com/hapijs/lab/issues/148" - }, - { - "id": 39866655, - "labels": ["dependency"], + "url": "https://github.com/hapijs/lab/milestone/148", + "version": "17.0.3" + }, + { + "date": "2018-10-25T17:55:24Z", + "id": 3766142, + "issues": [ + { + "id": 374047602, + "labels": ["bug"], + "number": 869, + "title": "[ENHANCEMENT] Nullified test context on finish to prevent memory leaks", + "url": "https://github.com/hapijs/lab/pull/869" + }, + { + "id": 374003101, + "labels": ["bug"], + "number": 868, + "title": "Possible context memory leak?", + "url": "https://github.com/hapijs/lab/issues/868" + } + ], "number": 147, - "title": "Replace async with items", - "url": "https://github.com/hapijs/lab/pull/147" - }, - { - "id": 39866639, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/147", + "version": "17.0.2" + }, + { + "date": "2018-10-24T17:57:53Z", + "id": 3763162, + "issues": [ + { + "id": 373563999, + "labels": ["bug"], + "number": 867, + "title": "No longer skip scripts when multiple only", + "url": "https://github.com/hapijs/lab/pull/867" + } + ], "number": 146, - "title": "Reword session errors to test script errors", - "url": "https://github.com/hapijs/lab/issues/146" - }, - { - "id": 39864977, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/146", + "version": "17.0.1" + }, + { + "date": "2018-10-23T20:25:38Z", + "id": 3641717, + "issues": [ + { + "id": 373176218, + "labels": ["lts"], + "number": 866, + "title": "Add node 11 to travis", + "url": "https://github.com/hapijs/lab/pull/866" + }, + { + "id": 373173229, + "labels": ["lts"], + "number": 865, + "title": "handle queueMicrotask global added in Node 11", + "url": "https://github.com/hapijs/lab/pull/865" + }, + { + "id": 373163702, + "labels": ["feature", "breaking changes"], + "number": 864, + "title": "Add testsuites output to junit", + "url": "https://github.com/hapijs/lab/pull/864" + }, + { + "id": 373088519, + "labels": ["bug", "breaking changes", "dependency"], + "number": 863, + "title": "Upgrade source-map and support limited sourcemap descriptors", + "url": "https://github.com/hapijs/lab/pull/863" + }, + { + "id": 363310766, + "labels": ["bug"], + "number": 860, + "title": "Fixed skipped console output color", + "url": "https://github.com/hapijs/lab/pull/860" + }, + { + "id": 345553787, + "labels": ["feature", "breaking changes"], + "number": 846, + "title": "Only is no longer limited to 1 test", + "url": "https://github.com/hapijs/lab/pull/846" + }, + { + "id": 344974148, + "labels": ["bug"], + "number": 845, + "title": "junit report generated has both classname and the name as \"classname + ' ' + name\".", + "url": "https://github.com/hapijs/lab/issues/845" + }, + { + "id": 258271091, + "labels": ["bug"], + "number": 750, + "title": "html reporter errors when encountering sourcemap chunks with typescript", + "url": "https://github.com/hapijs/lab/issues/750" + } + ], "number": 145, - "title": "Replace use of async with items", - "url": "https://github.com/hapijs/lab/issues/145" - } - ], - "number": 17, - "url": "https://github.com/hapijs/lab/milestone/17", - "version": "4.0.2" - }, - { - "date": "2014-08-08T21:21:59Z", - "id": 746489, - "issues": [ - { - "id": 39861780, - "labels": ["test"], + "url": "https://github.com/hapijs/lab/milestone/145", + "version": "17.0.0" + }, + { + "date": "2018-09-10T21:02:09Z", + "id": 3588004, + "issues": [ + { + "id": 356335646, + "labels": ["lts"], + "number": 858, + "title": "Update ecmaversion in eslint", + "url": "https://github.com/hapijs/lab/pull/858" + }, + { + "id": 353337976, + "labels": ["feature"], + "number": 851, + "title": "Fix stack trace trimming", + "url": "https://github.com/hapijs/lab/pull/851" + }, + { + "id": 353285642, + "labels": ["documentation"], + "number": 850, + "title": "Document `paths` parameter in .labrc.js", + "url": "https://github.com/hapijs/lab/pull/850" + } + ], "number": 144, - "title": "Fixing issue with missing labCov reference", - "url": "https://github.com/hapijs/lab/pull/144" - }, - { - "id": 39776942, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/144", + "version": "16.1.0" + }, + { + "date": "2018-08-21T19:37:04Z", + "id": 3402431, + "issues": [ + { + "id": 352672715, + "labels": ["bug", "dependency"], + "number": 849, + "title": "Update to eslint v5", + "url": "https://github.com/hapijs/lab/pull/849" + }, + { + "id": 344450011, + "labels": ["bug", "breaking changes"], + "number": 844, + "title": "Disable dep timeout, which is doc default", + "url": "https://github.com/hapijs/lab/pull/844" + }, + { + "id": 344077040, + "labels": ["feature"], + "number": 843, + "title": "Allow custom handling for global errors/rejections", + "url": "https://github.com/hapijs/lab/pull/843" + }, + { + "id": 333817071, + "labels": ["breaking changes"], + "number": 840, + "title": "update eslint-config-hapi dependency", + "url": "https://github.com/hapijs/lab/pull/840" + }, + { + "id": 270175090, + "labels": ["feature"], + "number": 782, + "title": "Disable \"uncaughtException\" handler for tests", + "url": "https://github.com/hapijs/lab/issues/782" + }, + { + "id": 246292317, + "labels": ["bug"], + "number": 729, + "title": "-M, --context-timeout is ignored; test passed even it is not triggered", + "url": "https://github.com/hapijs/lab/issues/729" + } + ], "number": 143, - "title": "lab throws with ReferenceError: __$$labCov is not defined when run with coverage enabled and no code to cover", - "url": "https://github.com/hapijs/lab/issues/143" - }, - { - "id": 39767021, - "labels": [], + "url": "https://github.com/hapijs/lab/milestone/143", + "version": "16.0.0" + }, + { + "date": "2018-06-05T15:38:53Z", + "id": 3342034, + "issues": [ + { + "id": 328568401, + "labels": ["feature"], + "number": 838, + "title": "Support test context from befores", + "url": "https://github.com/hapijs/lab/pull/838" + }, + { + "id": 328555290, + "labels": ["feature"], + "number": 837, + "title": "Add BigInt globals", + "url": "https://github.com/hapijs/lab/pull/837" + }, + { + "id": 324178571, + "labels": ["feature"], + "number": 836, + "title": "Update coverage ECMA version to 9 (2018).", + "url": "https://github.com/hapijs/lab/pull/836" + } + ], + "number": 142, + "url": "https://github.com/hapijs/lab/milestone/142", + "version": "15.5.0" + }, + { + "date": "2018-05-13T14:53:07Z", + "id": 3326910, + "issues": [ + { + "id": 322599504, + "labels": ["bug"], + "number": 833, + "title": "Add WHATWG Encoding API globals", + "url": "https://github.com/hapijs/lab/pull/833" + } + ], "number": 141, - "title": "Add test for while coverage", - "url": "https://github.com/hapijs/lab/pull/141" - }, - { - "id": 39747186, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/141", + "version": "15.4.5" + }, + { + "date": "2018-05-07T18:35:21Z", + "id": 3325967, + "issues": [ + { + "id": 320906902, + "labels": ["bug"], + "number": 831, + "title": "Revert \"Wait for stdout to stop writing to exit\"", + "url": "https://github.com/hapijs/lab/pull/831" + } + ], "number": 140, - "title": "Default to null for colors on cli for using tty capabilities", - "url": "https://github.com/hapijs/lab/pull/140" - }, - { - "id": 39747142, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/140", + "version": "15.4.4" + }, + { + "date": "2018-05-07T15:09:19Z", + "id": 3325843, + "issues": [ + { + "id": 318614645, + "labels": ["bug"], + "number": 829, + "title": "Wait for stdout to stop writing to exit", + "url": "https://github.com/hapijs/lab/pull/829" + }, + { + "id": 310052692, + "labels": ["bug"], + "number": 824, + "title": "Calculate relative filename using node's path", + "url": "https://github.com/hapijs/lab/pull/824" + }, + { + "id": 310049654, + "labels": ["bug"], + "number": 823, + "title": "Transforming files does not work with yarn workspaces", + "url": "https://github.com/hapijs/lab/issues/823" + } + ], "number": 139, - "title": "CLI colors aren't defaulted to tty capabilities", - "url": "https://github.com/hapijs/lab/issues/139" - } - ], - "number": 15, - "url": "https://github.com/hapijs/lab/milestone/15", - "version": "4.0.1" - }, - { - "date": "2014-08-07T16:13:16Z", - "id": 663888, - "issues": [ - { - "id": 39658431, - "labels": ["breaking changes", "release notes"], + "url": "https://github.com/hapijs/lab/milestone/139", + "version": "15.4.3" + }, + { + "date": "2018-05-07T14:28:06Z", + "id": 3204223, + "issues": [ + { + "id": 320596196, + "labels": ["bug"], + "number": 830, + "title": "Fix coverage on transformed files. Fixes #826.", + "url": "https://github.com/hapijs/lab/pull/830" + } + ], "number": 138, - "title": "4.0.0 Release Notes", - "url": "https://github.com/hapijs/lab/issues/138" - }, - { - "id": 39654396, - "labels": ["documentation"], + "url": "https://github.com/hapijs/lab/milestone/138", + "version": "15.4.2" + }, + { + "date": "2018-03-20T18:14:16Z", + "id": 3180957, + "issues": [ + { + "id": 306970002, + "labels": ["dependency"], + "number": 821, + "title": "Update eslint", + "url": "https://github.com/hapijs/lab/pull/821" + }, + { + "id": 306890924, + "labels": ["bug"], + "number": 820, + "title": "Ignore default-plan-threshold for anything else than tests", + "url": "https://github.com/hapijs/lab/pull/820" + } + ], "number": 137, - "title": "Moving to authors file and adding my name", - "url": "https://github.com/hapijs/lab/pull/137" - }, - { - "id": 39649578, - "labels": ["feature"], - "number": 136, - "title": "Notebook updates", - "url": "https://github.com/hapijs/lab/pull/136" - }, - { - "id": 39641787, - "labels": ["test"], + "url": "https://github.com/hapijs/lab/milestone/137", + "version": "15.4.1" + }, + { + "date": "2018-03-12T16:05:57Z", + "id": 3172736, + "issues": [ + { + "id": 304342903, + "labels": ["feature"], + "number": 819, + "title": "Implement minimum assertions threshold. Closes #690.", + "url": "https://github.com/hapijs/lab/pull/819" + }, + { + "id": 214388590, + "labels": ["feature"], + "number": 690, + "title": "Allow to specify minimum number of executed assertions", + "url": "https://github.com/hapijs/lab/issues/690" + } + ], "number": 135, - "title": "Fix for paths with hyphens and increase timeout", - "url": "https://github.com/hapijs/lab/pull/135" - }, - { - "id": 39565637, - "labels": ["test"], + "url": "https://github.com/hapijs/lab/milestone/135", + "version": "15.4.0" + }, + { + "date": "2018-03-08T21:31:40Z", + "id": 3144715, + "issues": [ + { + "id": 303014576, + "labels": ["security", "dependency"], + "number": 816, + "title": "Bump diff to 3.5", + "url": "https://github.com/hapijs/lab/pull/816" + } + ], + "number": 134, + "url": "https://github.com/hapijs/lab/milestone/134", + "version": "15.3.1" + }, + { + "date": "2018-02-26T17:45:39Z", + "id": 3103352, + "issues": [ + { + "id": 300330902, + "labels": ["dependency"], + "number": 815, + "title": "Update eslint dep", + "url": "https://github.com/hapijs/lab/pull/815" + }, + { + "id": 299389009, + "labels": ["bug"], + "number": 813, + "title": "Fail test if a falsy value is thrown by the test", + "url": "https://github.com/hapijs/lab/pull/813" + }, + { + "id": 299341766, + "labels": ["bug"], + "number": 812, + "title": "awaiting a rejected promise can still pass test", + "url": "https://github.com/hapijs/lab/issues/812" + }, + { + "id": 296553572, + "labels": ["feature"], + "number": 811, + "title": "Can exclude files from coverage", + "url": "https://github.com/hapijs/lab/pull/811" + } + ], "number": 133, - "title": "Cli tests", - "url": "https://github.com/hapijs/lab/pull/133" - }, - { - "id": 39380767, - "labels": ["documentation"], + "url": "https://github.com/hapijs/lab/milestone/133", + "version": "15.3.0" + }, + { + "date": "2018-02-09T17:40:15Z", + "id": 3075580, + "issues": [ + { + "id": 295939208, + "labels": ["bug"], + "number": 810, + "title": "Write CLI errors to stderr", + "url": "https://github.com/hapijs/lab/pull/810" + }, + { + "id": 295927472, + "labels": ["dependency"], + "number": 809, + "title": "Update eslint version", + "url": "https://github.com/hapijs/lab/pull/809" + }, + { + "id": 295808036, + "labels": ["lts"], + "number": 808, + "title": "add URL and URLSearchParams to global variables", + "url": "https://github.com/hapijs/lab/pull/808" + }, + { + "id": 93918006, + "labels": ["bug"], + "number": 399, + "title": "Missing exports.lab causes error when generating html coverage report ", + "url": "https://github.com/hapijs/lab/issues/399" + } + ], "number": 132, - "title": "Update readme to reflect all the latest cli options", - "url": "https://github.com/hapijs/lab/issues/132" - }, - { - "id": 39319190, - "labels": ["test"], - "number": 130, - "title": "Add lib/cli.js to coverage tests", - "url": "https://github.com/hapijs/lab/issues/130" - }, - { - "id": 39319162, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/132", + "version": "15.2.2" + }, + { + "date": "2018-01-30T17:29:41Z", + "id": 3023445, + "issues": [ + { + "id": 292855071, + "labels": ["bug"], + "number": 807, + "title": "Report correct exit code with multiple reporters", + "url": "https://github.com/hapijs/lab/pull/807" + }, + { + "id": 292477233, + "labels": ["test"], + "number": 806, + "title": "Add multiple reporter tests", + "url": "https://github.com/hapijs/lab/pull/806" + }, + { + "id": 292454692, + "labels": ["dependency"], + "number": 805, + "title": "Update eslint version", + "url": "https://github.com/hapijs/lab/pull/805" + }, + { + "id": 291894481, + "labels": ["bug"], + "number": 804, + "title": "Using multiple reporters results into wrong exit code if test fails", + "url": "https://github.com/hapijs/lab/issues/804" + } + ], + "number": 131, + "url": "https://github.com/hapijs/lab/milestone/131", + "version": "15.2.1" + }, + { + "date": "2018-01-09T16:45:24Z", + "id": 2882205, + "issues": [ + { + "id": 287152838, + "labels": ["dependency"], + "number": 803, + "title": "Update eslint", + "url": "https://github.com/hapijs/lab/pull/803" + }, + { + "id": 286877687, + "labels": ["feature"], + "number": 802, + "title": "Support object rest/spread under eslint", + "url": "https://github.com/hapijs/lab/pull/802" + }, + { + "id": 286162374, + "labels": ["documentation"], + "number": 801, + "title": "update to use expect from code", + "url": "https://github.com/hapijs/lab/pull/801" + }, + { + "id": 280751501, + "labels": ["lts"], + "number": 797, + "title": "Update TypeScript typings", + "url": "https://github.com/hapijs/lab/pull/797" + }, + { + "id": 278810397, + "labels": ["documentation"], + "number": 794, + "title": "Fix usage example of flags.onCleanup", + "url": "https://github.com/hapijs/lab/pull/794" + }, + { + "id": 277537147, + "labels": ["bug"], + "number": 793, + "title": "Added index.d.ts to npmignore", + "url": "https://github.com/hapijs/lab/pull/793" + }, + { + "id": 272344090, + "labels": ["feature"], + "number": 786, + "title": "Add mustCall feature", + "url": "https://github.com/hapijs/lab/pull/786" + }, + { + "id": 271201654, + "labels": ["documentation"], + "number": 784, + "title": "Updated readme to include alias of ignore", + "url": "https://github.com/hapijs/lab/pull/784" + }, + { + "id": 176684579, + "labels": ["documentation"], + "number": 641, + "title": "ignore setting not supported in .labrc.js", + "url": "https://github.com/hapijs/lab/issues/641" + } + ], "number": 129, - "title": "Expose notebook.errors in console reporter", - "url": "https://github.com/hapijs/lab/issues/129" - }, - { - "id": 39253065, - "labels": ["feature", "breaking changes", "test"], + "url": "https://github.com/hapijs/lab/milestone/129", + "version": "15.2.0" + }, + { + "date": "2017-11-01T23:56:07Z", + "id": 2873176, + "issues": [ + { + "id": 270483247, + "labels": ["bug"], + "number": 783, + "title": "Fix for node 9", + "url": "https://github.com/hapijs/lab/pull/783" + }, + { + "id": 269663411, + "labels": ["documentation"], + "number": 779, + "title": "Remove outdated assert statements", + "url": "https://github.com/hapijs/lab/pull/779" + }, + { + "id": 269546864, + "labels": ["documentation"], + "number": 778, + "title": "assertion library \"code\" is not set by default / documentation is wrong", + "url": "https://github.com/hapijs/lab/issues/778" + }, + { + "id": 258202742, + "labels": ["bug"], + "number": 748, + "title": "New globals are coming", + "url": "https://github.com/hapijs/lab/issues/748" + } + ], "number": 128, - "title": "Refactor to test lab with lab", - "url": "https://github.com/hapijs/lab/pull/128" - }, - { - "id": 38908814, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/128", + "version": "15.1.2" + }, + { + "date": "2017-10-30T01:28:09Z", + "id": 2872014, + "issues": [ + { + "id": 269371718, + "labels": ["bug"], + "number": 776, + "title": "Fix test script error duplicates", + "url": "https://github.com/hapijs/lab/pull/776" + } + ], + "number": 127, + "url": "https://github.com/hapijs/lab/milestone/127", + "version": "15.1.1" + }, + { + "date": "2017-10-29T05:05:39Z", + "id": 2860487, + "issues": [ + { + "id": 268467280, + "labels": ["dependency"], + "number": 774, + "title": "Update eslint", + "url": "https://github.com/hapijs/lab/pull/774" + }, + { + "id": 268065885, + "labels": ["bug"], + "number": 772, + "title": "Remove code as default assertion library. Resolves #771", + "url": "https://github.com/hapijs/lab/pull/772" + }, + { + "id": 267871574, + "labels": ["feature"], + "number": 769, + "title": "Display parser errors when requiring scripts", + "url": "https://github.com/hapijs/lab/pull/769" + }, + { + "id": 267851826, + "labels": ["documentation"], + "number": 768, + "title": "Update README.md", + "url": "https://github.com/hapijs/lab/pull/768" + } + ], "number": 126, - "title": "Checking leaks on non-enumerable properties", - "url": "https://github.com/hapijs/lab/pull/126" - }, - { - "id": 38536508, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/lab/milestone/126", + "version": "15.1.0" + }, + { + "date": "2017-10-23T20:17:40Z", + "id": 2833407, + "issues": [ + { + "id": 268057402, + "labels": ["breaking changes", "release notes"], + "number": 770, + "title": "15.0.0 Release Notes", + "url": "https://github.com/hapijs/lab/issues/770" + }, + { + "id": 265011154, + "labels": ["breaking changes"], + "number": 766, + "title": "Remove domains and callbacks", + "url": "https://github.com/hapijs/lab/pull/766" + }, + { + "id": 263324379, + "labels": ["feature", "breaking changes"], + "number": 765, + "title": "Use of onCleanup() when test returns a promise", + "url": "https://github.com/hapijs/lab/issues/765" + }, + { + "id": 258310982, + "labels": ["breaking changes"], + "number": 752, + "title": "Remove domains in favor of try/catch on async/await", + "url": "https://github.com/hapijs/lab/issues/752" + } + ], + "number": 125, + "url": "https://github.com/hapijs/lab/milestone/125", + "version": "15.0.0" + }, + { + "date": "2018-03-08T21:34:51Z", + "id": 2940549, + "issues": [ + { + "id": 303045253, + "labels": ["dependency"], + "number": 817, + "title": "Bump diff to 3.5 (v14.x.x)", + "url": "https://github.com/hapijs/lab/pull/817" + } + ], + "number": 130, + "url": "https://github.com/hapijs/lab/milestone/130", + "version": "14.3.3" + }, + { + "date": "2017-10-23T20:17:39Z", + "id": 2786923, + "issues": [ + { + "id": 276941893, + "labels": ["bug"], + "number": 792, + "title": "Fix for node 9", + "url": "https://github.com/hapijs/lab/pull/792" + }, + { + "id": 261722291, + "labels": ["dependency"], + "number": 763, + "title": "Update deps: eslint, source-map", + "url": "https://github.com/hapijs/lab/pull/763" + }, + { + "id": 260365080, + "labels": ["bug"], + "number": 760, + "title": "Helpful message when path not found", + "url": "https://github.com/hapijs/lab/pull/760" + }, + { + "id": 260363235, + "labels": ["bug"], + "number": 759, + "title": "More helpful message when test path not found", + "url": "https://github.com/hapijs/lab/issues/759" + } + ], "number": 124, - "title": "4.0 Breaking Change", - "url": "https://github.com/hapijs/lab/issues/124" - }, - { - "id": 38373989, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/124", + "version": "14.3.2" + }, + { + "date": "2017-09-23T14:24:05Z", + "id": 2770611, + "issues": [ + { + "id": 260001470, + "labels": ["bug"], + "number": 755, + "title": "Fix RangeError for --id when skipping a large number of tests", + "url": "https://github.com/hapijs/lab/pull/755" + } + ], "number": 123, - "title": "Add new ES6 types to knownGlobals", - "url": "https://github.com/hapijs/lab/issues/123" - }, - { - "id": 38025716, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/123", + "version": "14.3.1" + }, + { + "date": "2017-09-16T04:01:12Z", + "id": 2736260, + "issues": [ + { + "id": 258205449, + "labels": ["feature"], + "number": 749, + "title": "update eslint parser version to 8", + "url": "https://github.com/hapijs/lab/pull/749" + }, + { + "id": 256227114, + "labels": ["documentation"], + "number": 746, + "title": "#647 add example of multiple reporters in .labrc.js", + "url": "https://github.com/hapijs/lab/pull/746" + } + ], + "number": 122, + "url": "https://github.com/hapijs/lab/milestone/122", + "version": "14.3.0" + }, + { + "date": "2017-08-31T15:59:07Z", + "id": 2724088, + "issues": [ + { + "id": 254382668, + "labels": ["dependency"], + "number": 745, + "title": "Update deps: eslint/supports-color", + "url": "https://github.com/hapijs/lab/pull/745" + }, + { + "id": 254357714, + "labels": ["bug"], + "number": 744, + "title": "Better color detection", + "url": "https://github.com/hapijs/lab/pull/744" + } + ], + "number": 121, + "url": "https://github.com/hapijs/lab/milestone/121", + "version": "14.2.2" + }, + { + "date": "2017-08-25T21:16:09Z", + "id": 2702556, + "issues": [ + { + "id": 253018824, + "labels": ["documentation"], + "number": 743, + "title": "Document verbosity value", + "url": "https://github.com/hapijs/lab/pull/743" + }, + { + "id": 253015719, + "labels": ["documentation"], + "number": 742, + "title": "Fix readme linting issues", + "url": "https://github.com/hapijs/lab/pull/742" + }, + { + "id": 252976730, + "labels": ["bug"], + "number": 740, + "title": "add object spread option", + "url": "https://github.com/hapijs/lab/pull/740" + }, + { + "id": 252974949, + "labels": ["bug"], + "number": 739, + "title": "Coverage is broken when using object spread operator", + "url": "https://github.com/hapijs/lab/issues/739" + }, + { + "id": 251367522, + "labels": ["support", "documentation"], + "number": 737, + "title": "Please add an explanation of verbosity; what does 'verbosity: 3.00' mean?", + "url": "https://github.com/hapijs/lab/issues/737" + } + ], + "number": 120, + "url": "https://github.com/hapijs/lab/milestone/120", + "version": "14.2.1" + }, + { + "date": "2017-08-15T14:02:20Z", + "id": 2697170, + "issues": [ + { + "id": 250186966, + "labels": ["lts"], + "number": 735, + "title": "Document definition file", + "url": "https://github.com/hapijs/lab/pull/735" + }, + { + "id": 249897280, + "labels": ["feature"], + "number": 734, + "title": "Add TypeScript definition file", + "url": "https://github.com/hapijs/lab/pull/734" + }, + { + "id": 247753017, + "labels": ["feature"], + "number": 731, + "title": "Typescript support", + "url": "https://github.com/hapijs/lab/issues/731" + } + ], + "number": 119, + "url": "https://github.com/hapijs/lab/milestone/119", + "version": "14.2.0" + }, + { + "date": "2017-08-11T20:11:29Z", + "id": 2638921, + "issues": [ + { + "id": 249735086, + "labels": ["dependency"], + "number": 733, + "title": "Update dependencies: eslint, espree", + "url": "https://github.com/hapijs/lab/pull/733" + }, + { + "id": 249729319, + "labels": ["bug"], + "number": 732, + "title": "Be explicit about errors thrown in before/afters", + "url": "https://github.com/hapijs/lab/pull/732" + }, + { + "id": 245440880, + "labels": ["bug"], + "number": 728, + "title": "Help: Multiple callbacks error with mongo AND lab.before", + "url": "https://github.com/hapijs/lab/issues/728" + } + ], + "number": 118, + "url": "https://github.com/hapijs/lab/milestone/118", + "version": "14.1.2" + }, + { + "date": "2017-07-13T11:23:53Z", + "id": 2601804, + "issues": [ + { + "id": 242667588, + "labels": ["test"], + "number": 727, + "title": "Fix failing test", + "url": "https://github.com/hapijs/lab/pull/727" + }, + { + "id": 242315128, + "labels": ["bug"], + "number": 726, + "title": "Fix npm 5.2 error", + "url": "https://github.com/hapijs/lab/pull/726" + } + ], "number": 117, - "title": "\"Infinite\" Timeout", - "url": "https://github.com/hapijs/lab/issues/117" - }, - { - "id": 37936349, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/117", + "version": "14.1.1" + }, + { + "date": "2017-06-24T01:09:51Z", + "id": 2581545, + "issues": [ + { + "id": 238273195, + "labels": ["feature"], + "number": 722, + "title": "Expose Code features directly on script", + "url": "https://github.com/hapijs/lab/pull/722" + }, + { + "id": 237072019, + "labels": ["bug"], + "number": 721, + "title": "Failed befores properly fail related tests", + "url": "https://github.com/hapijs/lab/pull/721" + }, + { + "id": 87055283, + "labels": ["bug"], + "number": 370, + "title": "Fail conditions documentation is unclear", + "url": "https://github.com/hapijs/lab/issues/370" + } + ], "number": 116, - "title": "Add describe.skip/only and it.skip/only", - "url": "https://github.com/hapijs/lab/pull/116" - }, - { - "id": 37401956, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/116", + "version": "14.1.0" + }, + { + "date": "2017-06-13T22:27:23Z", + "id": 2581424, + "issues": [ + { + "id": 235708927, + "labels": ["bug"], + "number": 720, + "title": "Support eslint 4 ignore path", + "url": "https://github.com/hapijs/lab/pull/720" + } + ], + "number": 115, + "url": "https://github.com/hapijs/lab/milestone/115", + "version": "14.0.1" + }, + { + "date": "2017-06-13T20:49:06Z", + "id": 2525188, + "issues": [ + { + "id": 235687024, + "labels": ["breaking changes", "release notes"], + "number": 719, + "title": "14.0.0 Release Notes", + "url": "https://github.com/hapijs/lab/issues/719" + }, + { + "id": 235621814, + "labels": ["bug", "breaking changes"], + "number": 718, + "title": "Error on tests with both promise and callback", + "url": "https://github.com/hapijs/lab/pull/718" + }, + { + "id": 235600505, + "labels": ["breaking changes", "dependency"], + "number": 717, + "title": "Update eslint/code versions", + "url": "https://github.com/hapijs/lab/pull/717" + }, + { + "id": 235429623, + "labels": ["breaking changes", "dependency"], + "number": 715, + "title": "Upgrade to ESLint v4", + "url": "https://github.com/hapijs/lab/issues/715" + }, + { + "id": 232430144, + "labels": ["feature", "breaking changes"], + "number": 713, + "title": "Bundle code as default assertion library", + "url": "https://github.com/hapijs/lab/pull/713" + }, + { + "id": 232424259, + "labels": ["feature", "breaking changes"], + "number": 712, + "title": "Include code assertion library", + "url": "https://github.com/hapijs/lab/issues/712" + }, + { + "id": 154633360, + "labels": ["bug", "breaking changes"], + "number": 580, + "title": "Confusing warning when mixing Promise and callback style", + "url": "https://github.com/hapijs/lab/issues/580" + } + ], + "number": 114, + "url": "https://github.com/hapijs/lab/milestone/114", + "version": "14.0.0" + }, + { + "date": "2017-05-16T20:02:52Z", + "id": 2491802, + "issues": [ + { + "id": 229148260, + "labels": ["dependency"], + "number": 707, + "title": "Update espree version", + "url": "https://github.com/hapijs/lab/pull/707" + }, + { + "id": 229146376, + "labels": ["dependency"], + "number": 706, + "title": "upgrade eslint to 3.19.x", + "url": "https://github.com/hapijs/lab/pull/706" + }, + { + "id": 228838079, + "labels": ["dependency"], + "number": 705, + "title": "Error when doing code coverage: \"ecmaVersion must be 3, 5, 6, or 7.\"", + "url": "https://github.com/hapijs/lab/issues/705" + }, + { + "id": 227158508, + "labels": ["feature"], + "number": 704, + "title": "Add WebAssembly to allowed globals", + "url": "https://github.com/hapijs/lab/pull/704" + }, + { + "id": 221119919, + "labels": ["feature"], + "number": 697, + "title": "Node 8 will add `WebAssembly` global", + "url": "https://github.com/hapijs/lab/issues/697" + } + ], "number": 113, - "title": "Repeat failure count at end of errors listing.", - "url": "https://github.com/hapijs/lab/pull/113" - }, - { - "id": 36943098, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/113", + "version": "13.1.0" + }, + { + "date": "2017-05-01T15:09:15Z", + "id": 2489806, + "issues": [ + { + "id": 225399880, + "labels": ["bug"], + "number": 701, + "title": "Ignore while a promise returns inside a test with a value. Only watch for rejection", + "url": "https://github.com/hapijs/lab/pull/701" + }, + { + "id": 225397446, + "labels": ["bug"], + "number": 700, + "title": "Promises that return values now error on finished", + "url": "https://github.com/hapijs/lab/issues/700" + } + ], + "number": 112, + "url": "https://github.com/hapijs/lab/milestone/112", + "version": "13.0.4" + }, + { + "date": "2017-04-29T16:30:45Z", + "id": 2455727, + "issues": [ + { + "id": 225267509, + "labels": ["bug"], + "number": 699, + "title": "Fix a domain leak and onCleanup failures", + "url": "https://github.com/hapijs/lab/pull/699" + } + ], + "number": 111, + "url": "https://github.com/hapijs/lab/milestone/111", + "version": "13.0.3" + }, + { + "date": "2017-04-13T15:59:55Z", + "id": 2379927, + "issues": [ + { + "id": 221589491, + "labels": ["bug"], + "number": 698, + "title": "Improve bail strategy not to execute next befores/afters", + "url": "https://github.com/hapijs/lab/pull/698" + }, + { + "id": 219250158, + "labels": ["documentation"], + "number": 696, + "title": "Extending linting", + "url": "https://github.com/hapijs/lab/issues/696" + }, + { + "id": 215162595, + "labels": ["documentation"], + "number": 693, + "title": "plan and Lab.assertions not working", + "url": "https://github.com/hapijs/lab/issues/693" + }, + { + "id": 214227039, + "labels": ["test"], + "number": 689, + "title": "Fix test", + "url": "https://github.com/hapijs/lab/pull/689" + }, + { + "id": 214109810, + "labels": ["test"], + "number": 688, + "title": "Add failing test for conditional value", + "url": "https://github.com/hapijs/lab/pull/688" + } + ], "number": 110, - "title": "Lab.test.only and Lab.test.skip", - "url": "https://github.com/hapijs/lab/issues/110" - }, - { - "id": 36632812, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/110", + "version": "13.0.2" + }, + { + "date": "2017-03-12T01:29:34Z", + "id": 2379649, + "issues": [ + { + "id": 213573276, + "labels": ["bug"], + "number": 686, + "title": "Fix coverage of zero-comment scripts", + "url": "https://github.com/hapijs/lab/pull/686" + }, + { + "id": 213553237, + "labels": ["bug"], + "number": 685, + "title": "TypeError: Reduce of empty array with no initial value", + "url": "https://github.com/hapijs/lab/issues/685" + } + ], + "number": 109, + "url": "https://github.com/hapijs/lab/milestone/109", + "version": "13.0.1" + }, + { + "date": "2017-03-11T18:25:11Z", + "id": 2281370, + "issues": [ + { + "id": 213548534, + "labels": ["breaking changes", "release notes"], + "number": 684, + "title": "13.0.0 Release Notes", + "url": "https://github.com/hapijs/lab/issues/684" + }, + { + "id": 213546841, + "labels": ["dependency", "lts"], + "number": 683, + "title": "Minor cleanup", + "url": "https://github.com/hapijs/lab/pull/683" + }, + { + "id": 211956905, + "labels": ["bug"], + "number": 681, + "title": "Reduce leaked memory via domains and timers", + "url": "https://github.com/hapijs/lab/pull/681" + }, + { + "id": 209632663, + "labels": ["dependency"], + "number": 677, + "title": "Update eslint version", + "url": "https://github.com/hapijs/lab/pull/677" + }, + { + "id": 180940443, + "labels": ["feature", "breaking changes"], + "number": 648, + "title": "Original files in HTML reporter", + "url": "https://github.com/hapijs/lab/pull/648" + }, + { + "id": 163328727, + "labels": ["bug"], + "number": 614, + "title": "Test coverage shows untransformed output", + "url": "https://github.com/hapijs/lab/issues/614" + } + ], "number": 108, - "title": "Adding coverage tests skew the line-numbers in stack statements.", - "url": "https://github.com/hapijs/lab/issues/108" - }, - { - "id": 36546413, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/108", + "version": "13.0.0" + }, + { + "date": "2017-01-27T02:02:49Z", + "id": 2266256, + "issues": [ + { + "id": 202340870, + "labels": ["feature"], + "number": 674, + "title": "Typos and inspect supports port", + "url": "https://github.com/hapijs/lab/pull/674" + }, + { + "id": 202142016, + "labels": ["feature"], + "number": 673, + "title": "Add support for Node.js and WebStorm debuggers", + "url": "https://github.com/hapijs/lab/pull/673" + }, + { + "id": 184359773, + "labels": ["feature"], + "number": 651, + "title": "Implement --inspect so debugging inside a test is possible?", + "url": "https://github.com/hapijs/lab/issues/651" + } + ], "number": 107, - "title": "Lab doesn't show the assertion message when an assertion fails", - "url": "https://github.com/hapijs/lab/issues/107" - }, - { - "id": 35528598, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/107", + "version": "12.1.0" + }, + { + "date": "2017-01-20T05:09:12Z", + "id": 2247674, + "issues": [ + { + "id": 202051882, + "labels": ["breaking changes", "release notes"], + "number": 672, + "title": "12.0.0 Release Notes", + "url": "https://github.com/hapijs/lab/issues/672" + }, + { + "id": 201176805, + "labels": ["feature"], + "number": 671, + "title": "Add --bail support", + "url": "https://github.com/hapijs/lab/pull/671" + }, + { + "id": 200997489, + "labels": ["feature", "breaking changes"], + "number": 670, + "title": "upgrade espree parser to use ECMAScript latest 8", + "url": "https://github.com/hapijs/lab/pull/670" + }, + { + "id": 200849089, + "labels": ["feature", "breaking changes"], + "number": 668, + "title": ".labrc.js with --harmony options execute failed", + "url": "https://github.com/hapijs/lab/issues/668" + }, + { + "id": 176481833, + "labels": ["bug"], + "number": 640, + "title": "cli `--help` command showing incorrect commands", + "url": "https://github.com/hapijs/lab/issues/640" + }, + { + "id": 43270778, + "labels": ["feature"], + "number": 214, + "title": "Stop Tests On First Failure", + "url": "https://github.com/hapijs/lab/issues/214" + } + ], + "number": 106, + "url": "https://github.com/hapijs/lab/milestone/106", + "version": "12.0.0" + }, + { + "date": "2017-01-12T15:40:16Z", + "id": 2129829, + "issues": [ + { + "id": 200398261, + "labels": ["dependency"], + "number": 666, + "title": "Update eslint", + "url": "https://github.com/hapijs/lab/pull/666" + }, + { + "id": 200268535, + "labels": ["test"], + "number": 665, + "title": "Fix test and deprecation warning", + "url": "https://github.com/hapijs/lab/pull/665" + }, + { + "id": 198281065, + "labels": ["dependency"], + "number": 664, + "title": "Update eslint version", + "url": "https://github.com/hapijs/lab/pull/664" + } + ], + "number": 105, + "url": "https://github.com/hapijs/lab/milestone/105", + "version": "11.2.2" + }, + { + "date": "2016-11-11T17:13:36Z", + "id": 2120029, + "issues": [ + { + "id": 188768263, + "labels": ["bug"], + "number": 662, + "title": "fix: don't show seed when shuffle was not enabled", + "url": "https://github.com/hapijs/lab/pull/662" + } + ], "number": 104, - "title": "Display Test duration once completed (even with errors)", - "url": "https://github.com/hapijs/lab/pull/104" - }, - { - "id": 34608812, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/104", + "version": "11.2.1" + }, + { + "date": "2016-11-07T19:39:10Z", + "id": 2029596, + "issues": [ + { + "id": 187802139, + "labels": ["dependency"], + "number": 659, + "title": "Node 7, update deps", + "url": "https://github.com/hapijs/lab/pull/659" + }, + { + "id": 187242713, + "labels": ["feature"], + "number": 658, + "title": "Added a flag (-R, --rejections) to make the test fail if an unhandled Promise rejection happened during its execution", + "url": "https://github.com/hapijs/lab/pull/658" + }, + { + "id": 187170158, + "labels": ["feature"], + "number": 657, + "title": "feat: allow to set the seed for --shuffle with --seed.", + "url": "https://github.com/hapijs/lab/pull/657" + }, + { + "id": 187129473, + "labels": ["feature"], + "number": 656, + "title": "when tests fail with `--shuffle`, how to run tests in the failing order?", + "url": "https://github.com/hapijs/lab/issues/656" + }, + { + "id": 186828504, + "labels": ["dependency"], + "number": 654, + "title": "Update eslint to 3.9.x", + "url": "https://github.com/hapijs/lab/pull/654" + }, + { + "id": 185531905, + "labels": ["bug"], + "number": 653, + "title": "fixes logic for lab.before timeout #652", + "url": "https://github.com/hapijs/lab/pull/653" + }, + { + "id": 184476576, + "labels": ["bug"], + "number": 652, + "title": "disable lab before timeout", + "url": "https://github.com/hapijs/lab/issues/652" + }, + { + "id": 183988243, + "labels": ["feature"], + "number": 649, + "title": "Make the test fail on a Promise unhandled rejection", + "url": "https://github.com/hapijs/lab/issues/649" + } + ], "number": 103, - "title": "tests should fail if before etc call back with an error or crash", - "url": "https://github.com/hapijs/lab/issues/103" - }, - { - "id": 34177983, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/103", + "version": "11.2.0" + }, + { + "date": "2016-09-26T18:05:34Z", + "id": 1953874, + "issues": [ + { + "id": 179295149, + "labels": ["feature", "dependency"], + "number": 646, + "title": "Update deps: eslint, diff", + "url": "https://github.com/hapijs/lab/pull/646" + }, + { + "id": 178943275, + "labels": ["dependency"], + "number": 645, + "title": "Update eslint", + "url": "https://github.com/hapijs/lab/pull/645" + }, + { + "id": 178502074, + "labels": ["bug"], + "number": 644, + "title": "fixing invalid markup on filter checkboxes", + "url": "https://github.com/hapijs/lab/pull/644" + }, + { + "id": 177616742, + "labels": ["documentation"], + "number": 643, + "title": "Docs: Fix URL in CONTRIBUTING.md", + "url": "https://github.com/hapijs/lab/pull/643" + }, + { + "id": 176169691, + "labels": ["documentation"], + "number": 639, + "title": "Docs: Added documentation for the assert argument", + "url": "https://github.com/hapijs/lab/pull/639" + }, + { + "id": 175296621, + "labels": ["documentation"], + "number": 634, + "title": "The `assert` command line flag should be properly documented", + "url": "https://github.com/hapijs/lab/issues/634" + } + ], + "number": 102, + "url": "https://github.com/hapijs/lab/milestone/102", + "version": "11.1.0" + }, + { + "date": "2016-08-21T22:29:43Z", + "id": 1942789, + "issues": [ + { + "id": 172344998, + "labels": ["bug"], + "number": 630, + "title": "Disable debug mode by default", + "url": "https://github.com/hapijs/lab/pull/630" + }, + { + "id": 172334532, + "labels": ["bug"], + "number": 629, + "title": "Failed tests reported twice", + "url": "https://github.com/hapijs/lab/issues/629" + } + ], + "number": 101, + "url": "https://github.com/hapijs/lab/milestone/101", + "version": "11.0.1" + }, + { + "date": "2016-08-15T16:14:58Z", + "id": 1875731, + "issues": [ + { + "id": 171202897, + "labels": ["breaking changes", "release notes"], + "number": 624, + "title": "11.0.0 Release Notes", + "url": "https://github.com/hapijs/lab/issues/624" + }, + { + "id": 171078718, + "labels": ["bug"], + "number": 622, + "title": "Test entire node range before bypassing", + "url": "https://github.com/hapijs/lab/pull/622" + }, + { + "id": 171075938, + "labels": ["dependency"], + "number": 621, + "title": "Update eslint dep", + "url": "https://github.com/hapijs/lab/pull/621" + }, + { + "id": 170987855, + "labels": ["bug"], + "number": 620, + "title": "Ensure we're not bypassing loc that should be covered", + "url": "https://github.com/hapijs/lab/pull/620" + }, + { + "id": 170788789, + "labels": ["breaking changes", "dependency"], + "number": 619, + "title": "update to eslint-config-hapi@10.x.x", + "url": "https://github.com/hapijs/lab/pull/619" + }, + { + "id": 109237200, + "labels": ["bug"], + "number": 459, + "title": "`/* `$lab:coverage:(off|on)$` */` disables coverage for a whole module", + "url": "https://github.com/hapijs/lab/issues/459" + } + ], "number": 100, - "title": "Fix #99: ignore custom globals in leak detection", - "url": "https://github.com/hapijs/lab/pull/100" - }, - { - "id": 33854299, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/100", + "version": "11.0.0" + }, + { + "date": "2016-07-11T12:57:08Z", + "id": 1827871, + "issues": [ + { + "id": 164828702, + "labels": ["feature"], + "number": 615, + "title": "Upgrade eslint to v3", + "url": "https://github.com/hapijs/lab/issues/615" + }, + { + "id": 162791787, + "labels": ["feature"], + "number": 613, + "title": "labrc.js can override all cli options", + "url": "https://github.com/hapijs/lab/pull/613" + }, + { + "id": 162189951, + "labels": ["dependency"], + "number": 611, + "title": "closes #610", + "url": "https://github.com/hapijs/lab/pull/611" + }, + { + "id": 162188334, + "labels": ["dependency"], + "number": 610, + "title": "Upgrade to eslint@2.13.x", + "url": "https://github.com/hapijs/lab/issues/610" + }, + { + "id": 162179625, + "labels": ["bug"], + "number": 609, + "title": "some options can't be configured with .labrc.js ", + "url": "https://github.com/hapijs/lab/issues/609" + } + ], + "number": 99, + "url": "https://github.com/hapijs/lab/milestone/99", + "version": "10.9.0" + }, + { + "date": "2016-06-14T23:58:31Z", + "id": 1824923, + "issues": [ + { + "id": 160309436, + "labels": ["bug"], + "number": 608, + "title": "Fix NODE_ENV not being set (fixes #606)", + "url": "https://github.com/hapijs/lab/pull/608" + }, + { + "id": 160291914, + "labels": ["bug"], + "number": 606, + "title": "NODE_ENV is no longer defaulting to 'test'", + "url": "https://github.com/hapijs/lab/issues/606" + } + ], "number": 98, - "title": "Add total missing lines to the coverage reporter", - "url": "https://github.com/hapijs/lab/issues/98" - }, - { - "id": 30335034, - "labels": ["test"], - "number": 60, - "title": "Add tests", - "url": "https://github.com/hapijs/lab/issues/60" - } - ], - "number": 13, - "url": "https://github.com/hapijs/lab/milestone/13", - "version": "4.0.0" - }, - { - "date": "2014-08-01T20:44:24Z", - "id": 740178, - "issues": [ - { - "id": 39324579, - "labels": ["documentation"], - "number": 131, - "title": "Rename spumko to hapijs", - "url": "https://github.com/hapijs/lab/issues/131" - } - ], - "number": 14, - "url": "https://github.com/hapijs/lab/milestone/14", - "version": "3.2.3" - }, - { - "date": "2014-05-20T00:18:00Z", - "id": 663885, - "issues": [], - "number": 12, - "url": "https://github.com/hapijs/lab/milestone/12", - "version": "3.2.1" - }, - { - "date": "2014-05-20T00:08:16Z", - "id": 663813, - "issues": [ - { - "id": 33697884, - "labels": ["test"], + "url": "https://github.com/hapijs/lab/milestone/98", + "version": "10.8.2" + }, + { + "date": "2016-06-14T02:22:14Z", + "id": 1824845, + "issues": [ + { + "id": 160081846, + "labels": ["bug"], + "number": 603, + "title": "Display a warning for failed patterns", + "url": "https://github.com/hapijs/lab/pull/603" + }, + { + "id": 126688752, + "labels": ["bug"], + "number": 511, + "title": "Show better error message when -P fails to find matching patterns", + "url": "https://github.com/hapijs/lab/issues/511" + } + ], + "number": 97, + "url": "https://github.com/hapijs/lab/milestone/97", + "version": "10.8.1" + }, + { + "date": "2016-06-14T01:33:36Z", + "id": 1788698, + "issues": [ + { + "id": 159062419, + "labels": ["feature"], + "number": 601, + "title": "Support .labrc.js for configuration", + "url": "https://github.com/hapijs/lab/pull/601" + }, + { + "id": 158507266, + "labels": ["bug"], + "number": 599, + "title": "Cleanup leak harmony checks", + "url": "https://github.com/hapijs/lab/pull/599" + }, + { + "id": 158485189, + "labels": ["feature"], + "number": 598, + "title": "Support .labrc files for configuration defaults", + "url": "https://github.com/hapijs/lab/issues/598" + } + ], "number": 96, - "title": "simplify package.json example", - "url": "https://github.com/hapijs/lab/pull/96" - }, - { - "id": 33486713, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/96", + "version": "10.8.0" + }, + { + "date": "2016-05-25T23:58:38Z", + "id": 1785532, + "issues": [ + { + "id": 156855960, + "labels": ["bug"], + "number": 597, + "title": "Add space after failed test x", + "url": "https://github.com/hapijs/lab/pull/597" + }, + { + "id": 156653870, + "labels": ["bug"], + "number": 596, + "title": "Adjust gray to comply with solarized dark theme", + "url": "https://github.com/hapijs/lab/pull/596" + } + ], + "number": 95, + "url": "https://github.com/hapijs/lab/milestone/95", + "version": "10.7.1" + }, + { + "date": "2016-05-24T18:30:55Z", + "id": 1780005, + "issues": [ + { + "id": 156576621, + "labels": ["dependency"], + "number": 595, + "title": "Update eslint to v2.10.x", + "url": "https://github.com/hapijs/lab/pull/595" + }, + { + "id": 156574444, + "labels": ["feature"], + "number": 594, + "title": "Cleanup lint-fix setting", + "url": "https://github.com/hapijs/lab/pull/594" + }, + { + "id": 156413640, + "labels": ["feature"], + "number": 593, + "title": "Support ability to add notes to a test", + "url": "https://github.com/hapijs/lab/pull/593" + }, + { + "id": 156317151, + "labels": ["feature"], + "number": 591, + "title": "Add --lint-fix option.", + "url": "https://github.com/hapijs/lab/pull/591" + }, + { + "id": 94780799, + "labels": ["feature"], + "number": 402, + "title": "Add ability to attach notes to test results", + "url": "https://github.com/hapijs/lab/issues/402" + } + ], "number": 94, - "title": "Add chai optional message to output", - "url": "https://github.com/hapijs/lab/pull/94" - }, - { - "id": 32851227, - "labels": ["feature"], - "number": 90, - "title": "Allow ability to execute specific subset of tests", - "url": "https://github.com/hapijs/lab/issues/90" - } - ], - "number": 11, - "url": "https://github.com/hapijs/lab/milestone/11", - "version": "3.2.0" - }, - { - "date": "2014-05-19T22:08:21Z", - "id": 646150, - "issues": [ - { - "id": 33231954, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/94", + "version": "10.7.0" + }, + { + "date": "2016-05-21T02:53:04Z", + "id": 1775323, + "issues": [ + { + "id": 156079934, + "labels": ["dependency"], + "number": 589, + "title": "Update to code v3", + "url": "https://github.com/hapijs/lab/pull/589" + }, + { + "id": 155641061, + "labels": ["bug"], + "number": 588, + "title": "Make coverage excludes more explicit", + "url": "https://github.com/hapijs/lab/pull/588" + }, + { + "id": 155637470, + "labels": ["bug"], + "number": 587, + "title": "Support the same test name in diff experiments", + "url": "https://github.com/hapijs/lab/pull/587" + }, + { + "id": 109679735, + "labels": ["bug"], + "number": 461, + "title": "File Name Coverage Issue", + "url": "https://github.com/hapijs/lab/issues/461" + }, + { + "id": 89642128, + "labels": ["bug"], + "number": 375, + "title": "Experiment description not showing in output", + "url": "https://github.com/hapijs/lab/issues/375" + } + ], + "number": 93, + "url": "https://github.com/hapijs/lab/milestone/93", + "version": "10.6.1" + }, + { + "date": "2016-05-19T00:59:31Z", + "id": 1752305, + "issues": [ + { + "id": 155411669, + "labels": ["feature"], + "number": 586, + "title": "Default output to stdout", + "url": "https://github.com/hapijs/lab/pull/586" + }, + { + "id": 155408905, + "labels": ["documentation"], + "number": 585, + "title": "Document how to only run linting", + "url": "https://github.com/hapijs/lab/pull/585" + }, + { + "id": 155388536, + "labels": ["feature"], + "number": 584, + "title": "Don't execute before/after on experiments that lack tests", + "url": "https://github.com/hapijs/lab/pull/584" + }, + { + "id": 155381554, + "labels": ["documentation"], + "number": 583, + "title": "Better documentation for schedule", + "url": "https://github.com/hapijs/lab/pull/583" + }, + { + "id": 146269548, + "labels": ["support", "documentation"], + "number": 559, + "title": "Run linting only", + "url": "https://github.com/hapijs/lab/issues/559" + }, + { + "id": 106271059, + "labels": ["feature"], + "number": 440, + "title": "before and after blocks", + "url": "https://github.com/hapijs/lab/issues/440" + }, + { + "id": 92445908, + "labels": ["feature"], + "number": 390, + "title": "Enable output for single-file usage", + "url": "https://github.com/hapijs/lab/issues/390" + }, + { + "id": 66948859, + "labels": ["feature"], + "number": 337, + "title": "Skipped tests should have their beforeEach() skipped too?", + "url": "https://github.com/hapijs/lab/issues/337" + }, + { + "id": 53089220, + "labels": ["documentation"], + "number": 288, + "title": "self-run scripts don't generate output or respect CLI arguments", + "url": "https://github.com/hapijs/lab/issues/288" + } + ], "number": 92, - "title": "Prints execution time for each test on console", - "url": "https://github.com/hapijs/lab/pull/92" - }, - { - "id": 33231122, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/92", + "version": "10.6.0" + }, + { + "date": "2016-05-06T19:31:25Z", + "id": 1752135, + "issues": [ + { + "id": 153521449, + "labels": ["bug"], + "number": 579, + "title": "Promise test check should allow more than one argument", + "url": "https://github.com/hapijs/lab/issues/579" + } + ], "number": 91, - "title": "Coverage file filter function modified to support Windows paths #32", - "url": "https://github.com/hapijs/lab/pull/91" - }, - { - "id": 19241813, - "labels": ["bug"], - "number": 32, - "title": "Coverage not working on Windows", - "url": "https://github.com/hapijs/lab/issues/32" - } - ], - "number": 10, - "url": "https://github.com/hapijs/lab/milestone/10", - "version": "3.1.4" - }, - { - "date": "2014-05-01T15:25:16Z", - "id": 641022, - "issues": [ - { - "id": 32621368, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/91", + "version": "10.5.1" + }, + { + "date": "2016-05-06T18:14:01Z", + "id": 1746605, + "issues": [ + { + "id": 153506534, + "labels": ["feature"], + "number": 578, + "title": "Post test cleanup. Closes #577", + "url": "https://github.com/hapijs/lab/pull/578" + }, + { + "id": 153506242, + "labels": ["feature"], + "number": 577, + "title": "Post test cleanup", + "url": "https://github.com/hapijs/lab/issues/577" + }, + { + "id": 152925715, + "labels": ["dependency"], + "number": 576, + "title": "Support bossy 3", + "url": "https://github.com/hapijs/lab/pull/576" + } + ], + "number": 90, + "url": "https://github.com/hapijs/lab/milestone/90", + "version": "10.5.0" + }, + { + "date": "2016-05-04T02:56:57Z", + "id": 1734332, + "issues": [ + { + "id": 152918380, + "labels": ["dependency"], + "number": 575, + "title": "Update dependencies", + "url": "https://github.com/hapijs/lab/pull/575" + }, + { + "id": 152676105, + "labels": ["feature"], + "number": 574, + "title": "id-557: Error thrown when I use --coverage-exclude", + "url": "https://github.com/hapijs/lab/pull/574" + }, + { + "id": 152505527, + "labels": ["feature"], + "number": 573, + "title": "use stable stringify for better objects diff", + "url": "https://github.com/hapijs/lab/pull/573" + }, + { + "id": 146018774, + "labels": ["feature"], + "number": 557, + "title": "Error thrown when I use --coverage-exclude", + "url": "https://github.com/hapijs/lab/issues/557" + } + ], + "number": 89, + "url": "https://github.com/hapijs/lab/milestone/89", + "version": "10.4.0" + }, + { + "date": "2016-04-27T15:28:14Z", + "id": 1685339, + "issues": [ + { + "id": 151414136, + "labels": ["bug"], + "number": 570, + "title": "Works correctly with node v6", + "url": "https://github.com/hapijs/lab/pull/570" + }, + { + "id": 151396000, + "labels": ["bug"], + "number": 569, + "title": "Add Reflect to whitelist", + "url": "https://github.com/hapijs/lab/pull/569" + }, + { + "id": 151390393, + "labels": ["bug"], + "number": 568, + "title": "leaks detected:Reflect using node v6.0.0", + "url": "https://github.com/hapijs/lab/issues/568" + } + ], "number": 88, - "title": "updated double call check on done to provide error to internals.output", - "url": "https://github.com/hapijs/lab/pull/88" - } - ], - "number": 9, - "url": "https://github.com/hapijs/lab/milestone/9", - "version": "3.1.1" - }, - { - "date": "2014-04-26T03:59:09Z", - "id": 615836, - "issues": [ - { - "id": 32274810, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/88", + "version": "10.3.2" + }, + { + "date": "2016-04-05T18:13:31Z", + "id": 1646135, + "issues": [ + { + "id": 144862665, + "labels": ["bug"], + "number": 556, + "title": "Code coverage: Always surround expressions in ternary operator with parenthesis", + "url": "https://github.com/hapijs/lab/pull/556" + }, + { + "id": 144520504, + "labels": ["bug"], + "number": 555, + "title": "Code coverage for conditional operator with comma operator isn't handled correctly", + "url": "https://github.com/hapijs/lab/issues/555" + }, + { + "id": 144083383, + "labels": ["dependency"], + "number": 554, + "title": "Update eslint to v2.5", + "url": "https://github.com/hapijs/lab/pull/554" + }, + { + "id": 142972219, + "labels": ["documentation"], + "number": 548, + "title": "Update README.md", + "url": "https://github.com/hapijs/lab/pull/548" + } + ], + "number": 87, + "url": "https://github.com/hapijs/lab/milestone/87", + "version": "10.3.1" + }, + { + "date": "2016-03-15T17:07:44Z", + "id": 1618721, + "issues": [ + { + "id": 141037837, + "labels": ["bug", "dependency"], + "number": 545, + "title": "Update deps and fix flushing to stdout", + "url": "https://github.com/hapijs/lab/pull/545" + }, + { + "id": 140934331, + "labels": ["feature"], + "number": 544, + "title": "Feature/silent skips", + "url": "https://github.com/hapijs/lab/pull/544" + }, + { + "id": 139300403, + "labels": ["bug"], + "number": 541, + "title": "Allow stdout to flush", + "url": "https://github.com/hapijs/lab/pull/541" + } + ], + "number": 86, + "url": "https://github.com/hapijs/lab/milestone/86", + "version": "10.3.0" + }, + { + "date": "2016-03-02T20:23:39Z", + "id": 1610400, + "issues": [ + { + "id": 137678113, + "labels": ["feature"], + "number": 538, + "title": "Add `plan` option for tests", + "url": "https://github.com/hapijs/lab/pull/538" + }, + { + "id": 46519793, + "labels": ["feature"], + "number": 257, + "title": "Set expected number of assertions", + "url": "https://github.com/hapijs/lab/issues/257" + } + ], + "number": 85, + "url": "https://github.com/hapijs/lab/milestone/85", + "version": "10.2.0" + }, + { + "date": "2016-02-28T18:56:11Z", + "id": 1604140, + "issues": [ + { + "id": 136945448, + "labels": ["feature"], + "number": 537, + "title": "Feature: promises", + "url": "https://github.com/hapijs/lab/pull/537" + }, + { + "id": 136912331, + "labels": ["feature"], + "number": 536, + "title": "Support promises in tests and setup / teardown", + "url": "https://github.com/hapijs/lab/issues/536" + }, + { + "id": 136502751, + "labels": ["bug"], + "number": 534, + "title": "Fix \"multiple only\" error with multiple outputs", + "url": "https://github.com/hapijs/lab/pull/534" + }, + { + "id": 136313154, + "labels": ["documentation"], + "number": 533, + "title": "Update readme for global only", + "url": "https://github.com/hapijs/lab/pull/533" + } + ], + "number": 84, + "url": "https://github.com/hapijs/lab/milestone/84", + "version": "10.1.0" + }, + { + "date": "2016-02-24T23:38:00Z", + "id": 1596177, + "issues": [ + { + "id": 136213898, + "labels": ["breaking changes", "release notes"], + "number": 530, + "title": "10.0.0 Release Notes", + "url": "https://github.com/hapijs/lab/issues/530" + }, + { + "id": 136092402, + "labels": ["breaking changes"], + "number": 527, + "title": "Global \"only\" (#524)", + "url": "https://github.com/hapijs/lab/pull/527" + }, + { + "id": 134842295, + "labels": ["feature", "breaking changes", "documentation"], + "number": 524, + "title": "Add a global `only` flag to improve TDD experience", + "url": "https://github.com/hapijs/lab/issues/524" + } + ], "number": 83, - "title": "Ability to skip coverage for a code section", - "url": "https://github.com/hapijs/lab/issues/83" - }, - { - "id": 32087670, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/83", + "version": "10.0.0" + }, + { + "date": "2016-02-22T03:35:05Z", + "id": 1591966, + "issues": [ + { + "id": 134997797, + "labels": ["feature"], + "number": 525, + "title": "Support shuffling execution of scripts", + "url": "https://github.com/hapijs/lab/pull/525" + } + ], + "number": 82, + "url": "https://github.com/hapijs/lab/milestone/82", + "version": "9.1.0" + }, + { + "date": "2016-02-18T23:56:00Z", + "id": 1591297, + "issues": [ + { + "id": 134733108, + "labels": ["breaking changes", "release notes"], + "number": 523, + "title": "9.0.0 Release Notes", + "url": "https://github.com/hapijs/lab/issues/523" + }, + { + "id": 134727323, + "labels": ["breaking changes"], + "number": 522, + "title": "Remove jslint and support custom linters", + "url": "https://github.com/hapijs/lab/pull/522" + }, + { + "id": 124826239, + "labels": ["feature"], + "number": 507, + "title": "Add JavaScript Standard Style (`standard`) as a linter option", + "url": "https://github.com/hapijs/lab/issues/507" + }, + { + "id": 51812153, + "labels": ["feature"], + "number": 282, + "title": "Make linter pluggable? (PR offer)", + "url": "https://github.com/hapijs/lab/issues/282" + } + ], "number": 81, - "title": "Add command like option to force color output", - "url": "https://github.com/hapijs/lab/pull/81" - }, - { - "id": 31724397, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/81", + "version": "9.0.0" + }, + { + "date": "2016-02-18T18:38:50Z", + "id": 1589323, + "issues": [ + { + "id": 134583278, + "labels": ["bug"], + "number": 521, + "title": "Fix coverage of trailing function declaration", + "url": "https://github.com/hapijs/lab/pull/521" + }, + { + "id": 134391689, + "labels": ["feature"], + "number": 520, + "title": "Fix coverage report for single-line functions and single-expression arrow functions", + "url": "https://github.com/hapijs/lab/pull/520" + }, + { + "id": 48838103, + "labels": ["bug"], + "number": 274, + "title": "Single line functions are not property tested for coverage", + "url": "https://github.com/hapijs/lab/issues/274" + } + ], + "number": 80, + "url": "https://github.com/hapijs/lab/milestone/80", + "version": "8.4.0" + }, + { + "date": "2016-02-17T20:06:05Z", + "id": 1531833, + "issues": [ + { + "id": 134372757, + "labels": ["dependency"], + "number": 519, + "title": "update to eslint@2.x.x", + "url": "https://github.com/hapijs/lab/pull/519" + } + ], + "number": 79, + "url": "https://github.com/hapijs/lab/milestone/79", + "version": "8.3.0" + }, + { + "date": "2016-01-21T20:52:43Z", + "id": 1528046, + "issues": [ + { + "id": 127835890, + "labels": ["feature", "dependency"], + "number": 516, + "title": "upgrade to espree@3.x.x", + "url": "https://github.com/hapijs/lab/pull/516" + } + ], "number": 78, - "title": "Support passing 'done' as async callback", - "url": "https://github.com/hapijs/lab/pull/78" - }, - { - "id": 31706385, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/78", + "version": "8.2.0" + }, + { + "date": "2016-01-20T22:09:17Z", + "id": 1502647, + "issues": [ + { + "id": 127756344, + "labels": ["feature"], + "number": 515, + "title": "enable parsing the spread operator", + "url": "https://github.com/hapijs/lab/pull/515" + }, + { + "id": 127755895, + "labels": ["feature"], + "number": 514, + "title": "use of the spread operator breaks coverage", + "url": "https://github.com/hapijs/lab/issues/514" + } + ], "number": 77, - "title": "Show error message not just for boom", - "url": "https://github.com/hapijs/lab/issues/77" - }, - { - "id": 31655768, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/77", + "version": "8.1.0" + }, + { + "date": "2016-01-12T17:22:57Z", + "id": 1475332, + "issues": [ + { + "id": 125873416, + "labels": ["bug"], + "number": 510, + "title": "Fix coverage when require cache is reset", + "url": "https://github.com/hapijs/lab/pull/510" + }, + { + "id": 125011818, + "labels": ["documentation"], + "number": 508, + "title": "--coverage-exclude should support multiple paths", + "url": "https://github.com/hapijs/lab/issues/508" + }, + { + "id": 123982126, + "labels": ["bug"], + "number": 505, + "title": "Coverage calculated wrong.", + "url": "https://github.com/hapijs/lab/issues/505" + } + ], "number": 76, - "title": "Expose Chai's assert flavour. Closes #75.", - "url": "https://github.com/hapijs/lab/pull/76" - } - ], - "number": 8, - "url": "https://github.com/hapijs/lab/milestone/8", - "version": "3.1.0" - }, - { - "date": "2014-03-31T18:35:45Z", - "id": 612953, - "issues": [ - { - "id": 30536301, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/76", + "version": "8.0.2" + }, + { + "date": "2015-12-27T22:49:45Z", + "id": 1444824, + "issues": [ + { + "id": 123900840, + "labels": ["bug"], + "number": 504, + "title": "Lab .eslintrc rules overrides local eslint rules.", + "url": "https://github.com/hapijs/lab/issues/504" + }, + { + "id": 123900660, + "labels": ["bug"], + "number": 503, + "title": "Fix eslint configuration file format support.", + "url": "https://github.com/hapijs/lab/pull/503" + }, + { + "id": 120885064, + "labels": ["bug"], + "number": 500, + "title": "fix diff text visibility for console reporter", + "url": "https://github.com/hapijs/lab/pull/500" + }, + { + "id": 118722902, + "labels": ["bug"], + "number": 493, + "title": "Diff colors render diff text unreadable", + "url": "https://github.com/hapijs/lab/issues/493" + } + ], + "number": 75, + "url": "https://github.com/hapijs/lab/milestone/75", + "version": "8.0.1" + }, + { + "date": "2015-12-04T19:52:36Z", + "id": 1407824, + "issues": [ + { + "id": 120473965, + "labels": ["breaking changes", "release notes"], + "number": 499, + "title": "8.0.0 release notes", + "url": "https://github.com/hapijs/lab/issues/499" + }, + { + "id": 120472322, + "labels": ["dependency"], + "number": 498, + "title": "Update dependencies", + "url": "https://github.com/hapijs/lab/pull/498" + }, + { + "id": 119624842, + "labels": ["feature", "breaking changes"], + "number": 496, + "title": "update to eslint-config-hapi@8.x.x", + "url": "https://github.com/hapijs/lab/pull/496" + }, + { + "id": 119520318, + "labels": ["feature"], + "number": 495, + "title": "Add objectLiteralShorthandMethods to supported ES6 features", + "url": "https://github.com/hapijs/lab/pull/495" + }, + { + "id": 118526802, + "labels": ["dependency"], + "number": 492, + "title": "Update dependencies items and eslint", + "url": "https://github.com/hapijs/lab/pull/492" + }, + { + "id": 118460977, + "labels": ["feature"], + "number": 491, + "title": "Coverage reporting does not support parsing ES6 objectLiteralComputedProperties", + "url": "https://github.com/hapijs/lab/issues/491" + }, + { + "id": 117008398, + "labels": ["documentation"], + "number": 487, + "title": "Es6-ify the README examples", + "url": "https://github.com/hapijs/lab/pull/487" + }, + { + "id": 114421846, + "labels": ["dependency"], + "number": 479, + "title": "Update hapijs/items to 2.0.0 from 1.1.1", + "url": "https://github.com/hapijs/lab/issues/479" + } + ], + "number": 74, + "url": "https://github.com/hapijs/lab/milestone/74", + "version": "8.0.0" + }, + { + "date": "2015-11-12T04:23:41Z", + "id": 1394332, + "issues": [ + { + "id": 116475668, + "labels": ["feature", "dependency"], + "number": 484, + "title": "Update linter to include for loop rules", + "url": "https://github.com/hapijs/lab/pull/484" + } + ], + "number": 73, + "url": "https://github.com/hapijs/lab/milestone/73", + "version": "7.3.0" + }, + { + "date": "2015-11-04T20:30:28Z", + "id": 1386318, + "issues": [ + { + "id": 115137489, + "labels": ["feature"], + "number": 480, + "title": "Update hapi linter dependencies", + "url": "https://github.com/hapijs/lab/pull/480" + } + ], + "number": 72, + "url": "https://github.com/hapijs/lab/milestone/72", + "version": "7.2.0" + }, + { + "date": "2015-10-30T22:59:47Z", + "id": 1379215, + "issues": [ + { + "id": 114368330, + "labels": ["feature"], + "number": 478, + "title": "Update to use ES6 style and lint rules", + "url": "https://github.com/hapijs/lab/pull/478" + }, + { + "id": 114361519, + "labels": ["feature"], + "number": 477, + "title": "Es6", + "url": "https://github.com/hapijs/lab/pull/477" + }, + { + "id": 114323480, + "labels": ["feature"], + "number": 476, + "title": "ES6 linting rules", + "url": "https://github.com/hapijs/lab/issues/476" + }, + { + "id": 113884362, + "labels": ["bug"], + "number": 475, + "title": "consider testing arg passed to done is an error object", + "url": "https://github.com/hapijs/lab/issues/475" + } + ], "number": 71, - "title": "Todo tests", - "url": "https://github.com/hapijs/lab/issues/71" - }, - { - "id": 30533973, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/71", + "version": "7.1.0" + }, + { + "date": "2015-10-27T11:45:30Z", + "id": 1340761, + "issues": [ + { + "id": 113564486, + "labels": ["breaking changes", "release notes"], + "number": 474, + "title": "7.0.0 release notes", + "url": "https://github.com/hapijs/lab/issues/474" + }, + { + "id": 113554360, + "labels": ["breaking changes"], + "number": 473, + "title": "Remove node 0.10 support", + "url": "https://github.com/hapijs/lab/pull/473" + }, + { + "id": 113309851, + "labels": ["bug"], + "number": 471, + "title": "Do not add tracking code before \"var\" in \"for(var x of xs)\"", + "url": "https://github.com/hapijs/lab/pull/471" + }, + { + "id": 113051088, + "labels": ["bug"], + "number": 470, + "title": "for(var x of xs) is not handled correctly when coverage is turned on", + "url": "https://github.com/hapijs/lab/issues/470" + } + ], "number": 70, - "title": "Skip test or experiment", - "url": "https://github.com/hapijs/lab/issues/70" - }, - { - "id": 30474999, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/70", + "version": "7.0.0" + }, + { + "date": "2015-10-06T16:52:03Z", + "id": 1328079, + "issues": [ + { + "id": 109637355, + "labels": ["feature"], + "number": 460, + "title": "Add objectLiteralShorthandMethods to supported ES6 features", + "url": "https://github.com/hapijs/lab/pull/460" + } + ], "number": 69, - "title": "Allow setting per test of experiment timeout", - "url": "https://github.com/hapijs/lab/issues/69" - }, - { - "id": 30474628, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/69", + "version": "6.2.0" + }, + { + "date": "2015-09-29T00:25:06Z", + "id": 1327673, + "issues": [ + { + "id": 108769507, + "labels": ["feature"], + "number": 457, + "title": "Error data", + "url": "https://github.com/hapijs/lab/pull/457" + } + ], "number": 68, - "title": "Allow setting parallel execution", - "url": "https://github.com/hapijs/lab/issues/68" - }, - { - "id": 30474618, - "labels": ["bug", "breaking changes"], + "url": "https://github.com/hapijs/lab/milestone/68", + "version": "6.1.0" + }, + { + "date": "2015-09-28T19:10:28Z", + "id": 1316712, + "issues": [ + { + "id": 108726549, + "labels": ["breaking changes", "release notes"], + "number": 455, + "title": "6.0.0 release notes", + "url": "https://github.com/hapijs/lab/issues/455" + }, + { + "id": 108478623, + "labels": ["feature"], + "number": 454, + "title": "Update to eslint-config-hapi@3.x.x", + "url": "https://github.com/hapijs/lab/pull/454" + }, + { + "id": 108415823, + "labels": ["feature"], + "number": 453, + "title": "Lint warning for unused variables except internals", + "url": "https://github.com/hapijs/lab/issues/453" + }, + { + "id": 107619039, + "labels": ["feature"], + "number": 452, + "title": "-V/--version flag to show version", + "url": "https://github.com/hapijs/lab/pull/452" + }, + { + "id": 107544047, + "labels": ["feature"], + "number": 449, + "title": "Add --version to CLI", + "url": "https://github.com/hapijs/lab/issues/449" + } + ], "number": 67, - "title": "Combine spec+console+summary with -s/-v flags", - "url": "https://github.com/hapijs/lab/issues/67" - }, - { - "id": 30464633, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/67", + "version": "6.0.0" + }, + { + "date": "2015-09-21T16:20:59Z", + "id": 1316693, + "issues": [ + { + "id": 107547318, + "labels": ["bug"], + "number": 451, + "title": "Rename template for npm publish", + "url": "https://github.com/hapijs/lab/pull/451" + } + ], "number": 66, - "title": "before/beforeEach/afterEach/after not run in correct order when using nested experiments", - "url": "https://github.com/hapijs/lab/issues/66" - }, - { - "id": 30461472, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/lab/milestone/66", + "version": "5.18.1" + }, + { + "date": "2015-09-21T16:16:48Z", + "id": 1308904, + "issues": [ + { + "id": 107456452, + "labels": ["feature"], + "number": 448, + "title": "Add linting information and test failures to html", + "url": "https://github.com/hapijs/lab/pull/448" + }, + { + "id": 107319632, + "labels": ["test", "dependency"], + "number": 447, + "title": "Upgrade deps and avoid relying on unix commands", + "url": "https://github.com/hapijs/lab/pull/447" + }, + { + "id": 106241159, + "labels": ["feature"], + "number": 439, + "title": "Document html coverage report source markup", + "url": "https://github.com/hapijs/lab/issues/439" + } + ], "number": 65, - "title": "Rename -g to -l and make it disable detection", - "url": "https://github.com/hapijs/lab/issues/65" - }, - { - "id": 30459862, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/lab/milestone/65", + "version": "5.18.0" + }, + { + "date": "2015-09-16T17:12:24Z", + "id": 1307547, + "issues": [ + { + "id": 106678104, + "labels": ["feature"], + "number": 445, + "title": "JSON reporter now supports lint output", + "url": "https://github.com/hapijs/lab/pull/445" + }, + { + "id": 106615195, + "labels": ["feature"], + "number": 443, + "title": "add lint results to json reporter", + "url": "https://github.com/hapijs/lab/issues/443" + } + ], "number": 64, - "title": "Remove coverage reporter", - "url": "https://github.com/hapijs/lab/issues/64" - }, - { - "id": 30459739, - "labels": ["non issue"], + "url": "https://github.com/hapijs/lab/milestone/64", + "version": "5.17.0" + }, + { + "date": "2015-09-16T01:10:32Z", + "id": 1301611, + "issues": [ + { + "id": 106601983, + "labels": ["dependency"], + "number": 442, + "title": "Update insecure dependencies (eslint, handlebars)", + "url": "https://github.com/hapijs/lab/pull/442" + }, + { + "id": 106391668, + "labels": ["documentation"], + "number": 441, + "title": "Document coverage ignore syntax, fixes #438", + "url": "https://github.com/hapijs/lab/pull/441" + } + ], "number": 63, - "title": "Remove verbose mode", - "url": "https://github.com/hapijs/lab/issues/63" - }, - { - "id": 30459007, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/63", + "version": "5.16.2" + }, + { + "date": "2015-09-11T19:06:03Z", + "id": 1286785, + "issues": [ + { + "id": 105735059, + "labels": ["bug"], + "number": 437, + "title": "Drop camelcase lint rule", + "url": "https://github.com/hapijs/lab/issues/437" + }, + { + "id": 105628454, + "labels": ["dependency"], + "number": 436, + "title": "Update to eslint-config-hapi@2.x.x", + "url": "https://github.com/hapijs/lab/pull/436" + }, + { + "id": 104905781, + "labels": ["bug"], + "number": 433, + "title": "Add Infinity to stringify", + "url": "https://github.com/hapijs/lab/pull/433" + }, + { + "id": 104627130, + "labels": ["dependency"], + "number": 432, + "title": "Updated eslint version", + "url": "https://github.com/hapijs/lab/pull/432" + } + ], "number": 62, - "title": "Tap reporter", - "url": "https://github.com/hapijs/lab/issues/62" - }, - { - "id": 30001872, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/62", + "version": "5.16.1" + }, + { + "date": "2015-09-02T16:59:41Z", + "id": 1266724, + "issues": [ + { + "id": 104392271, + "labels": ["documentation"], + "number": 431, + "title": "Add docs for extending lab's linter", + "url": "https://github.com/hapijs/lab/pull/431" + }, + { + "id": 102869685, + "labels": ["feature"], + "number": 429, + "title": "Use a shareable config for ESLint", + "url": "https://github.com/hapijs/lab/pull/429" + }, + { + "id": 88897303, + "labels": ["documentation"], + "number": 372, + "title": ".eslintrc files should build on default settings", + "url": "https://github.com/hapijs/lab/issues/372" + } + ], + "number": 61, + "url": "https://github.com/hapijs/lab/milestone/61", + "version": "5.16.0" + }, + { + "date": "2015-08-21T17:54:09Z", + "id": 1249342, + "issues": [ + { + "id": 101860096, + "labels": ["bug"], + "number": 428, + "title": "Show invisible tokens on stringify", + "url": "https://github.com/hapijs/lab/pull/428" + }, + { + "id": 101100196, + "labels": ["bug"], + "number": 424, + "title": "Fix stack traces when using transforms", + "url": "https://github.com/hapijs/lab/pull/424" + } + ], + "number": 60, + "url": "https://github.com/hapijs/lab/milestone/60", + "version": "5.15.2" + }, + { + "date": "2015-08-11T03:00:51Z", + "id": 1242452, + "issues": [ + { + "id": 99879575, + "labels": ["bug"], + "number": 421, + "title": "Fix circular JSON for console reporter", + "url": "https://github.com/hapijs/lab/pull/421" + } + ], + "number": 59, + "url": "https://github.com/hapijs/lab/milestone/59", + "version": "5.15.1" + }, + { + "date": "2015-08-05T17:13:18Z", + "id": 1239543, + "issues": [ + { + "id": 99076586, + "labels": ["feature"], + "number": 420, + "title": "Add command line options to override coverage path and excludes", + "url": "https://github.com/hapijs/lab/pull/420" + } + ], + "number": 58, + "url": "https://github.com/hapijs/lab/milestone/58", + "version": "5.15.0" + }, + { + "date": "2015-08-04T04:05:37Z", + "id": 1228076, + "issues": [ + { + "id": 98884595, + "labels": ["bug"], + "number": 416, + "title": "Allow custom reporters from CLI", + "url": "https://github.com/hapijs/lab/pull/416" + }, + { + "id": 98884535, + "labels": ["bug"], + "number": 415, + "title": "Custom reporters not allowed from cli", + "url": "https://github.com/hapijs/lab/issues/415" + }, + { + "id": 98879069, + "labels": ["test"], + "number": 414, + "title": "Fix test for equal call with extra param", + "url": "https://github.com/hapijs/lab/pull/414" + }, + { + "id": 98762264, + "labels": ["test"], + "number": 413, + "title": "Fix extra params passed to equal that are invalid", + "url": "https://github.com/hapijs/lab/issues/413" + }, + { + "id": 98639223, + "labels": ["dependency"], + "number": 412, + "title": "Update eslint to 1.0.x", + "url": "https://github.com/hapijs/lab/pull/412" + } + ], + "number": 57, + "url": "https://github.com/hapijs/lab/milestone/57", + "version": "5.14.1" + }, + { + "date": "2015-07-27T18:53:02Z", + "id": 1193934, + "issues": [ + { + "id": 95047362, + "labels": ["bug"], + "number": 406, + "title": "Fix exit code when multiple reporters encounter a failure", + "url": "https://github.com/hapijs/lab/pull/406" + }, + { + "id": 95027055, + "labels": ["feature"], + "number": 404, + "title": "enable more es6 features for Espree", + "url": "https://github.com/hapijs/lab/pull/404" + }, + { + "id": 93330417, + "labels": ["bug"], + "number": 397, + "title": "Attach sub-reporters to the multiple reporter", + "url": "https://github.com/hapijs/lab/pull/397" + }, + { + "id": 92818980, + "labels": ["bug"], + "number": 393, + "title": "Exit code always 0 with multiple reporters", + "url": "https://github.com/hapijs/lab/issues/393" + } + ], "number": 56, - "title": "spec style formatting", - "url": "https://github.com/hapijs/lab/pull/56" - }, - { - "id": 29997503, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/56", + "version": "5.14.0" + }, + { + "date": "2015-07-05T23:56:12Z", + "id": 1192822, + "issues": [ + { + "id": 93157293, + "labels": ["feature"], + "number": 395, + "title": "Support filename pattern matching in CLI", + "url": "https://github.com/hapijs/lab/pull/395" + }, + { + "id": 90928151, + "labels": ["feature"], + "number": 384, + "title": "File name matching glob pattern", + "url": "https://github.com/hapijs/lab/issues/384" + } + ], "number": 55, - "title": "fixed failure count so that non-zero exit code is return on test failure", - "url": "https://github.com/hapijs/lab/pull/55" - }, - { - "id": 29983300, - "labels": ["feature"], - "number": 53, - "title": "Support verbose mode for console", - "url": "https://github.com/hapijs/lab/pull/53" - }, - { - "id": 28733334, - "labels": ["feature"], - "number": 48, - "title": "Adding spec reporter", - "url": "https://github.com/hapijs/lab/pull/48" - } - ], - "number": 7, - "url": "https://github.com/hapijs/lab/milestone/7", - "version": "3.0.0" - }, - { - "date": "2022-05-07T00:51:54Z", - "id": 7931437, - "issues": [ - { - "id": 1222487373, - "labels": ["bug"], - "number": 1047, - "title": "Fix coverage ignore flag when ts comments are removed", - "url": "https://github.com/hapijs/lab/pull/1047" - }, - { - "id": 1222018052, - "labels": ["bug"], - "number": 1046, - "title": "Report \"Type T has no properties in common with type U\" as a type error", - "url": "https://github.com/hapijs/lab/issues/1046" - } - ], - "number": 191, - "url": "https://github.com/hapijs/lab/milestone/191", - "version": "2.47.1" - }, - { - "date": "2014-03-28T08:09:25Z", - "id": 612952, - "issues": [ - { - "id": 30369076, - "labels": ["bug"], - "number": 61, - "title": "Remove SwitchCase from statement coverage", - "url": "https://github.com/hapijs/lab/issues/61" - } - ], - "number": 6, - "url": "https://github.com/hapijs/lab/milestone/6", - "version": "2.0.2" - }, - { - "date": "2014-03-28T08:07:52Z", - "id": 603049, - "issues": [ - { - "id": 29983335, - "labels": ["feature", "breaking changes"], + "url": "https://github.com/hapijs/lab/milestone/55", + "version": "5.13.0" + }, + { + "date": "2015-07-03T22:40:22Z", + "id": 1191539, + "issues": [ + { + "id": 92944656, + "labels": ["bug"], + "number": 394, + "title": "Revert lint rule on spaced comments", + "url": "https://github.com/hapijs/lab/pull/394" + } + ], "number": 54, - "title": "Move coverage functionality internally", - "url": "https://github.com/hapijs/lab/issues/54" - } - ], - "number": 5, - "url": "https://github.com/hapijs/lab/milestone/5", - "version": "2.0.0" - }, - { - "date": "2014-03-19T18:59:17Z", - "id": 591715, - "issues": [ - { - "id": 29757923, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/54", + "version": "5.12.1" + }, + { + "date": "2015-07-02T20:43:04Z", + "id": 1181582, + "issues": [ + { + "id": 92729031, + "labels": ["bug"], + "number": 392, + "title": "Attach results to the reporter", + "url": "https://github.com/hapijs/lab/pull/392" + }, + { + "id": 92232676, + "labels": ["feature"], + "number": 389, + "title": "Multiple reporters and multiple outputs", + "url": "https://github.com/hapijs/lab/pull/389" + }, + { + "id": 91323550, + "labels": ["dependency"], + "number": 387, + "title": "Update to eslint 0.24.x and add array bracket spacing linting rule", + "url": "https://github.com/hapijs/lab/pull/387" + }, + { + "id": 91038754, + "labels": ["feature"], + "number": 386, + "title": "enable code coverage support with ES6", + "url": "https://github.com/hapijs/lab/pull/386" + }, + { + "id": 90353005, + "labels": ["feature"], + "number": 381, + "title": "Added space after comment rule", + "url": "https://github.com/hapijs/lab/pull/381" + } + ], + "number": 53, + "url": "https://github.com/hapijs/lab/milestone/53", + "version": "5.12.0" + }, + { + "date": "2015-06-25T19:21:18Z", + "id": 1175318, + "issues": [ + { + "id": 90989623, + "labels": ["bug"], + "number": 385, + "title": "Support more relaxed no-shadow rule", + "url": "https://github.com/hapijs/lab/pull/385" + }, + { + "id": 90251316, + "labels": ["dependency"], + "number": 380, + "title": "Update source-map-support to 0.3.x ", + "url": "https://github.com/hapijs/lab/pull/380" + }, + { + "id": 90242843, + "labels": ["bug"], + "number": 379, + "title": "Shadow lint error going too far", + "url": "https://github.com/hapijs/lab/issues/379" + } + ], + "number": 52, + "url": "https://github.com/hapijs/lab/milestone/52", + "version": "5.11.1" + }, + { + "date": "2015-06-22T15:15:26Z", + "id": 1157031, + "issues": [ + { + "id": 90126606, + "labels": ["bug"], + "number": 377, + "title": "Remove lint rule for line around comments", + "url": "https://github.com/hapijs/lab/pull/377" + }, + { + "id": 89970756, + "labels": ["bug"], + "number": 376, + "title": "Lint too aggressive with empty lines before comments", + "url": "https://github.com/hapijs/lab/issues/376" + }, + { + "id": 87063640, + "labels": ["feature"], + "number": 371, + "title": "Use no-shadow lint rule", + "url": "https://github.com/hapijs/lab/pull/371" + }, + { + "id": 86884189, + "labels": ["feature"], + "number": 369, + "title": "no-catch-shadow", + "url": "https://github.com/hapijs/lab/issues/369" + } + ], "number": 51, - "title": "update chai dependency, fix deprecation warning in chai", - "url": "https://github.com/hapijs/lab/pull/51" - } - ], - "number": 4, - "url": "https://github.com/hapijs/lab/milestone/4", - "version": "1.9.0" - }, - { - "date": "2014-03-09T05:54:16Z", - "id": 580311, - "issues": [ - { - "id": 29037509, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/51", + "version": "5.11.0" + }, + { + "date": "2015-06-09T15:12:31Z", + "id": 1121383, + "issues": [ + { + "id": 86279061, + "labels": ["feature"], + "number": 368, + "title": "Enforce capitalization of imported module variable names", + "url": "https://github.com/hapijs/lab/pull/368" + }, + { + "id": 80971373, + "labels": ["feature", "dependency"], + "number": 366, + "title": "Linting update", + "url": "https://github.com/hapijs/lab/pull/366" + }, + { + "id": 80206941, + "labels": ["non issue"], + "number": 365, + "title": "Update license attribute", + "url": "https://github.com/hapijs/lab/pull/365" + }, + { + "id": 79941684, + "labels": ["non issue"], + "number": 364, + "title": "Cleanup repo style", + "url": "https://github.com/hapijs/lab/pull/364" + } + ], + "number": 50, + "url": "https://github.com/hapijs/lab/milestone/50", + "version": "5.10.0" + }, + { + "date": "2015-05-20T15:11:00Z", + "id": 1107216, + "issues": [ + { + "id": 78025638, + "labels": ["feature"], + "number": 362, + "title": "Default both linting thresholds to 0.", + "url": "https://github.com/hapijs/lab/pull/362" + }, + { + "id": 77983757, + "labels": ["bug"], + "number": 361, + "title": "Lint option -L should fail test if any linting problems are found", + "url": "https://github.com/hapijs/lab/issues/361" + }, + { + "id": 77002039, + "labels": ["bug"], + "number": 360, + "title": "Use global handle for __$$labCov for use strict.", + "url": "https://github.com/hapijs/lab/pull/360" + }, + { + "id": 76894141, + "labels": ["bug"], + "number": 359, + "title": "Change afterEaches to run in more natural order", + "url": "https://github.com/hapijs/lab/pull/359" + }, + { + "id": 76867860, + "labels": ["bug"], + "number": 358, + "title": "unable to test when employing template strings", + "url": "https://github.com/hapijs/lab/issues/358" + }, + { + "id": 76186385, + "labels": ["bug"], + "number": 357, + "title": "afterEach's run in unnatural order", + "url": "https://github.com/hapijs/lab/issues/357" + } + ], "number": 49, - "title": "Allow specifying tests by id", - "url": "https://github.com/hapijs/lab/issues/49" - }, - { - "id": 27671956, - "labels": ["feature"], - "number": 41, - "title": "Support beforeEach() (and afterEach())", - "url": "https://github.com/hapijs/lab/issues/41" - } - ], - "number": 2, - "url": "https://github.com/hapijs/lab/milestone/2", - "version": "1.8.0" - }, - { - "date": "2014-03-06T20:48:21Z", - "id": 589808, - "issues": [ - { - "id": 28677395, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/49", + "version": "5.9.0" + }, + { + "date": "2015-05-12T17:30:25Z", + "id": 1085591, + "issues": [ + { + "id": 75646223, + "labels": ["bug"], + "number": 356, + "title": "Fix coverage on loop labels. Fixes #355.", + "url": "https://github.com/hapijs/lab/pull/356" + }, + { + "id": 75480039, + "labels": ["bug"], + "number": 355, + "title": "Error when running lab with coverage on babel compiled code", + "url": "https://github.com/hapijs/lab/issues/355" + }, + { + "id": 73252695, + "labels": ["bug"], + "number": 354, + "title": "Fix coverage modifying \"use strict\" statements.", + "url": "https://github.com/hapijs/lab/pull/354" + } + ], + "number": 48, + "url": "https://github.com/hapijs/lab/milestone/48", + "version": "5.8.1" + }, + { + "date": "2015-04-27T15:36:27Z", + "id": 1082809, + "issues": [ + { + "id": 71089250, + "labels": ["documentation"], + "number": 352, + "title": "Fix #351. Add message about threshold and npm error message.", + "url": "https://github.com/hapijs/lab/pull/352" + }, + { + "id": 71080760, + "labels": ["documentation"], + "number": 351, + "title": "npm ERR! Exit status 1 when threshold is not met", + "url": "https://github.com/hapijs/lab/issues/351" + }, + { + "id": 70901045, + "labels": ["feature"], + "number": 350, + "title": "Lint thresholds", + "url": "https://github.com/hapijs/lab/pull/350" + } + ], "number": 47, - "title": "Fixed branch checking", - "url": "https://github.com/hapijs/lab/pull/47" - } - ], - "number": 3, - "url": "https://github.com/hapijs/lab/milestone/3", - "version": "1.7.1" - }, - { - "date": "2014-02-25T20:52:41Z", - "id": 580274, - "issues": [ - { - "id": 28280164, - "labels": ["documentation"], + "url": "https://github.com/hapijs/lab/milestone/47", + "version": "5.8.0" + }, + { + "date": "2015-04-24T20:04:59Z", + "id": 1076229, + "issues": [ + { + "id": 70730148, + "labels": ["feature"], + "number": 349, + "title": "Add 4 space indent rule", + "url": "https://github.com/hapijs/lab/pull/349" + }, + { + "id": 70527449, + "labels": ["feature"], + "number": 348, + "title": "Add some more rules to ESLint", + "url": "https://github.com/hapijs/lab/issues/348" + }, + { + "id": 70526613, + "labels": ["feature"], + "number": 347, + "title": "Added two eslint rules to lab to enforce the hapi code style.", + "url": "https://github.com/hapijs/lab/pull/347" + } + ], "number": 46, - "title": "update readme", - "url": "https://github.com/hapijs/lab/pull/46" - }, - { - "id": 28279411, - "labels": ["bug"], + "url": "https://github.com/hapijs/lab/milestone/46", + "version": "5.7.0" + }, + { + "date": "2015-04-20T23:19:16Z", + "id": 1075506, + "issues": [ + { + "id": 69670487, + "labels": ["dependency"], + "number": 345, + "title": "Switch to espree", + "url": "https://github.com/hapijs/lab/pull/345" + }, + { + "id": 69617464, + "labels": ["dependency"], + "number": 344, + "title": "Update dependencies", + "url": "https://github.com/hapijs/lab/pull/344" + }, + { + "id": 63761506, + "labels": ["feature", "dependency"], + "number": 332, + "title": "using `espree` or `acorn` instead of esprima", + "url": "https://github.com/hapijs/lab/issues/332" + } + ], "number": 45, - "title": "Fix double domain implicit enter()", - "url": "https://github.com/hapijs/lab/issues/45" - }, - { - "id": 27988710, - "labels": ["documentation"], + "url": "https://github.com/hapijs/lab/milestone/45", + "version": "5.6.1" + }, + { + "date": "2015-04-20T15:26:55Z", + "id": 1034978, + "issues": [ + { + "id": 67507980, + "labels": ["bug"], + "number": 341, + "title": "Fix HTML reporter when using live-transformed code", + "url": "https://github.com/hapijs/lab/pull/341" + }, + { + "id": 67170507, + "labels": ["feature"], + "number": 339, + "title": "Add ESLint rule for blank line at beginning of function scope", + "url": "https://github.com/hapijs/lab/pull/339" + } + ], + "number": 44, + "url": "https://github.com/hapijs/lab/milestone/44", + "version": "5.6.0" + }, + { + "date": "2015-03-23T19:24:19Z", + "id": 1015007, + "issues": [ + { + "id": 61895461, + "labels": ["dependency"], + "number": 327, + "title": "[DEP] eslint 0.14 to 0.17", + "url": "https://github.com/hapijs/lab/pull/327" + }, + { + "id": 61879721, + "labels": ["dependency"], + "number": 326, + "title": "Update eslint to 0.17.0", + "url": "https://github.com/hapijs/lab/issues/326" + } + ], "number": 43, - "title": "fix for readme", - "url": "https://github.com/hapijs/lab/issues/43" - }, - { - "id": 27673060, - "labels": ["feature"], + "url": "https://github.com/hapijs/lab/milestone/43", + "version": "5.5.1" + }, + { + "date": "2015-03-10T16:07:30Z", + "id": 1006028, + "issues": [ + { + "id": 60059510, + "labels": ["feature"], + "number": 324, + "title": "Allow test files to have different extensions with transform", + "url": "https://github.com/hapijs/lab/pull/324" + }, + { + "id": 59956792, + "labels": ["bug"], + "number": 323, + "title": "Fix EventEmitter bug", + "url": "https://github.com/hapijs/lab/pull/323" + }, + { + "id": 59921293, + "labels": ["bug"], + "number": 322, + "title": "Fix domain not exited", + "url": "https://github.com/hapijs/lab/pull/322" + }, + { + "id": 59590479, + "labels": ["feature"], + "number": 317, + "title": "Support custom reporters - closes #216 & closes #309", + "url": "https://github.com/hapijs/lab/pull/317" + } + ], "number": 42, - "title": "add beforeEach() and afterEach()", - "url": "https://github.com/hapijs/lab/pull/42" - } - ], - "number": 1, - "url": "https://github.com/hapijs/lab/milestone/1", - "version": "1.7.0" - } + "url": "https://github.com/hapijs/lab/milestone/42", + "version": "5.5.0" + }, + { + "date": "2015-03-04T16:20:34Z", + "id": 999281, + "issues": [ + { + "id": 59732649, + "labels": ["feature"], + "number": 321, + "title": "Allow --lint-options to be passed to configure linters", + "url": "https://github.com/hapijs/lab/pull/321" + }, + { + "id": 59625077, + "labels": ["feature"], + "number": 320, + "title": "Fixes #319: Instructs --output to create given directory recursively.", + "url": "https://github.com/hapijs/lab/pull/320" + }, + { + "id": 59623293, + "labels": ["feature"], + "number": 319, + "title": "--output should create given directory tree", + "url": "https://github.com/hapijs/lab/issues/319" + }, + { + "id": 59606847, + "labels": ["feature"], + "number": 318, + "title": "add debug option to show domain error stack", + "url": "https://github.com/hapijs/lab/pull/318" + }, + { + "id": 59437843, + "labels": ["feature"], + "number": 316, + "title": "Properly support sourcemaps when using the transform option", + "url": "https://github.com/hapijs/lab/pull/316" + } + ], + "number": 41, + "url": "https://github.com/hapijs/lab/milestone/41", + "version": "5.4.0" + }, + { + "date": "2015-02-27T19:36:56Z", + "id": 947123, + "issues": [ + { + "id": 58452261, + "labels": ["feature"], + "number": 311, + "title": "Add live transform of source code before coverage analysis", + "url": "https://github.com/hapijs/lab/pull/311" + }, + { + "id": 57806435, + "labels": ["dependency"], + "number": 308, + "title": " Remove Makefile and advice about it. Closes #284.", + "url": "https://github.com/hapijs/lab/pull/308" + }, + { + "id": 57804231, + "labels": ["dependency"], + "number": 307, + "title": "Linting update", + "url": "https://github.com/hapijs/lab/pull/307" + } + ], + "number": 40, + "url": "https://github.com/hapijs/lab/milestone/40", + "version": "5.3.0" + }, + { + "date": "2015-01-22T16:43:37Z", + "id": 928851, + "issues": [ + { + "id": 55061608, + "labels": ["bug"], + "number": 297, + "title": "Add Intl global", + "url": "https://github.com/hapijs/lab/issues/297" + }, + { + "id": 55022532, + "labels": ["bug"], + "number": 295, + "title": "Ignore Intl global", + "url": "https://github.com/hapijs/lab/pull/295" + }, + { + "id": 50326872, + "labels": ["feature"], + "number": 280, + "title": "Ignoring files in linting", + "url": "https://github.com/hapijs/lab/issues/280" + } + ], + "number": 39, + "url": "https://github.com/hapijs/lab/milestone/39", + "version": "5.2.1" + }, + { + "date": "2015-01-09T16:22:40Z", + "id": 878797, + "issues": [ + { + "id": 53628939, + "labels": ["feature"], + "number": 290, + "title": "make linter pluggable", + "url": "https://github.com/hapijs/lab/pull/290" + }, + { + "id": 52748453, + "labels": ["bug"], + "number": 286, + "title": "Avoid double timeout on before/after", + "url": "https://github.com/hapijs/lab/pull/286" + } + ], + "number": 38, + "url": "https://github.com/hapijs/lab/milestone/38", + "version": "5.2.0" + }, + { + "date": "2014-11-24T18:41:06Z", + "id": 873901, + "issues": [ + { + "id": 49729639, + "labels": ["feature"], + "number": 278, + "title": "Fix before/after exceptions to be reported", + "url": "https://github.com/hapijs/lab/pull/278" + }, + { + "id": 49705098, + "labels": ["feature"], + "number": 277, + "title": "Errors thrown in after & afterEach can cause immediate exit with code 0", + "url": "https://github.com/hapijs/lab/issues/277" + } + ], + "number": 37, + "url": "https://github.com/hapijs/lab/milestone/37", + "version": "5.1.0" + }, + { + "date": "2014-11-20T07:50:54Z", + "id": 856840, + "issues": [ + { + "id": 49506445, + "labels": ["bug"], + "number": 276, + "title": "(true ? true : false) ? 'x' : false === true when coverage enabled (should be 'x')", + "url": "https://github.com/hapijs/lab/issues/276" + } + ], + "number": 36, + "url": "https://github.com/hapijs/lab/milestone/36", + "version": "5.0.3" + }, + { + "date": "2014-11-07T02:55:39Z", + "id": 837429, + "issues": [ + { + "id": 48015403, + "labels": ["bug"], + "number": 271, + "title": "Add Map, Set, and WeakSet to the Harmony globals and improve testing", + "url": "https://github.com/hapijs/lab/pull/271" + }, + { + "id": 46735086, + "labels": ["bug"], + "number": 262, + "title": "Fix console reporting", + "url": "https://github.com/hapijs/lab/pull/262" + } + ], + "number": 35, + "url": "https://github.com/hapijs/lab/milestone/35", + "version": "5.0.2" + }, + { + "date": "2014-10-23T13:46:47Z", + "id": 836292, + "issues": [ + { + "id": 46625919, + "labels": ["bug"], + "number": 261, + "title": "Remove extra hoek typo in package.json", + "url": "https://github.com/hapijs/lab/issues/261" + }, + { + "id": 46540243, + "labels": ["feature"], + "number": 260, + "title": "Add verbosity index", + "url": "https://github.com/hapijs/lab/pull/260" + } + ], + "number": 34, + "url": "https://github.com/hapijs/lab/milestone/34", + "version": "5.0.1" + }, + { + "date": "2014-10-22T17:53:46Z", + "id": 830636, + "issues": [ + { + "id": 46538350, + "labels": ["breaking changes", "release notes"], + "number": 259, + "title": "5.0.0 Release Notes", + "url": "https://github.com/hapijs/lab/issues/259" + }, + { + "id": 46537096, + "labels": ["bug"], + "number": 258, + "title": "Remove extra line breaks in lint report", + "url": "https://github.com/hapijs/lab/pull/258" + }, + { + "id": 46458413, + "labels": ["feature"], + "number": 256, + "title": "Assertions library option", + "url": "https://github.com/hapijs/lab/pull/256" + }, + { + "id": 46451752, + "labels": ["documentation"], + "number": 254, + "title": "Fix documentation to exclude chai ", + "url": "https://github.com/hapijs/lab/issues/254" + }, + { + "id": 46450110, + "labels": ["breaking changes", "dependency"], + "number": 253, + "title": "Remove Chai", + "url": "https://github.com/hapijs/lab/pull/253" + }, + { + "id": 46357134, + "labels": ["bug"], + "number": 252, + "title": "Lint report formatting", + "url": "https://github.com/hapijs/lab/issues/252" + }, + { + "id": 46039262, + "labels": ["breaking changes", "dependency"], + "number": 250, + "title": "Remove chai", + "url": "https://github.com/hapijs/lab/issues/250" + } + ], + "number": 33, + "url": "https://github.com/hapijs/lab/milestone/33", + "version": "5.0.0" + }, + { + "date": "2014-10-17T19:31:11Z", + "id": 820055, + "issues": [ + { + "id": 45929548, + "labels": ["feature"], + "number": 249, + "title": "Fix #217: throw on invalid function declaration", + "url": "https://github.com/hapijs/lab/pull/249" + }, + { + "id": 45517444, + "labels": ["bug"], + "number": 247, + "title": "Run linting in child process", + "url": "https://github.com/hapijs/lab/pull/247" + }, + { + "id": 45501273, + "labels": ["bug"], + "number": 246, + "title": "Remove extra line breaks in report", + "url": "https://github.com/hapijs/lab/pull/246" + }, + { + "id": 45419177, + "labels": ["bug"], + "number": 245, + "title": "Spawn linting in child process", + "url": "https://github.com/hapijs/lab/issues/245" + }, + { + "id": 45416982, + "labels": ["bug"], + "number": 244, + "title": "Remove extra line breaks", + "url": "https://github.com/hapijs/lab/issues/244" + } + ], + "number": 32, + "url": "https://github.com/hapijs/lab/milestone/32", + "version": "4.7.0" + }, + { + "date": "2014-10-09T16:14:02Z", + "id": 818463, + "issues": [ + { + "id": 45382651, + "labels": ["bug"], + "number": 243, + "title": "Remove brace-style rule", + "url": "https://github.com/hapijs/lab/pull/243" + }, + { + "id": 45381958, + "labels": ["bug"], + "number": 242, + "title": "Remove brace-style lint rule", + "url": "https://github.com/hapijs/lab/issues/242" + }, + { + "id": 45379531, + "labels": ["feature"], + "number": 241, + "title": "Lint arg is now a boolean", + "url": "https://github.com/hapijs/lab/pull/241" + }, + { + "id": 45299340, + "labels": ["bug"], + "number": 240, + "title": "Removing consistent-return", + "url": "https://github.com/hapijs/lab/pull/240" + }, + { + "id": 45299182, + "labels": ["bug"], + "number": 239, + "title": "Drop consistent-return lint rule", + "url": "https://github.com/hapijs/lab/issues/239" + }, + { + "id": 45298521, + "labels": ["bug"], + "number": 238, + "title": "Remove no-lonely-if", + "url": "https://github.com/hapijs/lab/pull/238" + }, + { + "id": 45298347, + "labels": ["feature"], + "number": 237, + "title": "Switch -L to be boolean and only use eslint", + "url": "https://github.com/hapijs/lab/issues/237" + }, + { + "id": 45298291, + "labels": ["bug"], + "number": 236, + "title": "Remove no-lonely-if", + "url": "https://github.com/hapijs/lab/issues/236" + } + ], + "number": 31, + "url": "https://github.com/hapijs/lab/milestone/31", + "version": "4.6.2" + }, + { + "date": "2014-10-08T14:58:18Z", + "id": 817128, + "issues": [ + { + "id": 45253297, + "labels": ["test"], + "number": 234, + "title": "Ignore tests for lab", + "url": "https://github.com/hapijs/lab/pull/234" + }, + { + "id": 45253028, + "labels": ["test"], + "number": 233, + "title": "Add eslintignore for labs tests", + "url": "https://github.com/hapijs/lab/issues/233" + }, + { + "id": 45251451, + "labels": ["feature"], + "number": 232, + "title": "Fixing lint rules and only showing files when issues", + "url": "https://github.com/hapijs/lab/pull/232" + }, + { + "id": 45247402, + "labels": ["feature"], + "number": 231, + "title": "Only show linted files if there are issues", + "url": "https://github.com/hapijs/lab/issues/231" + } + ], + "number": 30, + "url": "https://github.com/hapijs/lab/milestone/30", + "version": "4.6.1" + }, + { + "date": "2014-10-07T17:21:13Z", + "id": 811863, + "issues": [ + { + "id": 43214932, + "labels": ["feature"], + "number": 213, + "title": "WIP - Add linting support", + "url": "https://github.com/hapijs/lab/pull/213" + } + ], + "number": 29, + "url": "https://github.com/hapijs/lab/milestone/29", + "version": "4.6.0" + }, + { + "date": "2014-10-02T19:29:18Z", + "id": 802712, + "issues": [ + { + "id": 44717271, + "labels": ["bug"], + "number": 226, + "title": "Support windows console output", + "url": "https://github.com/hapijs/lab/pull/226" + }, + { + "id": 44717107, + "labels": ["bug"], + "number": 225, + "title": "Console reporter doesn't display well on windows", + "url": "https://github.com/hapijs/lab/issues/225" + } + ], + "number": 28, + "url": "https://github.com/hapijs/lab/milestone/28", + "version": "4.5.2" + }, + { + "date": "2014-09-25T15:25:55Z", + "id": 801645, + "issues": [ + { + "id": 43890354, + "labels": ["bug"], + "number": 219, + "title": "Fix mistakes on previous pull requests", + "url": "https://github.com/hapijs/lab/pull/219" + } + ], + "number": 27, + "url": "https://github.com/hapijs/lab/milestone/27", + "version": "4.5.1" + }, + { + "date": "2014-09-24T19:39:53Z", + "id": 791889, + "issues": [ + { + "id": 43323172, + "labels": ["feature"], + "number": 215, + "title": "Add optional timeouts on before(Each), after(Each)", + "url": "https://github.com/hapijs/lab/pull/215" + }, + { + "id": 42701627, + "labels": ["feature"], + "number": 207, + "title": "Fix #178: Add sourcemaps support", + "url": "https://github.com/hapijs/lab/pull/207" + }, + { + "id": 41792408, + "labels": ["feature"], + "number": 178, + "title": "Code coverage with sourcemaps support", + "url": "https://github.com/hapijs/lab/issues/178" + } + ], + "number": 26, + "url": "https://github.com/hapijs/lab/milestone/26", + "version": "4.5.0" + }, + { + "date": "2014-09-16T16:44:16Z", + "id": 790004, + "issues": [ + { + "id": 42893421, + "labels": ["bug"], + "number": 212, + "title": "Fix #209: omit undefined options", + "url": "https://github.com/hapijs/lab/pull/212" + }, + { + "id": 42834797, + "labels": ["bug"], + "number": 209, + "title": "code error results in all tests passing", + "url": "https://github.com/hapijs/lab/issues/209" + } + ], + "number": 25, + "url": "https://github.com/hapijs/lab/milestone/25", + "version": "4.4.4" + }, + { + "date": "2014-09-15T14:54:23Z", + "id": 787951, + "issues": [ + { + "id": 42735514, + "labels": ["bug"], + "number": 208, + "title": "Support multiple tests from the command line.", + "url": "https://github.com/hapijs/lab/pull/208" + } + ], + "number": 24, + "url": "https://github.com/hapijs/lab/milestone/24", + "version": "4.4.3" + }, + { + "date": "2014-09-12T18:39:19Z", + "id": 787890, + "issues": [ + { + "id": 42656105, + "labels": ["bug"], + "number": 205, + "title": "Output and leaks are honored", + "url": "https://github.com/hapijs/lab/pull/205" + }, + { + "id": 42656033, + "labels": ["bug"], + "number": 204, + "title": "CLI: -o not honored", + "url": "https://github.com/hapijs/lab/issues/204" + } + ], + "number": 23, + "url": "https://github.com/hapijs/lab/milestone/23", + "version": "4.4.2" + }, + { + "date": "2014-09-12T17:43:55Z", + "id": 787777, + "issues": [ + { + "id": 42651684, + "labels": ["bug"], + "number": 203, + "title": "Support junit as reporter on cli", + "url": "https://github.com/hapijs/lab/pull/203" + }, + { + "id": 42646576, + "labels": ["bug"], + "number": 200, + "title": "junit reporter unavailable", + "url": "https://github.com/hapijs/lab/issues/200" + } + ], + "number": 22, + "url": "https://github.com/hapijs/lab/milestone/22", + "version": "4.4.1" + }, + { + "date": "2014-09-12T16:16:01Z", + "id": 778915, + "issues": [ + { + "id": 42643607, + "labels": ["feature"], + "number": 199, + "title": "Add --ignore option and document alias arguments", + "url": "https://github.com/hapijs/lab/pull/199" + }, + { + "id": 42642279, + "labels": ["test"], + "number": 198, + "title": "Add test for unknown arguments", + "url": "https://github.com/hapijs/lab/pull/198" + }, + { + "id": 42639125, + "labels": ["feature"], + "number": 197, + "title": "Restrict CLI reporter checks and add usage on errors", + "url": "https://github.com/hapijs/lab/pull/197" + }, + { + "id": 42638958, + "labels": ["feature"], + "number": 196, + "title": "Globals", + "url": "https://github.com/hapijs/lab/issues/196" + }, + { + "id": 42636264, + "labels": ["dependency"], + "number": 193, + "title": "Upping to bossy 1.0.0", + "url": "https://github.com/hapijs/lab/pull/193" + }, + { + "id": 42483561, + "labels": ["dependency"], + "number": 192, + "title": "Switching from optimist to bossy", + "url": "https://github.com/hapijs/lab/pull/192" + }, + { + "id": 42483446, + "labels": ["dependency"], + "number": 191, + "title": "Switch from optimist to bossy", + "url": "https://github.com/hapijs/lab/issues/191" + }, + { + "id": 42206408, + "labels": ["feature"], + "number": 187, + "title": "Added clover reporter", + "url": "https://github.com/hapijs/lab/pull/187" + } + ], + "number": 21, + "url": "https://github.com/hapijs/lab/milestone/21", + "version": "4.4.0" + }, + { + "date": "2014-09-04T19:17:18Z", + "id": 766654, + "issues": [ + { + "id": 41966889, + "labels": ["feature"], + "number": 182, + "title": "Adding lcov format reporter", + "url": "https://github.com/hapijs/lab/pull/182" + }, + { + "id": 41950278, + "labels": ["documentation"], + "number": 180, + "title": "Stray asterisk in README", + "url": "https://github.com/hapijs/lab/issues/180" + }, + { + "id": 41828997, + "labels": ["test"], + "number": 179, + "title": "Add tests for coverage that throws", + "url": "https://github.com/hapijs/lab/pull/179" + }, + { + "id": 36653773, + "labels": ["feature"], + "number": 109, + "title": "Option to output coverage in lcov format", + "url": "https://github.com/hapijs/lab/issues/109" + } + ], + "number": 20, + "url": "https://github.com/hapijs/lab/milestone/20", + "version": "4.3.0" + }, + { + "date": "2014-08-26T21:18:31Z", + "id": 760674, + "issues": [ + { + "id": 41202105, + "labels": ["feature"], + "number": 176, + "title": "Adding test run data to html report", + "url": "https://github.com/hapijs/lab/pull/176" + }, + { + "id": 41097110, + "labels": ["test"], + "number": 175, + "title": "Cleanup tests for timeout overrides", + "url": "https://github.com/hapijs/lab/pull/175" + }, + { + "id": 40969785, + "labels": ["feature"], + "number": 174, + "title": "Add lines covered and not covered to the CC report", + "url": "https://github.com/hapijs/lab/pull/174" + }, + { + "id": 38036162, + "labels": ["feature"], + "number": 118, + "title": "Way to get coverage report in HTML at the same time as console", + "url": "https://github.com/hapijs/lab/issues/118" + } + ], + "number": 19, + "url": "https://github.com/hapijs/lab/milestone/19", + "version": "4.2.0" + }, + { + "date": "2014-08-20T21:21:08Z", + "id": 752740, + "issues": [ + { + "id": 40746047, + "labels": [], + "number": 172, + "title": "Upping to version 4.1.0", + "url": "https://github.com/hapijs/lab/pull/172" + }, + { + "id": 40745472, + "labels": ["release notes"], + "number": 171, + "title": "4.1.0 Release Notes", + "url": "https://github.com/hapijs/lab/issues/171" + }, + { + "id": 40626256, + "labels": ["documentation"], + "number": 168, + "title": "updated README to cover JUnit reporter", + "url": "https://github.com/hapijs/lab/pull/168" + }, + { + "id": 40621859, + "labels": ["documentation"], + "number": 167, + "title": "Document JUnit reporter", + "url": "https://github.com/hapijs/lab/issues/167" + }, + { + "id": 40578983, + "labels": ["feature"], + "number": 166, + "title": "Added junit reporter", + "url": "https://github.com/hapijs/lab/pull/166" + }, + { + "id": 40469258, + "labels": ["feature"], + "number": 165, + "title": "Junit output", + "url": "https://github.com/hapijs/lab/issues/165" + }, + { + "id": 40456605, + "labels": ["feature"], + "number": 164, + "title": "Feature - Prevent clobbered timer globals from interfering with runner", + "url": "https://github.com/hapijs/lab/pull/164" + }, + { + "id": 40395473, + "labels": ["feature"], + "number": 163, + "title": "Updating TAP reporter to specification version 13", + "url": "https://github.com/hapijs/lab/pull/163" + }, + { + "id": 40386162, + "labels": ["feature"], + "number": 162, + "title": "cli override. Closes #161", + "url": "https://github.com/hapijs/lab/pull/162" + }, + { + "id": 40383421, + "labels": ["feature"], + "number": 161, + "title": "Allow setting CLI options programatically ", + "url": "https://github.com/hapijs/lab/issues/161" + }, + { + "id": 40271367, + "labels": ["bug"], + "number": 159, + "title": "Detect missing exports.lab in the cli runner", + "url": "https://github.com/hapijs/lab/pull/159" + }, + { + "id": 40162316, + "labels": ["bug"], + "number": 157, + "title": "Handle tests without a \"exports.lab\" gracefully", + "url": "https://github.com/hapijs/lab/issues/157" + }, + { + "id": 38222959, + "labels": ["feature"], + "number": 119, + "title": "Duration of tests shown via TAP", + "url": "https://github.com/hapijs/lab/issues/119" + } + ], + "number": 18, + "url": "https://github.com/hapijs/lab/milestone/18", + "version": "4.1.0" + }, + { + "date": "2014-08-13T19:41:04Z", + "id": 748101, + "issues": [ + { + "id": 40086596, + "labels": ["bug"], + "number": 156, + "title": "Remove skipped tests from total run count", + "url": "https://github.com/hapijs/lab/pull/156" + }, + { + "id": 40086439, + "labels": ["documentation"], + "number": 155, + "title": "Clarify how `only` behaves", + "url": "https://github.com/hapijs/lab/issues/155" + }, + { + "id": 40080381, + "labels": ["bug"], + "number": 154, + "title": "Skipped tests still reported on console reporter as being run", + "url": "https://github.com/hapijs/lab/issues/154" + }, + { + "id": 40005417, + "labels": ["bug"], + "number": 152, + "title": "Set env variable immediately in cli", + "url": "https://github.com/hapijs/lab/pull/152" + }, + { + "id": 40005337, + "labels": ["bug"], + "number": 151, + "title": "Environment not set before require when using CLI", + "url": "https://github.com/hapijs/lab/issues/151" + }, + { + "id": 39989543, + "labels": ["bug"], + "number": 150, + "title": "Default to test environment", + "url": "https://github.com/hapijs/lab/pull/150" + }, + { + "id": 39963220, + "labels": ["bug"], + "number": 149, + "title": "Changed session errors to script errors.", + "url": "https://github.com/hapijs/lab/pull/149" + }, + { + "id": 39941911, + "labels": ["bug"], + "number": 148, + "title": "Environment set too late", + "url": "https://github.com/hapijs/lab/issues/148" + }, + { + "id": 39866655, + "labels": ["dependency"], + "number": 147, + "title": "Replace async with items", + "url": "https://github.com/hapijs/lab/pull/147" + }, + { + "id": 39866639, + "labels": ["bug"], + "number": 146, + "title": "Reword session errors to test script errors", + "url": "https://github.com/hapijs/lab/issues/146" + }, + { + "id": 39864977, + "labels": ["feature"], + "number": 145, + "title": "Replace use of async with items", + "url": "https://github.com/hapijs/lab/issues/145" + } + ], + "number": 17, + "url": "https://github.com/hapijs/lab/milestone/17", + "version": "4.0.2" + }, + { + "date": "2014-08-08T21:21:59Z", + "id": 746489, + "issues": [ + { + "id": 39861780, + "labels": ["test"], + "number": 144, + "title": "Fixing issue with missing labCov reference", + "url": "https://github.com/hapijs/lab/pull/144" + }, + { + "id": 39776942, + "labels": ["bug"], + "number": 143, + "title": "lab throws with ReferenceError: __$$labCov is not defined when run with coverage enabled and no code to cover", + "url": "https://github.com/hapijs/lab/issues/143" + }, + { + "id": 39767021, + "labels": [], + "number": 141, + "title": "Add test for while coverage", + "url": "https://github.com/hapijs/lab/pull/141" + }, + { + "id": 39747186, + "labels": ["bug"], + "number": 140, + "title": "Default to null for colors on cli for using tty capabilities", + "url": "https://github.com/hapijs/lab/pull/140" + }, + { + "id": 39747142, + "labels": ["bug"], + "number": 139, + "title": "CLI colors aren't defaulted to tty capabilities", + "url": "https://github.com/hapijs/lab/issues/139" + } + ], + "number": 15, + "url": "https://github.com/hapijs/lab/milestone/15", + "version": "4.0.1" + }, + { + "date": "2014-08-07T16:13:16Z", + "id": 663888, + "issues": [ + { + "id": 39658431, + "labels": ["breaking changes", "release notes"], + "number": 138, + "title": "4.0.0 Release Notes", + "url": "https://github.com/hapijs/lab/issues/138" + }, + { + "id": 39654396, + "labels": ["documentation"], + "number": 137, + "title": "Moving to authors file and adding my name", + "url": "https://github.com/hapijs/lab/pull/137" + }, + { + "id": 39649578, + "labels": ["feature"], + "number": 136, + "title": "Notebook updates", + "url": "https://github.com/hapijs/lab/pull/136" + }, + { + "id": 39641787, + "labels": ["test"], + "number": 135, + "title": "Fix for paths with hyphens and increase timeout", + "url": "https://github.com/hapijs/lab/pull/135" + }, + { + "id": 39565637, + "labels": ["test"], + "number": 133, + "title": "Cli tests", + "url": "https://github.com/hapijs/lab/pull/133" + }, + { + "id": 39380767, + "labels": ["documentation"], + "number": 132, + "title": "Update readme to reflect all the latest cli options", + "url": "https://github.com/hapijs/lab/issues/132" + }, + { + "id": 39319190, + "labels": ["test"], + "number": 130, + "title": "Add lib/cli.js to coverage tests", + "url": "https://github.com/hapijs/lab/issues/130" + }, + { + "id": 39319162, + "labels": ["feature"], + "number": 129, + "title": "Expose notebook.errors in console reporter", + "url": "https://github.com/hapijs/lab/issues/129" + }, + { + "id": 39253065, + "labels": ["feature", "breaking changes", "test"], + "number": 128, + "title": "Refactor to test lab with lab", + "url": "https://github.com/hapijs/lab/pull/128" + }, + { + "id": 38908814, + "labels": ["bug"], + "number": 126, + "title": "Checking leaks on non-enumerable properties", + "url": "https://github.com/hapijs/lab/pull/126" + }, + { + "id": 38536508, + "labels": ["breaking changes"], + "number": 124, + "title": "4.0 Breaking Change", + "url": "https://github.com/hapijs/lab/issues/124" + }, + { + "id": 38373989, + "labels": ["feature"], + "number": 123, + "title": "Add new ES6 types to knownGlobals", + "url": "https://github.com/hapijs/lab/issues/123" + }, + { + "id": 38025716, + "labels": ["feature"], + "number": 117, + "title": "\"Infinite\" Timeout", + "url": "https://github.com/hapijs/lab/issues/117" + }, + { + "id": 37936349, + "labels": ["feature"], + "number": 116, + "title": "Add describe.skip/only and it.skip/only", + "url": "https://github.com/hapijs/lab/pull/116" + }, + { + "id": 37401956, + "labels": ["feature"], + "number": 113, + "title": "Repeat failure count at end of errors listing.", + "url": "https://github.com/hapijs/lab/pull/113" + }, + { + "id": 36943098, + "labels": ["feature"], + "number": 110, + "title": "Lab.test.only and Lab.test.skip", + "url": "https://github.com/hapijs/lab/issues/110" + }, + { + "id": 36632812, + "labels": ["bug"], + "number": 108, + "title": "Adding coverage tests skew the line-numbers in stack statements.", + "url": "https://github.com/hapijs/lab/issues/108" + }, + { + "id": 36546413, + "labels": ["bug"], + "number": 107, + "title": "Lab doesn't show the assertion message when an assertion fails", + "url": "https://github.com/hapijs/lab/issues/107" + }, + { + "id": 35528598, + "labels": ["feature"], + "number": 104, + "title": "Display Test duration once completed (even with errors)", + "url": "https://github.com/hapijs/lab/pull/104" + }, + { + "id": 34608812, + "labels": ["bug"], + "number": 103, + "title": "tests should fail if before etc call back with an error or crash", + "url": "https://github.com/hapijs/lab/issues/103" + }, + { + "id": 34177983, + "labels": ["feature"], + "number": 100, + "title": "Fix #99: ignore custom globals in leak detection", + "url": "https://github.com/hapijs/lab/pull/100" + }, + { + "id": 33854299, + "labels": ["feature"], + "number": 98, + "title": "Add total missing lines to the coverage reporter", + "url": "https://github.com/hapijs/lab/issues/98" + }, + { + "id": 30335034, + "labels": ["test"], + "number": 60, + "title": "Add tests", + "url": "https://github.com/hapijs/lab/issues/60" + } + ], + "number": 13, + "url": "https://github.com/hapijs/lab/milestone/13", + "version": "4.0.0" + }, + { + "date": "2014-08-01T20:44:24Z", + "id": 740178, + "issues": [ + { + "id": 39324579, + "labels": ["documentation"], + "number": 131, + "title": "Rename spumko to hapijs", + "url": "https://github.com/hapijs/lab/issues/131" + } + ], + "number": 14, + "url": "https://github.com/hapijs/lab/milestone/14", + "version": "3.2.3" + }, + { + "date": "2014-05-20T00:18:00Z", + "id": 663885, + "issues": [], + "number": 12, + "url": "https://github.com/hapijs/lab/milestone/12", + "version": "3.2.1" + }, + { + "date": "2014-05-20T00:08:16Z", + "id": 663813, + "issues": [ + { + "id": 33697884, + "labels": ["test"], + "number": 96, + "title": "simplify package.json example", + "url": "https://github.com/hapijs/lab/pull/96" + }, + { + "id": 33486713, + "labels": ["feature"], + "number": 94, + "title": "Add chai optional message to output", + "url": "https://github.com/hapijs/lab/pull/94" + }, + { + "id": 32851227, + "labels": ["feature"], + "number": 90, + "title": "Allow ability to execute specific subset of tests", + "url": "https://github.com/hapijs/lab/issues/90" + } + ], + "number": 11, + "url": "https://github.com/hapijs/lab/milestone/11", + "version": "3.2.0" + }, + { + "date": "2014-05-19T22:08:21Z", + "id": 646150, + "issues": [ + { + "id": 33231954, + "labels": ["feature"], + "number": 92, + "title": "Prints execution time for each test on console", + "url": "https://github.com/hapijs/lab/pull/92" + }, + { + "id": 33231122, + "labels": ["bug"], + "number": 91, + "title": "Coverage file filter function modified to support Windows paths #32", + "url": "https://github.com/hapijs/lab/pull/91" + }, + { + "id": 19241813, + "labels": ["bug"], + "number": 32, + "title": "Coverage not working on Windows", + "url": "https://github.com/hapijs/lab/issues/32" + } + ], + "number": 10, + "url": "https://github.com/hapijs/lab/milestone/10", + "version": "3.1.4" + }, + { + "date": "2014-05-01T15:25:16Z", + "id": 641022, + "issues": [ + { + "id": 32621368, + "labels": ["bug"], + "number": 88, + "title": "updated double call check on done to provide error to internals.output", + "url": "https://github.com/hapijs/lab/pull/88" + } + ], + "number": 9, + "url": "https://github.com/hapijs/lab/milestone/9", + "version": "3.1.1" + }, + { + "date": "2014-04-26T03:59:09Z", + "id": 615836, + "issues": [ + { + "id": 32274810, + "labels": ["feature"], + "number": 83, + "title": "Ability to skip coverage for a code section", + "url": "https://github.com/hapijs/lab/issues/83" + }, + { + "id": 32087670, + "labels": ["feature"], + "number": 81, + "title": "Add command like option to force color output", + "url": "https://github.com/hapijs/lab/pull/81" + }, + { + "id": 31724397, + "labels": ["feature"], + "number": 78, + "title": "Support passing 'done' as async callback", + "url": "https://github.com/hapijs/lab/pull/78" + }, + { + "id": 31706385, + "labels": ["bug"], + "number": 77, + "title": "Show error message not just for boom", + "url": "https://github.com/hapijs/lab/issues/77" + }, + { + "id": 31655768, + "labels": ["feature"], + "number": 76, + "title": "Expose Chai's assert flavour. Closes #75.", + "url": "https://github.com/hapijs/lab/pull/76" + } + ], + "number": 8, + "url": "https://github.com/hapijs/lab/milestone/8", + "version": "3.1.0" + }, + { + "date": "2014-03-31T18:35:45Z", + "id": 612953, + "issues": [ + { + "id": 30536301, + "labels": ["feature"], + "number": 71, + "title": "Todo tests", + "url": "https://github.com/hapijs/lab/issues/71" + }, + { + "id": 30533973, + "labels": ["feature"], + "number": 70, + "title": "Skip test or experiment", + "url": "https://github.com/hapijs/lab/issues/70" + }, + { + "id": 30474999, + "labels": ["feature"], + "number": 69, + "title": "Allow setting per test of experiment timeout", + "url": "https://github.com/hapijs/lab/issues/69" + }, + { + "id": 30474628, + "labels": ["feature"], + "number": 68, + "title": "Allow setting parallel execution", + "url": "https://github.com/hapijs/lab/issues/68" + }, + { + "id": 30474618, + "labels": ["bug", "breaking changes"], + "number": 67, + "title": "Combine spec+console+summary with -s/-v flags", + "url": "https://github.com/hapijs/lab/issues/67" + }, + { + "id": 30464633, + "labels": ["bug"], + "number": 66, + "title": "before/beforeEach/afterEach/after not run in correct order when using nested experiments", + "url": "https://github.com/hapijs/lab/issues/66" + }, + { + "id": 30461472, + "labels": ["breaking changes"], + "number": 65, + "title": "Rename -g to -l and make it disable detection", + "url": "https://github.com/hapijs/lab/issues/65" + }, + { + "id": 30459862, + "labels": ["breaking changes"], + "number": 64, + "title": "Remove coverage reporter", + "url": "https://github.com/hapijs/lab/issues/64" + }, + { + "id": 30459739, + "labels": ["non issue"], + "number": 63, + "title": "Remove verbose mode", + "url": "https://github.com/hapijs/lab/issues/63" + }, + { + "id": 30459007, + "labels": ["feature"], + "number": 62, + "title": "Tap reporter", + "url": "https://github.com/hapijs/lab/issues/62" + }, + { + "id": 30001872, + "labels": ["feature"], + "number": 56, + "title": "spec style formatting", + "url": "https://github.com/hapijs/lab/pull/56" + }, + { + "id": 29997503, + "labels": ["bug"], + "number": 55, + "title": "fixed failure count so that non-zero exit code is return on test failure", + "url": "https://github.com/hapijs/lab/pull/55" + }, + { + "id": 29983300, + "labels": ["feature"], + "number": 53, + "title": "Support verbose mode for console", + "url": "https://github.com/hapijs/lab/pull/53" + }, + { + "id": 28733334, + "labels": ["feature"], + "number": 48, + "title": "Adding spec reporter", + "url": "https://github.com/hapijs/lab/pull/48" + } + ], + "number": 7, + "url": "https://github.com/hapijs/lab/milestone/7", + "version": "3.0.0" + }, + { + "date": "2022-05-07T00:51:54Z", + "id": 7931437, + "issues": [ + { + "id": 1222487373, + "labels": ["bug"], + "number": 1047, + "title": "Fix coverage ignore flag when ts comments are removed", + "url": "https://github.com/hapijs/lab/pull/1047" + }, + { + "id": 1222018052, + "labels": ["bug"], + "number": 1046, + "title": "Report \"Type T has no properties in common with type U\" as a type error", + "url": "https://github.com/hapijs/lab/issues/1046" + } + ], + "number": 191, + "url": "https://github.com/hapijs/lab/milestone/191", + "version": "2.47.1" + }, + { + "date": "2014-03-28T08:09:25Z", + "id": 612952, + "issues": [ + { + "id": 30369076, + "labels": ["bug"], + "number": 61, + "title": "Remove SwitchCase from statement coverage", + "url": "https://github.com/hapijs/lab/issues/61" + } + ], + "number": 6, + "url": "https://github.com/hapijs/lab/milestone/6", + "version": "2.0.2" + }, + { + "date": "2014-03-28T08:07:52Z", + "id": 603049, + "issues": [ + { + "id": 29983335, + "labels": ["feature", "breaking changes"], + "number": 54, + "title": "Move coverage functionality internally", + "url": "https://github.com/hapijs/lab/issues/54" + } + ], + "number": 5, + "url": "https://github.com/hapijs/lab/milestone/5", + "version": "2.0.0" + }, + { + "date": "2014-03-19T18:59:17Z", + "id": 591715, + "issues": [ + { + "id": 29757923, + "labels": ["feature"], + "number": 51, + "title": "update chai dependency, fix deprecation warning in chai", + "url": "https://github.com/hapijs/lab/pull/51" + } + ], + "number": 4, + "url": "https://github.com/hapijs/lab/milestone/4", + "version": "1.9.0" + }, + { + "date": "2014-03-09T05:54:16Z", + "id": 580311, + "issues": [ + { + "id": 29037509, + "labels": ["feature"], + "number": 49, + "title": "Allow specifying tests by id", + "url": "https://github.com/hapijs/lab/issues/49" + }, + { + "id": 27671956, + "labels": ["feature"], + "number": 41, + "title": "Support beforeEach() (and afterEach())", + "url": "https://github.com/hapijs/lab/issues/41" + } + ], + "number": 2, + "url": "https://github.com/hapijs/lab/milestone/2", + "version": "1.8.0" + }, + { + "date": "2014-03-06T20:48:21Z", + "id": 589808, + "issues": [ + { + "id": 28677395, + "labels": ["bug"], + "number": 47, + "title": "Fixed branch checking", + "url": "https://github.com/hapijs/lab/pull/47" + } + ], + "number": 3, + "url": "https://github.com/hapijs/lab/milestone/3", + "version": "1.7.1" + }, + { + "date": "2014-02-25T20:52:41Z", + "id": 580274, + "issues": [ + { + "id": 28280164, + "labels": ["documentation"], + "number": 46, + "title": "update readme", + "url": "https://github.com/hapijs/lab/pull/46" + }, + { + "id": 28279411, + "labels": ["bug"], + "number": 45, + "title": "Fix double domain implicit enter()", + "url": "https://github.com/hapijs/lab/issues/45" + }, + { + "id": 27988710, + "labels": ["documentation"], + "number": 43, + "title": "fix for readme", + "url": "https://github.com/hapijs/lab/issues/43" + }, + { + "id": 27673060, + "labels": ["feature"], + "number": 42, + "title": "add beforeEach() and afterEach()", + "url": "https://github.com/hapijs/lab/pull/42" + } + ], + "number": 1, + "url": "https://github.com/hapijs/lab/milestone/1", + "version": "1.7.0" + } ] diff --git a/generated/modules/lab/info.json b/generated/modules/lab/info.json index 3d4bc4d9..8442427b 100644 --- a/generated/modules/lab/info.json +++ b/generated/modules/lab/info.json @@ -1,28 +1,28 @@ { - "api": true, - "forks": 177, - "isPlugin": false, - "link": "https://github.com/hapijs/lab", - "name": "lab", - "package": "@hapi/lab", - "slogan": "Node test utility.", - "sloganHtml": "Node test utility.", - "stars": 738, - "updated": "2026-03-26T19:23:31Z", - "versions": [ - { - "branch": "v25.3.2", - "license": "BSD", - "name": "25.3.2", - "node": ">= 16" - }, - { - "branch": "v26.0.1", - "license": "BSD", - "name": "26.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["26.0.1", "25.3.2"], - "latestVersion": "26.x.x" + "api": true, + "forks": 177, + "isPlugin": false, + "latestVersion": "26.x.x", + "link": "https://github.com/hapijs/lab", + "name": "lab", + "package": "@hapi/lab", + "slogan": "Node test utility.", + "sloganHtml": "Node test utility.", + "stars": 739, + "updated": "2026-03-26T19:23:31Z", + "versions": [ + { + "branch": "v25.3.2", + "license": "BSD", + "name": "25.3.2", + "node": ">= 16" + }, + { + "branch": "v26.0.1", + "license": "BSD", + "name": "26.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["26.0.1", "25.3.2"] } diff --git a/generated/modules/log/changelog.json b/generated/modules/log/changelog.json index 88bd2505..682022fa 100644 --- a/generated/modules/log/changelog.json +++ b/generated/modules/log/changelog.json @@ -1,73 +1,73 @@ [ - { - "date": "2023-02-11T20:20:25Z", - "id": 8358648, - "issues": [ - { - "id": 1551797950, - "labels": ["dependency"], - "number": 28, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/log/pull/28" - } - ], - "number": 5, - "url": "https://github.com/hapijs/log/milestone/5", - "version": "2.0.1" - }, - { - "date": "2022-08-29T03:28:55Z", - "id": 8206733, - "issues": [ - { - "id": 1307216549, - "labels": ["breaking changes", "dependency", "feature", "test"], - "number": 26, - "title": "Support hapi v21, drop hapi v19, test ESM support", - "url": "https://github.com/hapijs/log/pull/26" - }, - { - "id": 1253216154, - "labels": ["breaking changes", "dependency"], - "number": 25, - "title": "Drop node v12 support", - "url": "https://github.com/hapijs/log/pull/25" - } - ], - "number": 4, - "url": "https://github.com/hapijs/log/milestone/4", - "version": "2.0.0" - }, - { - "date": "2021-05-24T00:23:44Z", - "id": 6745674, - "issues": [ - { - "id": 883246873, - "labels": ["bug", "feature"], - "number": 20, - "title": "Add pino logger and minor fixes", - "url": "https://github.com/hapijs/log/pull/20" - } - ], - "number": 1, - "url": "https://github.com/hapijs/log/milestone/1", - "version": "1.0.0-beta" - }, - { - "date": "2021-07-19T02:54:59Z", - "id": 6785094, - "issues": [ - { - "id": 941498128, - "labels": ["feature"], - "number": 21, - "title": "Support changing log level after server start", - "url": "https://github.com/hapijs/log/pull/21" - } - ], - "number": 2, - "url": "https://github.com/hapijs/log/milestone/2", - "version": "1.0.0" - } + { + "date": "2023-02-11T20:20:25Z", + "id": 8358648, + "issues": [ + { + "id": 1551797950, + "labels": ["dependency"], + "number": 28, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/log/pull/28" + } + ], + "number": 5, + "url": "https://github.com/hapijs/log/milestone/5", + "version": "2.0.1" + }, + { + "date": "2022-08-29T03:28:55Z", + "id": 8206733, + "issues": [ + { + "id": 1307216549, + "labels": ["breaking changes", "dependency", "feature", "test"], + "number": 26, + "title": "Support hapi v21, drop hapi v19, test ESM support", + "url": "https://github.com/hapijs/log/pull/26" + }, + { + "id": 1253216154, + "labels": ["breaking changes", "dependency"], + "number": 25, + "title": "Drop node v12 support", + "url": "https://github.com/hapijs/log/pull/25" + } + ], + "number": 4, + "url": "https://github.com/hapijs/log/milestone/4", + "version": "2.0.0" + }, + { + "date": "2021-05-24T00:23:44Z", + "id": 6745674, + "issues": [ + { + "id": 883246873, + "labels": ["bug", "feature"], + "number": 20, + "title": "Add pino logger and minor fixes", + "url": "https://github.com/hapijs/log/pull/20" + } + ], + "number": 1, + "url": "https://github.com/hapijs/log/milestone/1", + "version": "1.0.0-beta" + }, + { + "date": "2021-07-19T02:54:59Z", + "id": 6785094, + "issues": [ + { + "id": 941498128, + "labels": ["feature"], + "number": 21, + "title": "Support changing log level after server start", + "url": "https://github.com/hapijs/log/pull/21" + } + ], + "number": 2, + "url": "https://github.com/hapijs/log/milestone/2", + "version": "1.0.0" + } ] diff --git a/generated/modules/log/info.json b/generated/modules/log/info.json index a43e6536..15f013fd 100644 --- a/generated/modules/log/info.json +++ b/generated/modules/log/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 5, - "isPlugin": true, - "link": "https://github.com/hapijs/log", - "name": "log", - "package": "@hapi/log", - "slogan": "Logging for hapi framework.", - "sloganHtml": "Logging for hapi framework.", - "stars": 6, - "updated": "2024-10-23T15:40:54Z", - "versions": [ - { - "branch": "v2.0.1", - "license": "BSD", - "name": "2.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["2.0.1"], - "latestVersion": "2.x.x" + "api": true, + "forks": 5, + "isPlugin": true, + "latestVersion": "2.x.x", + "link": "https://github.com/hapijs/log", + "name": "log", + "package": "@hapi/log", + "slogan": "Logging for hapi framework.", + "sloganHtml": "Logging for hapi framework.", + "stars": 6, + "updated": "2024-10-23T15:40:54Z", + "versions": [ + { + "branch": "v2.0.1", + "license": "BSD", + "name": "2.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["2.0.1"] } diff --git a/generated/modules/mimos/changelog.json b/generated/modules/mimos/changelog.json index 4a19528e..65b3f4b8 100644 --- a/generated/modules/mimos/changelog.json +++ b/generated/modules/mimos/changelog.json @@ -1,318 +1,318 @@ [ - { - "date": "2023-02-11T20:23:57Z", - "id": 7956539, - "issues": [ - { - "id": 1551774099, - "labels": [], - "number": 42, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/mimos/pull/42" - } - ], - "number": 21, - "url": "https://github.com/hapijs/mimos/milestone/21", - "version": "7.0.1" - }, - { - "date": "2022-05-23T03:59:56Z", - "id": 7956538, - "issues": [ - { - "id": 1229119741, - "labels": ["breaking changes", "dependency"], - "number": 41, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/mimos/pull/41" - } - ], - "number": 20, - "url": "https://github.com/hapijs/mimos/milestone/20", - "version": "7.0.0" - }, - { - "date": "2022-05-09T03:24:11Z", - "id": 6731173, - "issues": [ - { - "id": 855350430, - "labels": ["breaking changes", "feature", "types"], - "number": 37, - "title": "Add Typescript typings + rework", - "url": "https://github.com/hapijs/mimos/pull/37" - } - ], - "number": 19, - "url": "https://github.com/hapijs/mimos/milestone/19", - "version": "6.0.0" - }, - { - "date": "2020-01-05T06:11:22Z", - "id": 4973400, - "issues": [ - { - "id": 545376403, - "labels": ["breaking changes", "dependency"], - "number": 32, - "title": "Only node 12", - "url": "https://github.com/hapijs/mimos/issues/32" - } - ], - "number": 17, - "url": "https://github.com/hapijs/mimos/milestone/17", - "version": "5.0.0" - }, - { - "date": "2019-08-15T06:16:25Z", - "id": 4192147, - "issues": [ - { - "id": 480901730, - "labels": ["dependency"], - "number": 27, - "title": "Update deps", - "url": "https://github.com/hapijs/mimos/issues/27" - } - ], - "number": 15, - "url": "https://github.com/hapijs/mimos/milestone/15", - "version": "4.1.1" - }, - { - "date": "2019-04-02T05:49:06Z", - "id": 3792286, - "issues": [ - { - "id": 428032730, - "labels": ["dependency"], - "number": 25, - "title": "Change module namespace", - "url": "https://github.com/hapijs/mimos/issues/25" - } - ], - "number": 12, - "url": "https://github.com/hapijs/mimos/milestone/12", - "version": "4.1.0" - }, - { - "date": "2018-11-03T00:32:56Z", - "id": 3788794, - "issues": [ - { - "id": 377002414, - "labels": ["non issue"], - "number": 22, - "title": "Remove engines", - "url": "https://github.com/hapijs/mimos/issues/22" - } - ], - "number": 11, - "url": "https://github.com/hapijs/mimos/milestone/11", - "version": "4.0.2" - }, - { - "date": "2018-11-01T18:36:01Z", - "id": 2794105, - "issues": [ - { - "id": 376516046, - "labels": ["dependency"], + { + "date": "2023-02-11T20:23:57Z", + "id": 7956539, + "issues": [ + { + "id": 1551774099, + "labels": [], + "number": 42, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/mimos/pull/42" + } + ], "number": 21, - "title": "Update deps.", - "url": "https://github.com/hapijs/mimos/issues/21" - } - ], - "number": 10, - "url": "https://github.com/hapijs/mimos/milestone/10", - "version": "4.0.1" - }, - { - "date": "2017-09-26T08:37:52Z", - "id": 1910247, - "issues": [ - { - "id": 260537772, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/mimos/milestone/21", + "version": "7.0.1" + }, + { + "date": "2022-05-23T03:59:56Z", + "id": 7956538, + "issues": [ + { + "id": 1229119741, + "labels": ["breaking changes", "dependency"], + "number": 41, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/mimos/pull/41" + } + ], "number": 20, - "title": "node 8", - "url": "https://github.com/hapijs/mimos/issues/20" - } - ], - "number": 9, - "url": "https://github.com/hapijs/mimos/milestone/9", - "version": "4.0.0" - }, - { - "date": "2019-04-02T05:36:51Z", - "id": 4168250, - "issues": [ - { - "id": 424746246, - "labels": ["lts"], - "number": 24, - "title": "Commercial version of v3 branch", - "url": "https://github.com/hapijs/mimos/issues/24" - } - ], - "number": 13, - "url": "https://github.com/hapijs/mimos/milestone/13", - "version": "3.1.0" - }, - { - "date": "2016-07-28T19:02:41Z", - "id": 1786010, - "issues": [ - { - "id": 168171498, - "labels": ["documentation"], + "url": "https://github.com/hapijs/mimos/milestone/20", + "version": "7.0.0" + }, + { + "date": "2022-05-09T03:24:11Z", + "id": 6731173, + "issues": [ + { + "id": 855350430, + "labels": ["breaking changes", "feature", "types"], + "number": 37, + "title": "Add Typescript typings + rework", + "url": "https://github.com/hapijs/mimos/pull/37" + } + ], "number": 19, - "title": "npmignore", - "url": "https://github.com/hapijs/mimos/issues/19" - } - ], - "number": 8, - "url": "https://github.com/hapijs/mimos/milestone/8", - "version": "3.0.3" - }, - { - "date": "2016-05-24T21:04:51Z", - "id": 1756214, - "issues": [ - { - "id": 156170487, - "labels": ["dependency", "test"], - "number": 18, - "title": "Code3", - "url": "https://github.com/hapijs/mimos/pull/18" - } - ], - "number": 7, - "url": "https://github.com/hapijs/mimos/milestone/7", - "version": "3.0.2" - }, - { - "date": "2016-05-09T18:30:05Z", - "id": 1387946, - "issues": [ - { - "id": 153818716, - "labels": ["dependency"], + "url": "https://github.com/hapijs/mimos/milestone/19", + "version": "6.0.0" + }, + { + "date": "2020-01-05T06:11:22Z", + "id": 4973400, + "issues": [ + { + "id": 545376403, + "labels": ["breaking changes", "dependency"], + "number": 32, + "title": "Only node 12", + "url": "https://github.com/hapijs/mimos/issues/32" + } + ], "number": 17, - "title": "Node-6 updates. Closes #16.", - "url": "https://github.com/hapijs/mimos/pull/17" - }, - { - "id": 153818237, - "labels": ["dependency"], - "number": 16, - "title": "Node 6", - "url": "https://github.com/hapijs/mimos/issues/16" - } - ], - "number": 6, - "url": "https://github.com/hapijs/mimos/milestone/6", - "version": "3.0.1" - }, - { - "date": "2015-11-02T05:26:41Z", - "id": 871734, - "issues": [ - { - "id": 114526966, - "labels": ["breaking changes"], - "number": 13, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/mimos/issues/13" - }, - { - "id": 59530184, - "labels": ["dependency"], + "url": "https://github.com/hapijs/mimos/milestone/17", + "version": "5.0.0" + }, + { + "date": "2019-08-15T06:16:25Z", + "id": 4192147, + "issues": [ + { + "id": 480901730, + "labels": ["dependency"], + "number": 27, + "title": "Update deps", + "url": "https://github.com/hapijs/mimos/issues/27" + } + ], + "number": 15, + "url": "https://github.com/hapijs/mimos/milestone/15", + "version": "4.1.1" + }, + { + "date": "2019-04-02T05:49:06Z", + "id": 3792286, + "issues": [ + { + "id": 428032730, + "labels": ["dependency"], + "number": 25, + "title": "Change module namespace", + "url": "https://github.com/hapijs/mimos/issues/25" + } + ], + "number": 12, + "url": "https://github.com/hapijs/mimos/milestone/12", + "version": "4.1.0" + }, + { + "date": "2018-11-03T00:32:56Z", + "id": 3788794, + "issues": [ + { + "id": 377002414, + "labels": ["non issue"], + "number": 22, + "title": "Remove engines", + "url": "https://github.com/hapijs/mimos/issues/22" + } + ], "number": 11, - "title": "Update to Lab 5.x.x", - "url": "https://github.com/hapijs/mimos/pull/11" - }, - { - "id": 58948646, - "labels": ["test"], + "url": "https://github.com/hapijs/mimos/milestone/11", + "version": "4.0.2" + }, + { + "date": "2018-11-01T18:36:01Z", + "id": 2794105, + "issues": [ + { + "id": 376516046, + "labels": ["dependency"], + "number": 21, + "title": "Update deps.", + "url": "https://github.com/hapijs/mimos/issues/21" + } + ], "number": 10, - "title": "Update .travis.yml", - "url": "https://github.com/hapijs/mimos/pull/10" - } - ], - "number": 5, - "url": "https://github.com/hapijs/mimos/milestone/5", - "version": "3.0.0" - }, - { - "date": "2014-11-18T19:33:43Z", - "id": 871714, - "issues": [ - { - "id": 49282860, - "labels": ["bug"], + "url": "https://github.com/hapijs/mimos/milestone/10", + "version": "4.0.1" + }, + { + "date": "2017-09-26T08:37:52Z", + "id": 1910247, + "issues": [ + { + "id": 260537772, + "labels": ["breaking changes"], + "number": 20, + "title": "node 8", + "url": "https://github.com/hapijs/mimos/issues/20" + } + ], + "number": 9, + "url": "https://github.com/hapijs/mimos/milestone/9", + "version": "4.0.0" + }, + { + "date": "2019-04-02T05:36:51Z", + "id": 4168250, + "issues": [ + { + "id": 424746246, + "labels": ["lts"], + "number": 24, + "title": "Commercial version of v3 branch", + "url": "https://github.com/hapijs/mimos/issues/24" + } + ], + "number": 13, + "url": "https://github.com/hapijs/mimos/milestone/13", + "version": "3.1.0" + }, + { + "date": "2016-07-28T19:02:41Z", + "id": 1786010, + "issues": [ + { + "id": 168171498, + "labels": ["documentation"], + "number": 19, + "title": "npmignore", + "url": "https://github.com/hapijs/mimos/issues/19" + } + ], "number": 8, - "title": "Change source from hapi to mimos", - "url": "https://github.com/hapijs/mimos/issues/8" - } - ], - "number": 4, - "url": "https://github.com/hapijs/mimos/milestone/4", - "version": "2.0.2" - }, - { - "date": "2014-11-18T19:21:37Z", - "id": 871685, - "issues": [ - { - "id": 49281404, - "labels": ["feature"], + "url": "https://github.com/hapijs/mimos/milestone/8", + "version": "3.0.3" + }, + { + "date": "2016-05-24T21:04:51Z", + "id": 1756214, + "issues": [ + { + "id": 156170487, + "labels": ["dependency", "test"], + "number": 18, + "title": "Code3", + "url": "https://github.com/hapijs/mimos/pull/18" + } + ], "number": 7, - "title": "Improve performance for testing", - "url": "https://github.com/hapijs/mimos/issues/7" - } - ], - "number": 3, - "url": "https://github.com/hapijs/mimos/milestone/3", - "version": "2.0.1" - }, - { - "date": "2014-11-18T18:57:58Z", - "id": 856879, - "issues": [ - { - "id": 49151857, - "labels": ["feature"], + "url": "https://github.com/hapijs/mimos/milestone/7", + "version": "3.0.2" + }, + { + "date": "2016-05-09T18:30:05Z", + "id": 1387946, + "issues": [ + { + "id": 153818716, + "labels": ["dependency"], + "number": 17, + "title": "Node-6 updates. Closes #16.", + "url": "https://github.com/hapijs/mimos/pull/17" + }, + { + "id": 153818237, + "labels": ["dependency"], + "number": 16, + "title": "Node 6", + "url": "https://github.com/hapijs/mimos/issues/16" + } + ], "number": 6, - "title": "Added ability to override entries in the mime database.", - "url": "https://github.com/hapijs/mimos/pull/6" - } - ], - "number": 2, - "url": "https://github.com/hapijs/mimos/milestone/2", - "version": "2.0.0" - }, - { - "date": "2014-11-07T03:50:51Z", - "id": 811758, - "issues": [ - { - "id": 46775425, - "labels": ["feature"], + "url": "https://github.com/hapijs/mimos/milestone/6", + "version": "3.0.1" + }, + { + "date": "2015-11-02T05:26:41Z", + "id": 871734, + "issues": [ + { + "id": 114526966, + "labels": ["breaking changes"], + "number": 13, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/mimos/issues/13" + }, + { + "id": 59530184, + "labels": ["dependency"], + "number": 11, + "title": "Update to Lab 5.x.x", + "url": "https://github.com/hapijs/mimos/pull/11" + }, + { + "id": 58948646, + "labels": ["test"], + "number": 10, + "title": "Update .travis.yml", + "url": "https://github.com/hapijs/mimos/pull/10" + } + ], "number": 5, - "title": "Transform extension to lower case before searching MIME type", - "url": "https://github.com/hapijs/mimos/pull/5" - }, - { - "id": 46624407, - "labels": ["bug"], + "url": "https://github.com/hapijs/mimos/milestone/5", + "version": "3.0.0" + }, + { + "date": "2014-11-18T19:33:43Z", + "id": 871714, + "issues": [ + { + "id": 49282860, + "labels": ["bug"], + "number": 8, + "title": "Change source from hapi to mimos", + "url": "https://github.com/hapijs/mimos/issues/8" + } + ], "number": 4, - "title": "Uppercase extension causes to return undefined MIME type", - "url": "https://github.com/hapijs/mimos/issues/4" - } - ], - "number": 1, - "url": "https://github.com/hapijs/mimos/milestone/1", - "version": "1.0.1" - } + "url": "https://github.com/hapijs/mimos/milestone/4", + "version": "2.0.2" + }, + { + "date": "2014-11-18T19:21:37Z", + "id": 871685, + "issues": [ + { + "id": 49281404, + "labels": ["feature"], + "number": 7, + "title": "Improve performance for testing", + "url": "https://github.com/hapijs/mimos/issues/7" + } + ], + "number": 3, + "url": "https://github.com/hapijs/mimos/milestone/3", + "version": "2.0.1" + }, + { + "date": "2014-11-18T18:57:58Z", + "id": 856879, + "issues": [ + { + "id": 49151857, + "labels": ["feature"], + "number": 6, + "title": "Added ability to override entries in the mime database.", + "url": "https://github.com/hapijs/mimos/pull/6" + } + ], + "number": 2, + "url": "https://github.com/hapijs/mimos/milestone/2", + "version": "2.0.0" + }, + { + "date": "2014-11-07T03:50:51Z", + "id": 811758, + "issues": [ + { + "id": 46775425, + "labels": ["feature"], + "number": 5, + "title": "Transform extension to lower case before searching MIME type", + "url": "https://github.com/hapijs/mimos/pull/5" + }, + { + "id": 46624407, + "labels": ["bug"], + "number": 4, + "title": "Uppercase extension causes to return undefined MIME type", + "url": "https://github.com/hapijs/mimos/issues/4" + } + ], + "number": 1, + "url": "https://github.com/hapijs/mimos/milestone/1", + "version": "1.0.1" + } ] diff --git a/generated/modules/mimos/info.json b/generated/modules/mimos/info.json index 676df9df..53b2008d 100644 --- a/generated/modules/mimos/info.json +++ b/generated/modules/mimos/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 13, - "isPlugin": false, - "link": "https://github.com/hapijs/mimos", - "name": "mimos", - "package": "@hapi/mimos", - "slogan": "Mime database interface.", - "sloganHtml": "Mime database interface.", - "stars": 20, - "updated": "2024-10-23T21:34:46Z", - "versions": [ - { - "branch": "v7.0.1", - "license": "BSD", - "name": "7.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["7.0.1"], - "latestVersion": "7.x.x" + "api": true, + "forks": 13, + "isPlugin": false, + "latestVersion": "7.x.x", + "link": "https://github.com/hapijs/mimos", + "name": "mimos", + "package": "@hapi/mimos", + "slogan": "Mime database interface.", + "sloganHtml": "Mime database interface.", + "stars": 20, + "updated": "2024-10-23T21:34:46Z", + "versions": [ + { + "branch": "v7.0.1", + "license": "BSD", + "name": "7.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["7.0.1"] } diff --git a/generated/modules/nes/changelog.json b/generated/modules/nes/changelog.json index b36d9425..3fbab8b9 100644 --- a/generated/modules/nes/changelog.json +++ b/generated/modules/nes/changelog.json @@ -1,1889 +1,1889 @@ [ - { - "date": "2025-01-08T21:42:26Z", - "id": 12139848, - "issues": [ - { - "id": 2770959378, - "labels": ["types"], - "number": 338, - "title": "Declare correct `ws` options type", - "url": "https://github.com/hapijs/nes/pull/338" - } - ], - "number": 86, - "url": "https://github.com/hapijs/nes/milestone/86", - "version": "14.0.1" - }, - { - "date": "2024-08-28T09:24:27Z", - "id": 11355094, - "issues": [ - { - "id": 2491364173, - "labels": ["breaking changes", "release notes"], - "number": 335, - "title": "v14.0.0 Release Notes", - "url": "https://github.com/hapijs/nes/issues/335" - }, - { - "id": 2491258234, - "labels": ["breaking changes"], - "number": 334, - "title": "Release next version as 14.0.0", - "url": "https://github.com/hapijs/nes/pull/334" - }, - { - "id": 2428211449, - "labels": ["breaking changes"], - "number": 333, - "title": "chore: set min node version", - "url": "https://github.com/hapijs/nes/pull/333" - }, - { - "id": 2367495218, - "labels": [], - "number": 330, - "title": "chore: 🤖 import and improve outdate typings from DT", - "url": "https://github.com/hapijs/nes/pull/330" - }, - { - "id": 2366002333, - "labels": ["feature"], - "number": 329, - "title": "Upgrade to ws@8.x", - "url": "https://github.com/hapijs/nes/issues/329" - }, - { - "id": 1983406228, - "labels": ["test"], - "number": 327, - "title": "chore: change CI target for next", - "url": "https://github.com/hapijs/nes/pull/327" - } - ], - "number": 85, - "url": "https://github.com/hapijs/nes/milestone/85", - "version": "14.0.0" - }, - { - "date": "2024-07-24T18:06:52Z", - "id": 8276919, - "issues": [ - { - "id": 1551798696, - "labels": ["dependency"], - "number": 325, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/nes/pull/325" - } - ], - "number": 84, - "url": "https://github.com/hapijs/nes/milestone/84", - "version": "13.0.1" - }, - { - "date": "2022-08-08T02:36:32Z", - "id": 5920977, - "issues": [ - { - "id": 1307285269, - "labels": ["feature", "test", "breaking changes", "dependency"], - "number": 322, - "title": "Support node v18 and hapi v21, drop node v12 and hapi v18/19", - "url": "https://github.com/hapijs/nes/pull/322" - } - ], - "number": 82, - "url": "https://github.com/hapijs/nes/milestone/82", - "version": "13.0.0" - }, - { - "date": "2022-08-08T02:36:34Z", - "id": 8276614, - "issues": [ - { - "id": 1331152287, - "labels": ["bug"], - "number": 323, - "title": "Fix client reconnect retry attempts", - "url": "https://github.com/hapijs/nes/pull/323" - }, - { - "id": 892758677, - "labels": ["bug"], - "number": 318, - "title": "client - _reconnect update, single reconnection timer", - "url": "https://github.com/hapijs/nes/pull/318" - } - ], - "number": 83, - "url": "https://github.com/hapijs/nes/milestone/83", - "version": "12.0.5" - }, - { - "date": "2020-09-26T16:25:03Z", - "id": 5639214, - "issues": [ - { - "id": 684031767, - "labels": [], - "number": 313, - "title": "migrate to new travis format", - "url": "https://github.com/hapijs/nes/pull/313" - }, - { - "id": 677275186, - "labels": [], - "number": 312, - "title": "upgrade to hapi 20", - "url": "https://github.com/hapijs/nes/pull/312" - }, - { - "id": 672300811, - "labels": [], - "number": 311, - "title": "switch to validate and other package updates", - "url": "https://github.com/hapijs/nes/pull/311" - } - ], - "number": 81, - "url": "https://github.com/hapijs/nes/milestone/81", - "version": "12.0.4" - }, - { - "date": "2020-07-10T03:31:35Z", - "id": 5208328, - "issues": [ - { - "id": 602819662, - "labels": ["dependency"], - "number": 307, - "title": "Upgrade deprecated `@hapi/call@6.x.x`", - "url": "https://github.com/hapijs/nes/pull/307" - }, - { - "id": 594923873, - "labels": ["bug"], - "number": 306, - "title": "fix: pass remoteAddress when injecting request", - "url": "https://github.com/hapijs/nes/pull/306" - }, - { - "id": 592659050, - "labels": ["bug"], - "number": 305, - "title": "request.info.remoteAddress is always 127.0.0.1 in request handler", - "url": "https://github.com/hapijs/nes/issues/305" - } - ], - "number": 80, - "url": "https://github.com/hapijs/nes/milestone/80", - "version": "12.0.3" - }, - { - "date": "2020-03-17T03:17:04Z", - "id": 5208327, - "issues": [ - { - "id": 582353362, - "labels": ["bug"], - "number": 304, - "title": "Prevent beat timeout from disconnecting newly connecting sockets", - "url": "https://github.com/hapijs/nes/pull/304" - } - ], - "number": 79, - "url": "https://github.com/hapijs/nes/milestone/79", - "version": "12.0.2" - }, - { - "date": "2020-03-17T03:14:41Z", - "id": 4999080, - "issues": [ - { - "id": 579775341, - "labels": ["dependency"], - "number": 303, - "title": "Remove unused dep", - "url": "https://github.com/hapijs/nes/pull/303" - } - ], - "number": 78, - "url": "https://github.com/hapijs/nes/milestone/78", - "version": "12.0.1" - }, - { - "date": "2020-01-13T12:13:27Z", - "id": 4655394, - "issues": [ - { - "id": 548884746, - "labels": ["breaking changes"], - "number": 301, - "title": "Change plugin name to @hapi/nes", - "url": "https://github.com/hapijs/nes/issues/301" - }, - { - "id": 548883795, - "labels": ["breaking changes", "dependency"], - "number": 300, - "title": "Require hapi 19", - "url": "https://github.com/hapijs/nes/issues/300" - }, - { - "id": 548882669, - "labels": ["breaking changes", "dependency"], - "number": 299, - "title": "Only node 12", - "url": "https://github.com/hapijs/nes/issues/299" - } - ], - "number": 77, - "url": "https://github.com/hapijs/nes/milestone/77", - "version": "12.0.0" - }, - { - "date": "2019-09-12T20:30:28Z", - "id": 4574339, - "issues": [ - { - "id": 472682532, - "labels": ["bug"], - "number": 285, - "title": "Unknown authentication strategy", - "url": "https://github.com/hapijs/nes/issues/285" - } - ], - "number": 76, - "url": "https://github.com/hapijs/nes/milestone/76", - "version": "11.2.2" - }, - { - "date": "2019-08-15T01:20:56Z", - "id": 4363181, - "issues": [ - { - "id": 480901274, - "labels": ["dependency"], - "number": 289, - "title": "Update deps", - "url": "https://github.com/hapijs/nes/issues/289" - } - ], - "number": 75, - "url": "https://github.com/hapijs/nes/milestone/75", - "version": "11.2.1" - }, - { - "date": "2019-05-30T22:29:29Z", - "id": 4260066, - "issues": [ - { - "id": 448862649, - "labels": ["bug", "feature"], - "number": 284, - "title": "Add ability to revoke a socket ignoring if it is already closed", - "url": "https://github.com/hapijs/nes/pull/284" - }, - { - "id": 448824552, - "labels": ["bug"], - "number": 283, - "title": "cleanup called twice if there is an onUnsubscribe handler", - "url": "https://github.com/hapijs/nes/issues/283" - } - ], - "number": 74, - "url": "https://github.com/hapijs/nes/milestone/74", - "version": "11.2.0" - }, - { - "date": "2019-04-25T16:40:58Z", - "id": 4257601, - "issues": [ - { - "id": 435484101, - "labels": ["feature"], - "number": 278, - "title": "Passing remoteAddress and x-forwarded-for is in whitelist when connect", - "url": "https://github.com/hapijs/nes/pull/278" - } - ], - "number": 73, - "url": "https://github.com/hapijs/nes/milestone/73", - "version": "11.1.0" - }, - { - "date": "2019-04-24T23:56:20Z", - "id": 4242060, - "issues": [ - { - "id": 436953739, - "labels": ["bug"], - "number": 279, - "title": "Fix name", - "url": "https://github.com/hapijs/nes/issues/279" - } - ], - "number": 72, - "url": "https://github.com/hapijs/nes/milestone/72", - "version": "11.0.1" - }, - { - "date": "2019-04-18T17:06:25Z", - "id": 4240215, - "issues": [ - { - "id": 434869175, - "labels": ["breaking changes"], - "number": 276, - "title": "Remove client dist", - "url": "https://github.com/hapijs/nes/issues/276" - }, - { - "id": 336680175, - "labels": ["bug", "breaking changes"], - "number": 248, - "title": "eachSocket behaves as synchronous without filter, but async with filter", - "url": "https://github.com/hapijs/nes/issues/248" - } - ], - "number": 71, - "url": "https://github.com/hapijs/nes/milestone/71", - "version": "11.0.0" - }, - { - "date": "2019-04-18T04:32:31Z", - "id": 4112776, - "issues": [ - { - "id": 434585489, - "labels": ["dependency"], - "number": 275, - "title": "Change module namespace", - "url": "https://github.com/hapijs/nes/issues/275" - } - ], - "number": 70, - "url": "https://github.com/hapijs/nes/milestone/70", - "version": "10.1.0" - }, - { - "date": "2019-03-05T17:10:57Z", - "id": 4109750, - "issues": [ - { - "id": 417269178, - "labels": ["bug"], - "number": 270, - "title": "Error in the browser with 10.0.1", - "url": "https://github.com/hapijs/nes/issues/270" - } - ], - "number": 69, - "url": "https://github.com/hapijs/nes/milestone/69", - "version": "10.0.2" - }, - { - "date": "2019-03-04T19:10:51Z", - "id": 3985605, - "issues": [ - { - "id": 416949630, - "labels": ["dependency"], - "number": 269, - "title": "Update dependencies", - "url": "https://github.com/hapijs/nes/issues/269" - } - ], - "number": 68, - "url": "https://github.com/hapijs/nes/milestone/68", - "version": "10.0.1" - }, - { - "date": "2019-01-18T23:38:51Z", - "id": 3844691, - "issues": [ - { - "id": 400908568, - "labels": ["breaking changes"], - "number": 265, - "title": "hapi v18", - "url": "https://github.com/hapijs/nes/issues/265" - } - ], - "number": 67, - "url": "https://github.com/hapijs/nes/milestone/67", - "version": "10.0.0" - }, - { - "date": "2018-11-24T03:54:05Z", - "id": 3811566, - "issues": [ - { - "id": 383845265, - "labels": ["feature"], - "number": 263, - "title": "Document minAuthVerifyInterval and make it less restrictive", - "url": "https://github.com/hapijs/nes/pull/263" - }, - { - "id": 383596224, - "labels": ["feature"], - "number": 262, - "title": "Close the socket when authentication verification fails", - "url": "https://github.com/hapijs/nes/pull/262" - }, - { - "id": 382630741, - "labels": ["feature"], - "number": 260, - "title": "Close the socket when authentication expires", - "url": "https://github.com/hapijs/nes/issues/260" - } - ], - "number": 66, - "url": "https://github.com/hapijs/nes/milestone/66", - "version": "9.1.0" - }, - { - "date": "2018-11-11T08:10:42Z", - "id": 3811565, - "issues": [ - { - "id": 379500091, - "labels": ["non issue", "dependency"], - "number": 256, - "title": "Cleanup", - "url": "https://github.com/hapijs/nes/issues/256" - } - ], - "number": 65, - "url": "https://github.com/hapijs/nes/milestone/65", - "version": "9.0.2" - }, - { - "date": "2018-11-11T08:06:30Z", - "id": 3466648, - "issues": [ - { - "id": 335336250, - "labels": ["bug"], - "number": 247, - "title": "Reconnect on error", - "url": "https://github.com/hapijs/nes/pull/247" - } - ], - "number": 64, - "url": "https://github.com/hapijs/nes/milestone/64", - "version": "9.0.1" - }, - { - "date": "2018-11-11T08:06:31Z", - "id": 3316853, - "issues": [ - { - "id": 319524696, - "labels": ["feature"], - "number": 243, - "title": "Add client.onHeartbeatTimeout hook", - "url": "https://github.com/hapijs/nes/pull/243" - } - ], - "number": 63, - "url": "https://github.com/hapijs/nes/milestone/63", - "version": "8.1.0" - }, - { - "date": "2018-11-11T08:06:32Z", - "id": 3202345, - "issues": [ - { - "id": 306734970, - "labels": ["breaking changes", "dependency"], - "number": 229, - "title": "Update ws to 5.x.x", - "url": "https://github.com/hapijs/nes/pull/229" - } - ], - "number": 62, - "url": "https://github.com/hapijs/nes/milestone/62", - "version": "8.0.0" - }, - { - "date": "2018-11-11T08:06:33Z", - "id": 3189537, - "issues": [ - { - "id": 305061522, - "labels": ["feature"], - "number": 228, - "title": "Mark NesErrors as coming from nes", - "url": "https://github.com/hapijs/nes/pull/228" - } - ], - "number": 61, - "url": "https://github.com/hapijs/nes/milestone/61", - "version": "7.2.0" - }, - { - "date": "2018-11-11T08:06:34Z", - "id": 3176667, - "issues": [ - { - "id": 303740584, - "labels": ["feature"], - "number": 224, - "title": "Add socket.info object", - "url": "https://github.com/hapijs/nes/pull/224" - }, - { - "id": 303339979, - "labels": ["bug"], - "number": 223, - "title": "Delay heartbeats until server is started", - "url": "https://github.com/hapijs/nes/pull/223" - }, - { - "id": 303338214, - "labels": ["feature"], - "number": 222, - "title": "Allow isSameSite cookie option to be passed", - "url": "https://github.com/hapijs/nes/pull/222" - } - ], - "number": 60, - "url": "https://github.com/hapijs/nes/milestone/60", - "version": "7.1.0" - }, - { - "date": "2018-03-11T09:37:21Z", - "id": 3167676, - "issues": [ - { - "id": 302992282, - "labels": ["dependency"], - "number": 221, - "title": "Update hapijs/call to 5.x.x", - "url": "https://github.com/hapijs/nes/pull/221" - }, - { - "id": 302560395, - "labels": ["bug"], - "number": 220, - "title": "Ignore node network errors after opening client socket", - "url": "https://github.com/hapijs/nes/pull/220" - } - ], - "number": 59, - "url": "https://github.com/hapijs/nes/milestone/59", - "version": "7.0.4" - }, - { - "date": "2018-03-07T02:32:25Z", - "id": 2987489, - "issues": [ - { - "id": 294191491, - "labels": ["bug"], - "number": 214, - "title": "Do not replace message for all sockets with override from filter", - "url": "https://github.com/hapijs/nes/pull/214" - } - ], - "number": 58, - "url": "https://github.com/hapijs/nes/milestone/58", - "version": "7.0.3" - }, - { - "date": "2017-12-18T21:57:19Z", - "id": 2887225, - "issues": [ - { - "id": 283033975, - "labels": ["bug"], - "number": 206, - "title": "Handle ws socket error events", - "url": "https://github.com/hapijs/nes/issues/206" - } - ], - "number": 55, - "url": "https://github.com/hapijs/nes/milestone/55", - "version": "7.0.2" - }, - { - "date": "2017-11-03T23:51:47Z", - "id": 2873894, - "issues": [ - { - "id": 271147636, - "labels": ["bug"], - "number": 198, - "title": "Better error handling", - "url": "https://github.com/hapijs/nes/issues/198" - } - ], - "number": 54, - "url": "https://github.com/hapijs/nes/milestone/54", - "version": "7.0.1" - }, - { - "date": "2017-10-31T09:39:57Z", - "id": 2648349, - "issues": [ - { - "id": 269892866, - "labels": ["breaking changes", "dependency"], - "number": 196, - "title": "hapi v17", - "url": "https://github.com/hapijs/nes/issues/196" - }, - { - "id": 269520818, - "labels": ["dependency"], - "number": 195, - "title": "Update ws", - "url": "https://github.com/hapijs/nes/issues/195" - }, - { - "id": 269520767, - "labels": ["dependency"], - "number": 194, - "title": "Update babel script", - "url": "https://github.com/hapijs/nes/issues/194" - } - ], - "number": 53, - "url": "https://github.com/hapijs/nes/milestone/53", - "version": "7.0.0" - }, - { - "date": "2017-11-13T20:51:44Z", - "id": 2910113, - "issues": [ - { - "id": 273572817, - "labels": ["test"], - "number": 202, - "title": "Fix test", - "url": "https://github.com/hapijs/nes/issues/202" - } - ], - "number": 57, - "url": "https://github.com/hapijs/nes/milestone/57", - "version": "6.5.1" - }, - { - "date": "2017-11-13T20:49:18Z", - "id": 2910087, - "issues": [ - { - "id": 273566880, - "labels": ["dependency"], - "number": 201, - "title": "Update ws", - "url": "https://github.com/hapijs/nes/issues/201" - } - ], - "number": 56, - "url": "https://github.com/hapijs/nes/milestone/56", - "version": "6.5.0" - }, - { - "date": "2017-07-18T19:40:26Z", - "id": 2398996, - "issues": [ - { - "id": 236127539, - "labels": ["bug"], - "number": 179, - "title": "`maximum call stack exceeded` if web socket gets disconnected while nes is sending packets", - "url": "https://github.com/hapijs/nes/issues/179" - } - ], - "number": 52, - "url": "https://github.com/hapijs/nes/milestone/52", - "version": "6.4.3" - }, - { - "date": "2017-03-20T19:55:03Z", - "id": 2398988, - "issues": [ - { - "id": 177619150, - "labels": ["bug"], - "number": 156, - "title": "Handle undefined payloads from server in client", - "url": "https://github.com/hapijs/nes/issues/156" - } - ], - "number": 51, - "url": "https://github.com/hapijs/nes/milestone/51", - "version": "6.4.2" - }, - { - "date": "2017-03-20T19:50:47Z", - "id": 2190192, - "issues": [ - { - "id": 203613881, - "labels": ["bug", "security"], - "number": 171, - "title": "server falls with bad cookie header", - "url": "https://github.com/hapijs/nes/issues/171" - } - ], - "number": 50, - "url": "https://github.com/hapijs/nes/milestone/50", - "version": "6.4.1" - }, - { - "date": "2016-12-12T08:24:42Z", - "id": 2167982, - "issues": [ - { - "id": 194914275, - "labels": ["feature"], - "number": 169, - "title": "Expose server and connection on socket", - "url": "https://github.com/hapijs/nes/issues/169" - } - ], - "number": 49, - "url": "https://github.com/hapijs/nes/milestone/49", - "version": "6.4.0" - }, - { - "date": "2016-12-01T06:20:16Z", - "id": 1966833, - "issues": [ - { - "id": 192763227, - "labels": ["dependency"], - "number": 168, - "title": "Update deps", - "url": "https://github.com/hapijs/nes/issues/168" - } - ], - "number": 48, - "url": "https://github.com/hapijs/nes/milestone/48", - "version": "6.3.2" - }, - { - "date": "2016-08-27T01:10:07Z", - "id": 1964037, - "issues": [ - { - "id": 173569836, - "labels": ["feature"], - "number": 145, - "title": "Disable inject() validate", - "url": "https://github.com/hapijs/nes/issues/145" - } - ], - "number": 47, - "url": "https://github.com/hapijs/nes/milestone/47", - "version": "6.3.1" - }, - { - "date": "2016-08-25T22:44:32Z", - "id": 1919031, - "issues": [ - { - "id": 173013558, - "labels": ["feature"], - "number": 144, - "title": "Verify request Origin", - "url": "https://github.com/hapijs/nes/pull/144" - } - ], - "number": 46, - "url": "https://github.com/hapijs/nes/milestone/46", - "version": "6.3.0" - }, - { - "date": "2016-08-02T18:36:56Z", - "id": 1912298, - "issues": [ - { - "id": 168956618, - "labels": ["bug"], - "number": 142, - "title": "Reconnection timeout conflicts", - "url": "https://github.com/hapijs/nes/issues/142" - } - ], - "number": 45, - "url": "https://github.com/hapijs/nes/milestone/45", - "version": "6.2.5" - }, - { - "date": "2016-07-29T17:47:00Z", - "id": 1910723, - "issues": [ - { - "id": 168275124, - "labels": ["documentation"], - "number": 141, - "title": "Add client.js and dist/ to npm tarball -Closes #140", - "url": "https://github.com/hapijs/nes/pull/141" - }, - { - "id": 168273915, - "labels": ["bug"], - "number": 140, - "title": "Missing root client.js and dist", - "url": "https://github.com/hapijs/nes/issues/140" - } - ], - "number": 44, - "url": "https://github.com/hapijs/nes/milestone/44", - "version": "6.2.4" - }, - { - "date": "2016-07-28T23:36:27Z", - "id": 1893141, - "issues": [ - { - "id": 168220600, - "labels": ["dependency"], - "number": 139, - "title": "Update deps", - "url": "https://github.com/hapijs/nes/issues/139" - } - ], - "number": 43, - "url": "https://github.com/hapijs/nes/milestone/43", - "version": "6.2.3" - }, - { - "date": "2016-07-19T22:47:16Z", - "id": 1833433, - "issues": [ - { - "id": 166455220, - "labels": ["bug"], - "number": 138, - "title": "Always call onConnection before onSubscribe", - "url": "https://github.com/hapijs/nes/issues/138" - } - ], - "number": 42, - "url": "https://github.com/hapijs/nes/milestone/42", - "version": "6.2.2" - }, - { - "date": "2016-06-16T22:31:28Z", - "id": 1827872, - "issues": [ - { - "id": 160775791, - "labels": ["bug"], - "number": 136, - "title": "Reuse pre-stringified hapi response", - "url": "https://github.com/hapijs/nes/issues/136" - } - ], - "number": 41, - "url": "https://github.com/hapijs/nes/milestone/41", - "version": "6.2.1" - }, - { - "date": "2016-06-15T02:35:26Z", - "id": 1793117, - "issues": [ - { - "id": 160314808, - "labels": ["bug"], - "number": 135, - "title": "Cookie auth fails to register socket", - "url": "https://github.com/hapijs/nes/issues/135" - }, - { - "id": 160112500, - "labels": ["feature", "security"], - "number": 134, - "title": "Per user connection limit", - "url": "https://github.com/hapijs/nes/issues/134" - }, - { - "id": 160112256, - "labels": ["bug", "security"], - "number": 133, - "title": "Timeout sockets if hello takes too long", - "url": "https://github.com/hapijs/nes/issues/133" - } - ], - "number": 40, - "url": "https://github.com/hapijs/nes/milestone/40", - "version": "6.2.0" - }, - { - "date": "2016-05-28T01:01:18Z", - "id": 1788349, - "issues": [ - { - "id": 157312152, - "labels": ["bug"], - "number": 132, - "title": "Client indicates wasRequested when calling disconnect() on dead socket", - "url": "https://github.com/hapijs/nes/issues/132" - } - ], - "number": 39, - "url": "https://github.com/hapijs/nes/milestone/39", - "version": "6.1.2" - }, - { - "date": "2016-05-25T19:57:18Z", - "id": 1779912, - "issues": [ - { - "id": 156835687, - "labels": ["bug"], - "number": 131, - "title": "Incorrectly reports wasRequested when internally disconnects", - "url": "https://github.com/hapijs/nes/issues/131" - } - ], - "number": 38, - "url": "https://github.com/hapijs/nes/milestone/38", - "version": "6.1.1" - }, - { - "date": "2016-05-21T00:14:49Z", - "id": 1777536, - "issues": [ - { - "id": 156072625, - "labels": ["feature"], - "number": 129, - "title": "Include reason disconnected in log object", - "url": "https://github.com/hapijs/nes/issues/129" - } - ], - "number": 37, - "url": "https://github.com/hapijs/nes/milestone/37", - "version": "6.1.0" - }, - { - "date": "2016-05-19T20:08:55Z", - "id": 1770659, - "issues": [ - { - "id": 155817566, - "labels": ["test", "documentation", "dependency"], - "number": 127, - "title": "Test on node v6", - "url": "https://github.com/hapijs/nes/pull/127" - } - ], - "number": 36, - "url": "https://github.com/hapijs/nes/milestone/36", - "version": "6.0.2" - }, - { - "date": "2016-05-17T08:03:44Z", - "id": 1763706, - "issues": [ - { - "id": 155198879, - "labels": ["bug"], - "number": 126, - "title": "Handle cases when client._ws is null", - "url": "https://github.com/hapijs/nes/issues/126" - } - ], - "number": 35, - "url": "https://github.com/hapijs/nes/milestone/35", - "version": "6.0.1" - }, - { - "date": "2016-05-13T02:28:44Z", - "id": 1751994, - "issues": [ - { - "id": 154574472, - "labels": ["bug", "breaking changes"], - "number": 125, - "title": "Connect fails to check for previous internal socket when connecting.", - "url": "https://github.com/hapijs/nes/issues/125" - } - ], - "number": 34, - "url": "https://github.com/hapijs/nes/milestone/34", - "version": "6.0.0" - }, - { - "date": "2016-05-06T16:54:49Z", - "id": 1750982, - "issues": [ - { - "id": 153493279, - "labels": ["bug"], - "number": 124, - "title": "Adjust unsub processing timing on server", - "url": "https://github.com/hapijs/nes/issues/124" - } - ], - "number": 33, - "url": "https://github.com/hapijs/nes/milestone/33", - "version": "5.0.3" - }, - { - "date": "2016-05-06T06:26:45Z", - "id": 1750955, - "issues": [ - { - "id": 153386245, - "labels": ["bug"], - "number": 123, - "title": "Check is socket is still around while disconnecting", - "url": "https://github.com/hapijs/nes/issues/123" - } - ], - "number": 32, - "url": "https://github.com/hapijs/nes/milestone/32", - "version": "5.0.2" - }, - { - "date": "2016-05-06T05:46:28Z", - "id": 1750888, - "issues": [ - { - "id": 153382423, - "labels": ["bug"], - "number": 122, - "title": "Prevent server from sending data when stopping", - "url": "https://github.com/hapijs/nes/issues/122" - } - ], - "number": 31, - "url": "https://github.com/hapijs/nes/milestone/31", - "version": "5.0.1" - }, - { - "date": "2016-05-06T04:12:23Z", - "id": 1744150, - "issues": [ - { - "id": 153328026, - "labels": ["bug", "breaking changes"], - "number": 121, - "title": "Properly clean up sockets and subscriptions on server stop", - "url": "https://github.com/hapijs/nes/issues/121" - } - ], - "number": 30, - "url": "https://github.com/hapijs/nes/milestone/30", - "version": "5.0.0" - }, - { - "date": "2016-05-03T07:52:57Z", - "id": 1744116, - "issues": [ - { - "id": 152718518, - "labels": ["feature"], - "number": 120, - "title": "Support user filter in eachSocket()", - "url": "https://github.com/hapijs/nes/issues/120" - } - ], - "number": 29, - "url": "https://github.com/hapijs/nes/milestone/29", - "version": "4.6.0" - }, - { - "date": "2016-05-03T07:20:43Z", - "id": 1737072, - "issues": [ - { - "id": 152714524, - "labels": ["feature"], - "number": 119, - "title": "Subscription revoke()", - "url": "https://github.com/hapijs/nes/issues/119" - }, - { - "id": 152702180, - "labels": ["bug"], - "number": 118, - "title": "Keep separate subscription per connection", - "url": "https://github.com/hapijs/nes/issues/118" - } - ], - "number": 28, - "url": "https://github.com/hapijs/nes/milestone/28", - "version": "4.5.0" - }, - { - "date": "2016-04-28T17:40:59Z", - "id": 1732599, - "issues": [ - { - "id": 151701444, - "labels": ["bug"], - "number": 117, - "title": "Race condition between unsubscribe and disconnect when using auth index on sub", - "url": "https://github.com/hapijs/nes/issues/117" - } - ], - "number": 27, - "url": "https://github.com/hapijs/nes/milestone/27", - "version": "4.4.1" - }, - { - "date": "2016-04-26T19:28:29Z", - "id": 1707836, - "issues": [ - { - "id": 151199192, - "labels": ["feature"], - "number": 116, - "title": "User-specific broadcast", - "url": "https://github.com/hapijs/nes/issues/116" - }, - { - "id": 151038794, - "labels": ["feature"], - "number": 115, - "title": "User-specific publish", - "url": "https://github.com/hapijs/nes/issues/115" - } - ], - "number": 26, - "url": "https://github.com/hapijs/nes/milestone/26", - "version": "4.4.0" - }, - { - "date": "2016-04-14T22:31:48Z", - "id": 1674677, - "issues": [ - { - "id": 148501554, - "labels": ["feature"], - "number": 112, - "title": "Expose socket and support publish override", - "url": "https://github.com/hapijs/nes/issues/112" - }, - { - "id": 146488724, - "labels": ["non issue"], - "number": 109, - "title": "Typo: listners -> listeners", - "url": "https://github.com/hapijs/nes/pull/109" - } - ], - "number": 25, - "url": "https://github.com/hapijs/nes/milestone/25", - "version": "4.3.0" - }, - { - "date": "2016-03-30T18:43:44Z", - "id": 1673382, - "issues": [ - { - "id": 144642711, - "labels": ["bug"], - "number": 108, - "title": "Fix UMD global handling", - "url": "https://github.com/hapijs/nes/pull/108" - }, - { - "id": 143950380, - "labels": ["bug"], - "number": 105, - "title": "Client.js getting root as undefined", - "url": "https://github.com/hapijs/nes/issues/105" - } - ], - "number": 24, - "url": "https://github.com/hapijs/nes/milestone/24", - "version": "4.2.1" - }, - { - "date": "2016-03-30T06:40:53Z", - "id": 1667922, - "issues": [ - { - "id": 144479140, - "labels": ["feature"], - "number": 107, - "title": "Expose params on unsubscribe callback", - "url": "https://github.com/hapijs/nes/issues/107" - } - ], - "number": 23, - "url": "https://github.com/hapijs/nes/milestone/23", - "version": "4.2.0" - }, - { - "date": "2016-03-27T23:47:38Z", - "id": 1619034, - "issues": [ - { - "id": 143746308, - "labels": ["feature"], - "number": 104, - "title": "Provide a way to replace auth credentials before an automatic reconnect", - "url": "https://github.com/hapijs/nes/issues/104" - } - ], - "number": 22, - "url": "https://github.com/hapijs/nes/milestone/22", - "version": "4.1.0" - }, - { - "date": "2016-03-02T23:19:36Z", - "id": 1608660, - "issues": [ - { - "id": 138023954, - "labels": ["feature", "breaking changes"], - "number": 100, - "title": "Add required callback to subscription onSubscribe option", - "url": "https://github.com/hapijs/nes/issues/100" - } - ], - "number": 21, - "url": "https://github.com/hapijs/nes/milestone/21", - "version": "4.0.0" - }, - { - "date": "2016-02-26T19:27:45Z", - "id": 1605916, - "issues": [ - { - "id": 136790137, - "labels": ["bug"], - "number": 99, - "title": "Pause heartbeat disconnect while sending", - "url": "https://github.com/hapijs/nes/issues/99" - } - ], - "number": 20, - "url": "https://github.com/hapijs/nes/milestone/20", - "version": "3.1.2" - }, - { - "date": "2016-02-25T19:24:51Z", - "id": 1596457, - "issues": [ - { - "id": 136484949, - "labels": ["bug"], - "number": 98, - "title": "Server disconnects client after a long message transmission", - "url": "https://github.com/hapijs/nes/issues/98" - } - ], - "number": 19, - "url": "https://github.com/hapijs/nes/milestone/19", - "version": "3.1.1" - }, - { - "date": "2016-02-22T08:28:19Z", - "id": 1554938, - "issues": [ - { - "id": 135179049, - "labels": ["feature", "breaking changes"], - "number": 97, - "title": "Break large messages into smaller chunks", - "url": "https://github.com/hapijs/nes/issues/97" - }, - { - "id": 127817286, - "labels": ["feature"], - "number": 94, - "title": "Support sending initial subscription update", - "url": "https://github.com/hapijs/nes/issues/94" - } - ], - "number": 18, - "url": "https://github.com/hapijs/nes/milestone/18", - "version": "3.1.0" - }, - { - "date": "2016-02-01T08:59:41Z", - "id": 1533804, - "issues": [ - { - "id": 130300841, - "labels": ["security", "breaking changes", "dependency"], - "number": 96, - "title": "Update Iron and increase auto-generated password to 32 characters", - "url": "https://github.com/hapijs/nes/issues/96" - } - ], - "number": 17, - "url": "https://github.com/hapijs/nes/milestone/17", - "version": "3.0.0" - }, - { - "date": "2016-01-22T06:53:38Z", - "id": 1530592, - "issues": [ - { - "id": 128096551, - "labels": ["bug"], - "number": 95, - "title": "Emit error when disconnecting due to missing server heartbeat", - "url": "https://github.com/hapijs/nes/issues/95" - } - ], - "number": 16, - "url": "https://github.com/hapijs/nes/milestone/16", - "version": "2.3.1" - }, - { - "date": "2016-01-21T08:50:27Z", - "id": 1520932, - "issues": [ - { - "id": 127801249, - "labels": ["bug"], - "number": 93, - "title": "Client requests fail if the request response takes longer than heartbeat timeout", - "url": "https://github.com/hapijs/nes/issues/93" - } - ], - "number": 15, - "url": "https://github.com/hapijs/nes/milestone/15", - "version": "2.3.0" - }, - { - "date": "2016-01-20T00:36:55Z", - "id": 1509673, - "issues": [ - { - "id": 127573847, - "labels": ["feature"], - "number": 92, - "title": "Return close event reason in onDisconnect", - "url": "https://github.com/hapijs/nes/issues/92" - }, - { - "id": 127337752, - "labels": ["bug"], - "number": 90, - "title": "NesError breaks if passed an error event from onerror.", - "url": "https://github.com/hapijs/nes/issues/90" - }, - { - "id": 116071552, - "labels": ["feature"], - "number": 76, - "title": "Pass the onclose information to onDisconnect", - "url": "https://github.com/hapijs/nes/issues/76" - } - ], - "number": 14, - "url": "https://github.com/hapijs/nes/milestone/14", - "version": "2.2.0" - }, - { - "date": "2016-01-15T21:02:18Z", - "id": 1488266, - "issues": [ - { - "id": 126956435, - "labels": ["feature"], - "number": 89, - "title": "Decorate errors with source type", - "url": "https://github.com/hapijs/nes/issues/89" - }, - { - "id": 126933305, - "labels": ["bug"], - "number": 88, - "title": "onDisconnect() reports reconnect state incorrectly", - "url": "https://github.com/hapijs/nes/issues/88" - } - ], - "number": 13, - "url": "https://github.com/hapijs/nes/milestone/13", - "version": "2.1.0" - }, - { - "date": "2016-01-06T20:23:32Z", - "id": 1483412, - "issues": [ - { - "id": 125001426, - "labels": ["bug"], - "number": 87, - "title": "The update to ws 1.0.x introduces breaking changes", - "url": "https://github.com/hapijs/nes/issues/87" - } - ], - "number": 12, - "url": "https://github.com/hapijs/nes/milestone/12", - "version": "2.0.2" - }, - { - "date": "2016-01-04T20:39:50Z", - "id": 1441486, - "issues": [ - { - "id": 124828639, - "labels": ["security", "dependency"], + { + "date": "2025-01-08T21:42:26Z", + "id": 12139848, + "issues": [ + { + "id": 2770959378, + "labels": ["types"], + "number": 338, + "title": "Declare correct `ws` options type", + "url": "https://github.com/hapijs/nes/pull/338" + } + ], "number": 86, - "title": "update ws to 1.0.x", - "url": "https://github.com/hapijs/nes/pull/86" - } - ], - "number": 11, - "url": "https://github.com/hapijs/nes/milestone/11", - "version": "2.0.1" - }, - { - "date": "2015-12-03T08:38:30Z", - "id": 1438067, - "issues": [ - { - "id": 120001127, - "labels": ["feature", "breaking changes"], + "url": "https://github.com/hapijs/nes/milestone/86", + "version": "14.0.1" + }, + { + "date": "2024-08-28T09:24:27Z", + "id": 11355094, + "issues": [ + { + "id": 2491364173, + "labels": ["breaking changes", "release notes"], + "number": 335, + "title": "v14.0.0 Release Notes", + "url": "https://github.com/hapijs/nes/issues/335" + }, + { + "id": 2491258234, + "labels": ["breaking changes"], + "number": 334, + "title": "Release next version as 14.0.0", + "url": "https://github.com/hapijs/nes/pull/334" + }, + { + "id": 2428211449, + "labels": ["breaking changes"], + "number": 333, + "title": "chore: set min node version", + "url": "https://github.com/hapijs/nes/pull/333" + }, + { + "id": 2367495218, + "labels": [], + "number": 330, + "title": "chore: 🤖 import and improve outdate typings from DT", + "url": "https://github.com/hapijs/nes/pull/330" + }, + { + "id": 2366002333, + "labels": ["feature"], + "number": 329, + "title": "Upgrade to ws@8.x", + "url": "https://github.com/hapijs/nes/issues/329" + }, + { + "id": 1983406228, + "labels": ["test"], + "number": 327, + "title": "chore: change CI target for next", + "url": "https://github.com/hapijs/nes/pull/327" + } + ], + "number": 85, + "url": "https://github.com/hapijs/nes/milestone/85", + "version": "14.0.0" + }, + { + "date": "2024-07-24T18:06:52Z", + "id": 8276919, + "issues": [ + { + "id": 1551798696, + "labels": ["dependency"], + "number": 325, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/nes/pull/325" + } + ], "number": 84, - "title": "Change client.subscribe() to require a callback", - "url": "https://github.com/hapijs/nes/issues/84" - }, - { - "id": 120001032, - "labels": ["feature", "breaking changes"], + "url": "https://github.com/hapijs/nes/milestone/84", + "version": "13.0.1" + }, + { + "date": "2022-08-08T02:36:32Z", + "id": 5920977, + "issues": [ + { + "id": 1307285269, + "labels": ["feature", "test", "breaking changes", "dependency"], + "number": 322, + "title": "Support node v18 and hapi v21, drop node v12 and hapi v18/19", + "url": "https://github.com/hapijs/nes/pull/322" + } + ], + "number": 82, + "url": "https://github.com/hapijs/nes/milestone/82", + "version": "13.0.0" + }, + { + "date": "2022-08-08T02:36:34Z", + "id": 8276614, + "issues": [ + { + "id": 1331152287, + "labels": ["bug"], + "number": 323, + "title": "Fix client reconnect retry attempts", + "url": "https://github.com/hapijs/nes/pull/323" + }, + { + "id": 892758677, + "labels": ["bug"], + "number": 318, + "title": "client - _reconnect update, single reconnection timer", + "url": "https://github.com/hapijs/nes/pull/318" + } + ], "number": 83, - "title": "Add version check in hello", - "url": "https://github.com/hapijs/nes/issues/83" - } - ], - "number": 10, - "url": "https://github.com/hapijs/nes/milestone/10", - "version": "2.0.0" - }, - { - "date": "2015-12-01T18:21:00Z", - "id": 1409927, - "issues": [ - { - "id": 119658520, - "labels": ["bug"], + "url": "https://github.com/hapijs/nes/milestone/83", + "version": "12.0.5" + }, + { + "date": "2020-09-26T16:25:03Z", + "id": 5639214, + "issues": [ + { + "id": 684031767, + "labels": [], + "number": 313, + "title": "migrate to new travis format", + "url": "https://github.com/hapijs/nes/pull/313" + }, + { + "id": 677275186, + "labels": [], + "number": 312, + "title": "upgrade to hapi 20", + "url": "https://github.com/hapijs/nes/pull/312" + }, + { + "id": 672300811, + "labels": [], + "number": 311, + "title": "switch to validate and other package updates", + "url": "https://github.com/hapijs/nes/pull/311" + } + ], "number": 81, - "title": "Fix illegal invocation error when using default onError handler.", - "url": "https://github.com/hapijs/nes/pull/81" - } - ], - "number": 9, - "url": "https://github.com/hapijs/nes/milestone/9", - "version": "1.2.2" - }, - { - "date": "2015-11-13T07:43:53Z", - "id": 1396358, - "issues": [ - { - "id": 116443477, - "labels": ["bug"], + "url": "https://github.com/hapijs/nes/milestone/81", + "version": "12.0.4" + }, + { + "date": "2020-07-10T03:31:35Z", + "id": 5208328, + "issues": [ + { + "id": 602819662, + "labels": ["dependency"], + "number": 307, + "title": "Upgrade deprecated `@hapi/call@6.x.x`", + "url": "https://github.com/hapijs/nes/pull/307" + }, + { + "id": 594923873, + "labels": ["bug"], + "number": 306, + "title": "fix: pass remoteAddress when injecting request", + "url": "https://github.com/hapijs/nes/pull/306" + }, + { + "id": 592659050, + "labels": ["bug"], + "number": 305, + "title": "request.info.remoteAddress is always 127.0.0.1 in request handler", + "url": "https://github.com/hapijs/nes/issues/305" + } + ], + "number": 80, + "url": "https://github.com/hapijs/nes/milestone/80", + "version": "12.0.3" + }, + { + "date": "2020-03-17T03:17:04Z", + "id": 5208327, + "issues": [ + { + "id": 582353362, + "labels": ["bug"], + "number": 304, + "title": "Prevent beat timeout from disconnecting newly connecting sockets", + "url": "https://github.com/hapijs/nes/pull/304" + } + ], "number": 79, - "title": "Possible to subscribe, unsubscribe, and resubscribe? v1.2.0", - "url": "https://github.com/hapijs/nes/issues/79" - } - ], - "number": 8, - "url": "https://github.com/hapijs/nes/milestone/8", - "version": "1.2.1" - }, - { - "date": "2015-11-05T20:22:41Z", - "id": 1383976, - "issues": [ - { - "id": 115351236, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/79", + "version": "12.0.2" + }, + { + "date": "2020-03-17T03:14:41Z", + "id": 4999080, + "issues": [ + { + "id": 579775341, + "labels": ["dependency"], + "number": 303, + "title": "Remove unused dep", + "url": "https://github.com/hapijs/nes/pull/303" + } + ], + "number": 78, + "url": "https://github.com/hapijs/nes/milestone/78", + "version": "12.0.1" + }, + { + "date": "2020-01-13T12:13:27Z", + "id": 4655394, + "issues": [ + { + "id": 548884746, + "labels": ["breaking changes"], + "number": 301, + "title": "Change plugin name to @hapi/nes", + "url": "https://github.com/hapijs/nes/issues/301" + }, + { + "id": 548883795, + "labels": ["breaking changes", "dependency"], + "number": 300, + "title": "Require hapi 19", + "url": "https://github.com/hapijs/nes/issues/300" + }, + { + "id": 548882669, + "labels": ["breaking changes", "dependency"], + "number": 299, + "title": "Only node 12", + "url": "https://github.com/hapijs/nes/issues/299" + } + ], + "number": 77, + "url": "https://github.com/hapijs/nes/milestone/77", + "version": "12.0.0" + }, + { + "date": "2019-09-12T20:30:28Z", + "id": 4574339, + "issues": [ + { + "id": 472682532, + "labels": ["bug"], + "number": 285, + "title": "Unknown authentication strategy", + "url": "https://github.com/hapijs/nes/issues/285" + } + ], + "number": 76, + "url": "https://github.com/hapijs/nes/milestone/76", + "version": "11.2.2" + }, + { + "date": "2019-08-15T01:20:56Z", + "id": 4363181, + "issues": [ + { + "id": 480901274, + "labels": ["dependency"], + "number": 289, + "title": "Update deps", + "url": "https://github.com/hapijs/nes/issues/289" + } + ], + "number": 75, + "url": "https://github.com/hapijs/nes/milestone/75", + "version": "11.2.1" + }, + { + "date": "2019-05-30T22:29:29Z", + "id": 4260066, + "issues": [ + { + "id": 448862649, + "labels": ["bug", "feature"], + "number": 284, + "title": "Add ability to revoke a socket ignoring if it is already closed", + "url": "https://github.com/hapijs/nes/pull/284" + }, + { + "id": 448824552, + "labels": ["bug"], + "number": 283, + "title": "cleanup called twice if there is an onUnsubscribe handler", + "url": "https://github.com/hapijs/nes/issues/283" + } + ], + "number": 74, + "url": "https://github.com/hapijs/nes/milestone/74", + "version": "11.2.0" + }, + { + "date": "2019-04-25T16:40:58Z", + "id": 4257601, + "issues": [ + { + "id": 435484101, + "labels": ["feature"], + "number": 278, + "title": "Passing remoteAddress and x-forwarded-for is in whitelist when connect", + "url": "https://github.com/hapijs/nes/pull/278" + } + ], + "number": 73, + "url": "https://github.com/hapijs/nes/milestone/73", + "version": "11.1.0" + }, + { + "date": "2019-04-24T23:56:20Z", + "id": 4242060, + "issues": [ + { + "id": 436953739, + "labels": ["bug"], + "number": 279, + "title": "Fix name", + "url": "https://github.com/hapijs/nes/issues/279" + } + ], "number": 72, - "title": "Update to create a es5 client artifact", - "url": "https://github.com/hapijs/nes/pull/72" - }, - { - "id": 115248506, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/72", + "version": "11.0.1" + }, + { + "date": "2019-04-18T17:06:25Z", + "id": 4240215, + "issues": [ + { + "id": 434869175, + "labels": ["breaking changes"], + "number": 276, + "title": "Remove client dist", + "url": "https://github.com/hapijs/nes/issues/276" + }, + { + "id": 336680175, + "labels": ["bug", "breaking changes"], + "number": 248, + "title": "eachSocket behaves as synchronous without filter, but async with filter", + "url": "https://github.com/hapijs/nes/issues/248" + } + ], "number": 71, - "title": "Add socket.app", - "url": "https://github.com/hapijs/nes/issues/71" - }, - { - "id": 115237510, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/71", + "version": "11.0.0" + }, + { + "date": "2019-04-18T04:32:31Z", + "id": 4112776, + "issues": [ + { + "id": 434585489, + "labels": ["dependency"], + "number": 275, + "title": "Change module namespace", + "url": "https://github.com/hapijs/nes/issues/275" + } + ], "number": 70, - "title": "Decorate request with socket", - "url": "https://github.com/hapijs/nes/issues/70" - }, - { - "id": 115149883, - "labels": ["feature", "breaking changes"], + "url": "https://github.com/hapijs/nes/milestone/70", + "version": "10.1.0" + }, + { + "date": "2019-03-05T17:10:57Z", + "id": 4109750, + "issues": [ + { + "id": 417269178, + "labels": ["bug"], + "number": 270, + "title": "Error in the browser with 10.0.1", + "url": "https://github.com/hapijs/nes/issues/270" + } + ], "number": 69, - "title": "ES6 style changes", - "url": "https://github.com/hapijs/nes/issues/69" - } - ], - "number": 7, - "url": "https://github.com/hapijs/nes/milestone/7", - "version": "1.2.0" - }, - { - "date": "2015-10-29T18:04:22Z", - "id": 1369059, - "issues": [ - { - "id": 114107063, - "labels": ["bug"], + "url": "https://github.com/hapijs/nes/milestone/69", + "version": "10.0.2" + }, + { + "date": "2019-03-04T19:10:51Z", + "id": 3985605, + "issues": [ + { + "id": 416949630, + "labels": ["dependency"], + "number": 269, + "title": "Update dependencies", + "url": "https://github.com/hapijs/nes/issues/269" + } + ], + "number": 68, + "url": "https://github.com/hapijs/nes/milestone/68", + "version": "10.0.1" + }, + { + "date": "2019-01-18T23:38:51Z", + "id": 3844691, + "issues": [ + { + "id": 400908568, + "labels": ["breaking changes"], + "number": 265, + "title": "hapi v18", + "url": "https://github.com/hapijs/nes/issues/265" + } + ], "number": 67, - "title": "Use internal auth endpoint id for lookup", - "url": "https://github.com/hapijs/nes/pull/67" - }, - { - "id": 114100358, - "labels": ["bug"], + "url": "https://github.com/hapijs/nes/milestone/67", + "version": "10.0.0" + }, + { + "date": "2018-11-24T03:54:05Z", + "id": 3811566, + "issues": [ + { + "id": 383845265, + "labels": ["feature"], + "number": 263, + "title": "Document minAuthVerifyInterval and make it less restrictive", + "url": "https://github.com/hapijs/nes/pull/263" + }, + { + "id": 383596224, + "labels": ["feature"], + "number": 262, + "title": "Close the socket when authentication verification fails", + "url": "https://github.com/hapijs/nes/pull/262" + }, + { + "id": 382630741, + "labels": ["feature"], + "number": 260, + "title": "Close the socket when authentication expires", + "url": "https://github.com/hapijs/nes/issues/260" + } + ], "number": 66, - "title": "Plugin route prefix cause mismatch with default internal auth endpoint", - "url": "https://github.com/hapijs/nes/issues/66" - } - ], - "number": 6, - "url": "https://github.com/hapijs/nes/milestone/6", - "version": "1.1.2" - }, - { - "date": "2015-10-21T20:48:26Z", - "id": 1368890, - "issues": [ - { - "id": 112675703, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/66", + "version": "9.1.0" + }, + { + "date": "2018-11-11T08:10:42Z", + "id": 3811565, + "issues": [ + { + "id": 379500091, + "labels": ["non issue", "dependency"], + "number": 256, + "title": "Cleanup", + "url": "https://github.com/hapijs/nes/issues/256" + } + ], "number": 65, - "title": "Return auth error message in response", - "url": "https://github.com/hapijs/nes/issues/65" - } - ], - "number": 5, - "url": "https://github.com/hapijs/nes/milestone/5", - "version": "1.1.1" - }, - { - "date": "2015-10-21T18:55:21Z", - "id": 1364410, - "issues": [ - { - "id": 112654243, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/65", + "version": "9.0.2" + }, + { + "date": "2018-11-11T08:06:30Z", + "id": 3466648, + "issues": [ + { + "id": 335336250, + "labels": ["bug"], + "number": 247, + "title": "Reconnect on error", + "url": "https://github.com/hapijs/nes/pull/247" + } + ], "number": 64, - "title": "Implement internal data for filtering messages", - "url": "https://github.com/hapijs/nes/pull/64" - }, - { - "id": 112375515, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/64", + "version": "9.0.1" + }, + { + "date": "2018-11-11T08:06:31Z", + "id": 3316853, + "issues": [ + { + "id": 319524696, + "labels": ["feature"], + "number": 243, + "title": "Add client.onHeartbeatTimeout hook", + "url": "https://github.com/hapijs/nes/pull/243" + } + ], "number": 63, - "title": "Add message metadata for publish", - "url": "https://github.com/hapijs/nes/issues/63" - }, - { - "id": 112072452, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/63", + "version": "8.1.0" + }, + { + "date": "2018-11-11T08:06:32Z", + "id": 3202345, + "issues": [ + { + "id": 306734970, + "labels": ["breaking changes", "dependency"], + "number": 229, + "title": "Update ws to 5.x.x", + "url": "https://github.com/hapijs/nes/pull/229" + } + ], "number": 62, - "title": "Implement eachSocket iterator", - "url": "https://github.com/hapijs/nes/pull/62" - }, - { - "id": 112069547, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/62", + "version": "8.0.0" + }, + { + "date": "2018-11-11T08:06:33Z", + "id": 3189537, + "issues": [ + { + "id": 305061522, + "labels": ["feature"], + "number": 228, + "title": "Mark NesErrors as coming from nes", + "url": "https://github.com/hapijs/nes/pull/228" + } + ], "number": 61, - "title": "Implement per-subscription lifecycle", - "url": "https://github.com/hapijs/nes/pull/61" - }, - { - "id": 112056783, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/61", + "version": "7.2.0" + }, + { + "date": "2018-11-11T08:06:34Z", + "id": 3176667, + "issues": [ + { + "id": 303740584, + "labels": ["feature"], + "number": 224, + "title": "Add socket.info object", + "url": "https://github.com/hapijs/nes/pull/224" + }, + { + "id": 303339979, + "labels": ["bug"], + "number": 223, + "title": "Delay heartbeats until server is started", + "url": "https://github.com/hapijs/nes/pull/223" + }, + { + "id": 303338214, + "labels": ["feature"], + "number": 222, + "title": "Allow isSameSite cookie option to be passed", + "url": "https://github.com/hapijs/nes/pull/222" + } + ], "number": 60, - "title": "Add onDisconnection callback", - "url": "https://github.com/hapijs/nes/pull/60" - }, - { - "id": 111849410, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/60", + "version": "7.1.0" + }, + { + "date": "2018-03-11T09:37:21Z", + "id": 3167676, + "issues": [ + { + "id": 302992282, + "labels": ["dependency"], + "number": 221, + "title": "Update hapijs/call to 5.x.x", + "url": "https://github.com/hapijs/nes/pull/221" + }, + { + "id": 302560395, + "labels": ["bug"], + "number": 220, + "title": "Ignore node network errors after opening client socket", + "url": "https://github.com/hapijs/nes/pull/220" + } + ], + "number": 59, + "url": "https://github.com/hapijs/nes/milestone/59", + "version": "7.0.4" + }, + { + "date": "2018-03-07T02:32:25Z", + "id": 2987489, + "issues": [ + { + "id": 294191491, + "labels": ["bug"], + "number": 214, + "title": "Do not replace message for all sockets with override from filter", + "url": "https://github.com/hapijs/nes/pull/214" + } + ], + "number": 58, + "url": "https://github.com/hapijs/nes/milestone/58", + "version": "7.0.3" + }, + { + "date": "2017-12-18T21:57:19Z", + "id": 2887225, + "issues": [ + { + "id": 283033975, + "labels": ["bug"], + "number": 206, + "title": "Handle ws socket error events", + "url": "https://github.com/hapijs/nes/issues/206" + } + ], + "number": 55, + "url": "https://github.com/hapijs/nes/milestone/55", + "version": "7.0.2" + }, + { + "date": "2017-11-03T23:51:47Z", + "id": 2873894, + "issues": [ + { + "id": 271147636, + "labels": ["bug"], + "number": 198, + "title": "Better error handling", + "url": "https://github.com/hapijs/nes/issues/198" + } + ], + "number": 54, + "url": "https://github.com/hapijs/nes/milestone/54", + "version": "7.0.1" + }, + { + "date": "2017-10-31T09:39:57Z", + "id": 2648349, + "issues": [ + { + "id": 269892866, + "labels": ["breaking changes", "dependency"], + "number": 196, + "title": "hapi v17", + "url": "https://github.com/hapijs/nes/issues/196" + }, + { + "id": 269520818, + "labels": ["dependency"], + "number": 195, + "title": "Update ws", + "url": "https://github.com/hapijs/nes/issues/195" + }, + { + "id": 269520767, + "labels": ["dependency"], + "number": 194, + "title": "Update babel script", + "url": "https://github.com/hapijs/nes/issues/194" + } + ], + "number": 53, + "url": "https://github.com/hapijs/nes/milestone/53", + "version": "7.0.0" + }, + { + "date": "2017-11-13T20:51:44Z", + "id": 2910113, + "issues": [ + { + "id": 273572817, + "labels": ["test"], + "number": 202, + "title": "Fix test", + "url": "https://github.com/hapijs/nes/issues/202" + } + ], + "number": 57, + "url": "https://github.com/hapijs/nes/milestone/57", + "version": "6.5.1" + }, + { + "date": "2017-11-13T20:49:18Z", + "id": 2910087, + "issues": [ + { + "id": 273566880, + "labels": ["dependency"], + "number": 201, + "title": "Update ws", + "url": "https://github.com/hapijs/nes/issues/201" + } + ], "number": 56, - "title": "Add disconnection callback", - "url": "https://github.com/hapijs/nes/issues/56" - } - ], - "number": 4, - "url": "https://github.com/hapijs/nes/milestone/4", - "version": "1.1.0" - }, - { - "date": "2015-10-19T17:03:59Z", - "id": 1302167, - "issues": [ - { - "id": 106407779, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/56", + "version": "6.5.0" + }, + { + "date": "2017-07-18T19:40:26Z", + "id": 2398996, + "issues": [ + { + "id": 236127539, + "labels": ["bug"], + "number": 179, + "title": "`maximum call stack exceeded` if web socket gets disconnected while nes is sending packets", + "url": "https://github.com/hapijs/nes/issues/179" + } + ], + "number": 52, + "url": "https://github.com/hapijs/nes/milestone/52", + "version": "6.4.3" + }, + { + "date": "2017-03-20T19:55:03Z", + "id": 2398988, + "issues": [ + { + "id": 177619150, + "labels": ["bug"], + "number": 156, + "title": "Handle undefined payloads from server in client", + "url": "https://github.com/hapijs/nes/issues/156" + } + ], + "number": 51, + "url": "https://github.com/hapijs/nes/milestone/51", + "version": "6.4.2" + }, + { + "date": "2017-03-20T19:50:47Z", + "id": 2190192, + "issues": [ + { + "id": 203613881, + "labels": ["bug", "security"], + "number": 171, + "title": "server falls with bad cookie header", + "url": "https://github.com/hapijs/nes/issues/171" + } + ], + "number": 50, + "url": "https://github.com/hapijs/nes/milestone/50", + "version": "6.4.1" + }, + { + "date": "2016-12-12T08:24:42Z", + "id": 2167982, + "issues": [ + { + "id": 194914275, + "labels": ["feature"], + "number": 169, + "title": "Expose server and connection on socket", + "url": "https://github.com/hapijs/nes/issues/169" + } + ], + "number": 49, + "url": "https://github.com/hapijs/nes/milestone/49", + "version": "6.4.0" + }, + { + "date": "2016-12-01T06:20:16Z", + "id": 1966833, + "issues": [ + { + "id": 192763227, + "labels": ["dependency"], + "number": 168, + "title": "Update deps", + "url": "https://github.com/hapijs/nes/issues/168" + } + ], + "number": 48, + "url": "https://github.com/hapijs/nes/milestone/48", + "version": "6.3.2" + }, + { + "date": "2016-08-27T01:10:07Z", + "id": 1964037, + "issues": [ + { + "id": 173569836, + "labels": ["feature"], + "number": 145, + "title": "Disable inject() validate", + "url": "https://github.com/hapijs/nes/issues/145" + } + ], + "number": 47, + "url": "https://github.com/hapijs/nes/milestone/47", + "version": "6.3.1" + }, + { + "date": "2016-08-25T22:44:32Z", + "id": 1919031, + "issues": [ + { + "id": 173013558, + "labels": ["feature"], + "number": 144, + "title": "Verify request Origin", + "url": "https://github.com/hapijs/nes/pull/144" + } + ], "number": 46, - "title": "socket.send()", - "url": "https://github.com/hapijs/nes/issues/46" - }, - { - "id": 106407672, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/nes/milestone/46", + "version": "6.3.0" + }, + { + "date": "2016-08-02T18:36:56Z", + "id": 1912298, + "issues": [ + { + "id": 168956618, + "labels": ["bug"], + "number": 142, + "title": "Reconnection timeout conflicts", + "url": "https://github.com/hapijs/nes/issues/142" + } + ], "number": 45, - "title": "Rename onBroadcast to onUpdate", - "url": "https://github.com/hapijs/nes/issues/45" - }, - { - "id": 106201264, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/45", + "version": "6.2.5" + }, + { + "date": "2016-07-29T17:47:00Z", + "id": 1910723, + "issues": [ + { + "id": 168275124, + "labels": ["documentation"], + "number": 141, + "title": "Add client.js and dist/ to npm tarball -Closes #140", + "url": "https://github.com/hapijs/nes/pull/141" + }, + { + "id": 168273915, + "labels": ["bug"], + "number": 140, + "title": "Missing root client.js and dist", + "url": "https://github.com/hapijs/nes/issues/140" + } + ], "number": 44, - "title": "Max reconnect retries", - "url": "https://github.com/hapijs/nes/issues/44" - }, - { - "id": 106201253, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/44", + "version": "6.2.4" + }, + { + "date": "2016-07-28T23:36:27Z", + "id": 1893141, + "issues": [ + { + "id": 168220600, + "labels": ["dependency"], + "number": 139, + "title": "Update deps", + "url": "https://github.com/hapijs/nes/issues/139" + } + ], "number": 43, - "title": "Connection timeout", - "url": "https://github.com/hapijs/nes/issues/43" - }, - { - "id": 105246358, - "labels": ["feature"], - "number": 22, - "title": "Add heartbeat", - "url": "https://github.com/hapijs/nes/issues/22" - }, - { - "id": 105049065, - "labels": ["feature"], - "number": 19, - "title": "Allow for custom callback data to Client.connect()", - "url": "https://github.com/hapijs/nes/issues/19" - }, - { - "id": 104838100, - "labels": ["feature"], - "number": 8, - "title": "Request timeout", - "url": "https://github.com/hapijs/nes/issues/8" - } - ], - "number": 3, - "url": "https://github.com/hapijs/nes/milestone/3", - "version": "1.0.0" - }, - { - "date": "2015-09-12T05:53:56Z", - "id": 1294211, - "issues": [ - { - "id": 106111412, - "labels": ["bug"], + "url": "https://github.com/hapijs/nes/milestone/43", + "version": "6.2.3" + }, + { + "date": "2016-07-19T22:47:16Z", + "id": 1833433, + "issues": [ + { + "id": 166455220, + "labels": ["bug"], + "number": 138, + "title": "Always call onConnection before onSubscribe", + "url": "https://github.com/hapijs/nes/issues/138" + } + ], "number": 42, - "title": "Remove duplicated statusCode in errors", - "url": "https://github.com/hapijs/nes/issues/42" - }, - { - "id": 106081497, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/42", + "version": "6.2.2" + }, + { + "date": "2016-06-16T22:31:28Z", + "id": 1827872, + "issues": [ + { + "id": 160775791, + "labels": ["bug"], + "number": 136, + "title": "Reuse pre-stringified hapi response", + "url": "https://github.com/hapijs/nes/issues/136" + } + ], "number": 41, - "title": "Filter headers in responses", - "url": "https://github.com/hapijs/nes/issues/41" - }, - { - "id": 106081409, - "labels": ["bug", "breaking changes"], + "url": "https://github.com/hapijs/nes/milestone/41", + "version": "6.2.1" + }, + { + "date": "2016-06-15T02:35:26Z", + "id": 1793117, + "issues": [ + { + "id": 160314808, + "labels": ["bug"], + "number": 135, + "title": "Cookie auth fails to register socket", + "url": "https://github.com/hapijs/nes/issues/135" + }, + { + "id": 160112500, + "labels": ["feature", "security"], + "number": 134, + "title": "Per user connection limit", + "url": "https://github.com/hapijs/nes/issues/134" + }, + { + "id": 160112256, + "labels": ["bug", "security"], + "number": 133, + "title": "Timeout sockets if hello takes too long", + "url": "https://github.com/hapijs/nes/issues/133" + } + ], "number": 40, - "title": "Consistent error transmission", - "url": "https://github.com/hapijs/nes/issues/40" - }, - { - "id": 106049691, - "labels": ["bug", "security"], + "url": "https://github.com/hapijs/nes/milestone/40", + "version": "6.2.0" + }, + { + "date": "2016-05-28T01:01:18Z", + "id": 1788349, + "issues": [ + { + "id": 157312152, + "labels": ["bug"], + "number": 132, + "title": "Client indicates wasRequested when calling disconnect() on dead socket", + "url": "https://github.com/hapijs/nes/issues/132" + } + ], + "number": 39, + "url": "https://github.com/hapijs/nes/milestone/39", + "version": "6.1.2" + }, + { + "date": "2016-05-25T19:57:18Z", + "id": 1779912, + "issues": [ + { + "id": 156835687, + "labels": ["bug"], + "number": 131, + "title": "Incorrectly reports wasRequested when internally disconnects", + "url": "https://github.com/hapijs/nes/issues/131" + } + ], "number": 38, - "title": "Prevent client from including a request authorization header", - "url": "https://github.com/hapijs/nes/issues/38" - }, - { - "id": 105920027, - "labels": ["bug"], + "url": "https://github.com/hapijs/nes/milestone/38", + "version": "6.1.1" + }, + { + "date": "2016-05-21T00:14:49Z", + "id": 1777536, + "issues": [ + { + "id": 156072625, + "labels": ["feature"], + "number": 129, + "title": "Include reason disconnected in log object", + "url": "https://github.com/hapijs/nes/issues/129" + } + ], + "number": 37, + "url": "https://github.com/hapijs/nes/milestone/37", + "version": "6.1.0" + }, + { + "date": "2016-05-19T20:08:55Z", + "id": 1770659, + "issues": [ + { + "id": 155817566, + "labels": ["test", "documentation", "dependency"], + "number": 127, + "title": "Test on node v6", + "url": "https://github.com/hapijs/nes/pull/127" + } + ], + "number": 36, + "url": "https://github.com/hapijs/nes/milestone/36", + "version": "6.0.2" + }, + { + "date": "2016-05-17T08:03:44Z", + "id": 1763706, + "issues": [ + { + "id": 155198879, + "labels": ["bug"], + "number": 126, + "title": "Handle cases when client._ws is null", + "url": "https://github.com/hapijs/nes/issues/126" + } + ], + "number": 35, + "url": "https://github.com/hapijs/nes/milestone/35", + "version": "6.0.1" + }, + { + "date": "2016-05-13T02:28:44Z", + "id": 1751994, + "issues": [ + { + "id": 154574472, + "labels": ["bug", "breaking changes"], + "number": 125, + "title": "Connect fails to check for previous internal socket when connecting.", + "url": "https://github.com/hapijs/nes/issues/125" + } + ], "number": 34, - "title": "Prevent client from subscribing multiple times to same path", - "url": "https://github.com/hapijs/nes/issues/34" - }, - { - "id": 105637442, - "labels": ["feature", "breaking changes"], + "url": "https://github.com/hapijs/nes/milestone/34", + "version": "6.0.0" + }, + { + "date": "2016-05-06T16:54:49Z", + "id": 1750982, + "issues": [ + { + "id": 153493279, + "labels": ["bug"], + "number": 124, + "title": "Adjust unsub processing timing on server", + "url": "https://github.com/hapijs/nes/issues/124" + } + ], + "number": 33, + "url": "https://github.com/hapijs/nes/milestone/33", + "version": "5.0.3" + }, + { + "date": "2016-05-06T06:26:45Z", + "id": 1750955, + "issues": [ + { + "id": 153386245, + "labels": ["bug"], + "number": 123, + "title": "Check is socket is still around while disconnecting", + "url": "https://github.com/hapijs/nes/issues/123" + } + ], "number": 32, - "title": "Change server onConnect to onConnection and delay until after auth when required", - "url": "https://github.com/hapijs/nes/issues/32" - }, - { - "id": 105465701, - "labels": ["bug", "security"], + "url": "https://github.com/hapijs/nes/milestone/32", + "version": "5.0.2" + }, + { + "date": "2016-05-06T05:46:28Z", + "id": 1750888, + "issues": [ + { + "id": 153382423, + "labels": ["bug"], + "number": 122, + "title": "Prevent server from sending data when stopping", + "url": "https://github.com/hapijs/nes/issues/122" + } + ], + "number": 31, + "url": "https://github.com/hapijs/nes/milestone/31", + "version": "5.0.1" + }, + { + "date": "2016-05-06T04:12:23Z", + "id": 1744150, + "issues": [ + { + "id": 153328026, + "labels": ["bug", "breaking changes"], + "number": 121, + "title": "Properly clean up sockets and subscriptions on server stop", + "url": "https://github.com/hapijs/nes/issues/121" + } + ], "number": 30, - "title": "Block all client requests when channel requires auth", - "url": "https://github.com/hapijs/nes/issues/30" - }, - { - "id": 105464784, - "labels": ["bug"], + "url": "https://github.com/hapijs/nes/milestone/30", + "version": "5.0.0" + }, + { + "date": "2016-05-03T07:52:57Z", + "id": 1744116, + "issues": [ + { + "id": 152718518, + "labels": ["feature"], + "number": 120, + "title": "Support user filter in eachSocket()", + "url": "https://github.com/hapijs/nes/issues/120" + } + ], "number": 29, - "title": "Fix typo", - "url": "https://github.com/hapijs/nes/pull/29" - }, - { - "id": 105463421, - "labels": ["bug"], + "url": "https://github.com/hapijs/nes/milestone/29", + "version": "4.6.0" + }, + { + "date": "2016-05-03T07:20:43Z", + "id": 1737072, + "issues": [ + { + "id": 152714524, + "labels": ["feature"], + "number": 119, + "title": "Subscription revoke()", + "url": "https://github.com/hapijs/nes/issues/119" + }, + { + "id": 152702180, + "labels": ["bug"], + "number": 118, + "title": "Keep separate subscription per connection", + "url": "https://github.com/hapijs/nes/issues/118" + } + ], "number": 28, - "title": "Implement unsubscribe on the server", - "url": "https://github.com/hapijs/nes/issues/28" - }, - { - "id": 105458344, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/28", + "version": "4.5.0" + }, + { + "date": "2016-04-28T17:40:59Z", + "id": 1732599, + "issues": [ + { + "id": 151701444, + "labels": ["bug"], + "number": 117, + "title": "Race condition between unsubscribe and disconnect when using auth index on sub", + "url": "https://github.com/hapijs/nes/issues/117" + } + ], "number": 27, - "title": "Expose socket authentication state", - "url": "https://github.com/hapijs/nes/issues/27" - }, - { - "id": 105414679, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/27", + "version": "4.4.1" + }, + { + "date": "2016-04-26T19:28:29Z", + "id": 1707836, + "issues": [ + { + "id": 151199192, + "labels": ["feature"], + "number": 116, + "title": "User-specific broadcast", + "url": "https://github.com/hapijs/nes/issues/116" + }, + { + "id": 151038794, + "labels": ["feature"], + "number": 115, + "title": "User-specific publish", + "url": "https://github.com/hapijs/nes/issues/115" + } + ], "number": 26, - "title": "Ability to force disconnect for specific clients", - "url": "https://github.com/hapijs/nes/issues/26" - }, - { - "id": 105309771, - "labels": ["feature", "breaking changes"], + "url": "https://github.com/hapijs/nes/milestone/26", + "version": "4.4.0" + }, + { + "date": "2016-04-14T22:31:48Z", + "id": 1674677, + "issues": [ + { + "id": 148501554, + "labels": ["feature"], + "number": 112, + "title": "Expose socket and support publish override", + "url": "https://github.com/hapijs/nes/issues/112" + }, + { + "id": 146488724, + "labels": ["non issue"], + "number": 109, + "title": "Typo: listners -> listeners", + "url": "https://github.com/hapijs/nes/pull/109" + } + ], "number": 25, - "title": "'data' vs 'message' for incoming data", - "url": "https://github.com/hapijs/nes/issues/25" - }, - { - "id": 105288915, - "labels": ["bug"], + "url": "https://github.com/hapijs/nes/milestone/25", + "version": "4.3.0" + }, + { + "date": "2016-03-30T18:43:44Z", + "id": 1673382, + "issues": [ + { + "id": 144642711, + "labels": ["bug"], + "number": 108, + "title": "Fix UMD global handling", + "url": "https://github.com/hapijs/nes/pull/108" + }, + { + "id": 143950380, + "labels": ["bug"], + "number": 105, + "title": "Client.js getting root as undefined", + "url": "https://github.com/hapijs/nes/issues/105" + } + ], "number": 24, - "title": "Subscriptions are not cleaned on client disconnect", - "url": "https://github.com/hapijs/nes/issues/24" - } - ], - "number": 2, - "url": "https://github.com/hapijs/nes/milestone/2", - "version": "0.4.0" - }, - { - "date": "2015-09-07T18:10:08Z", - "id": 1289644, - "issues": [ - { - "id": 105115325, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/24", + "version": "4.2.1" + }, + { + "date": "2016-03-30T06:40:53Z", + "id": 1667922, + "issues": [ + { + "id": 144479140, + "labels": ["feature"], + "number": 107, + "title": "Expose params on unsubscribe callback", + "url": "https://github.com/hapijs/nes/issues/107" + } + ], + "number": 23, + "url": "https://github.com/hapijs/nes/milestone/23", + "version": "4.2.0" + }, + { + "date": "2016-03-27T23:47:38Z", + "id": 1619034, + "issues": [ + { + "id": 143746308, + "labels": ["feature"], + "number": 104, + "title": "Provide a way to replace auth credentials before an automatic reconnect", + "url": "https://github.com/hapijs/nes/issues/104" + } + ], + "number": 22, + "url": "https://github.com/hapijs/nes/milestone/22", + "version": "4.1.0" + }, + { + "date": "2016-03-02T23:19:36Z", + "id": 1608660, + "issues": [ + { + "id": 138023954, + "labels": ["feature", "breaking changes"], + "number": 100, + "title": "Add required callback to subscription onSubscribe option", + "url": "https://github.com/hapijs/nes/issues/100" + } + ], "number": 21, - "title": "Drop support for non-protocol messages", - "url": "https://github.com/hapijs/nes/issues/21" - }, - { - "id": 105076096, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/21", + "version": "4.0.0" + }, + { + "date": "2016-02-26T19:27:45Z", + "id": 1605916, + "issues": [ + { + "id": 136790137, + "labels": ["bug"], + "number": 99, + "title": "Pause heartbeat disconnect while sending", + "url": "https://github.com/hapijs/nes/issues/99" + } + ], "number": 20, - "title": "Change default auth method to direct", - "url": "https://github.com/hapijs/nes/issues/20" - }, - { - "id": 105048671, - "labels": ["bug"], + "url": "https://github.com/hapijs/nes/milestone/20", + "version": "3.1.2" + }, + { + "date": "2016-02-25T19:24:51Z", + "id": 1596457, + "issues": [ + { + "id": 136484949, + "labels": ["bug"], + "number": 98, + "title": "Server disconnects client after a long message transmission", + "url": "https://github.com/hapijs/nes/issues/98" + } + ], + "number": 19, + "url": "https://github.com/hapijs/nes/milestone/19", + "version": "3.1.1" + }, + { + "date": "2016-02-22T08:28:19Z", + "id": 1554938, + "issues": [ + { + "id": 135179049, + "labels": ["feature", "breaking changes"], + "number": 97, + "title": "Break large messages into smaller chunks", + "url": "https://github.com/hapijs/nes/issues/97" + }, + { + "id": 127817286, + "labels": ["feature"], + "number": 94, + "title": "Support sending initial subscription update", + "url": "https://github.com/hapijs/nes/issues/94" + } + ], "number": 18, - "title": "Race condition exists in client reconnect logic", - "url": "https://github.com/hapijs/nes/issues/18" - }, - { - "id": 105047616, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/18", + "version": "3.1.0" + }, + { + "date": "2016-02-01T08:59:41Z", + "id": 1533804, + "issues": [ + { + "id": 130300841, + "labels": ["security", "breaking changes", "dependency"], + "number": 96, + "title": "Update Iron and increase auto-generated password to 32 characters", + "url": "https://github.com/hapijs/nes/issues/96" + } + ], "number": 17, - "title": "Allow for custom messages", - "url": "https://github.com/hapijs/nes/pull/17" - }, - { - "id": 105035033, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/17", + "version": "3.0.0" + }, + { + "date": "2016-01-22T06:53:38Z", + "id": 1530592, + "issues": [ + { + "id": 128096551, + "labels": ["bug"], + "number": 95, + "title": "Emit error when disconnecting due to missing server heartbeat", + "url": "https://github.com/hapijs/nes/issues/95" + } + ], "number": 16, - "title": "Turn auth on by default", - "url": "https://github.com/hapijs/nes/issues/16" - }, - { - "id": 105004952, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/16", + "version": "2.3.1" + }, + { + "date": "2016-01-21T08:50:27Z", + "id": 1520932, + "issues": [ + { + "id": 127801249, + "labels": ["bug"], + "number": 93, + "title": "Client requests fail if the request response takes longer than heartbeat timeout", + "url": "https://github.com/hapijs/nes/issues/93" + } + ], "number": 15, - "title": "Add onConnect callback option", - "url": "https://github.com/hapijs/nes/pull/15" - }, - { - "id": 105004232, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/15", + "version": "2.3.0" + }, + { + "date": "2016-01-20T00:36:55Z", + "id": 1509673, + "issues": [ + { + "id": 127573847, + "labels": ["feature"], + "number": 92, + "title": "Return close event reason in onDisconnect", + "url": "https://github.com/hapijs/nes/issues/92" + }, + { + "id": 127337752, + "labels": ["bug"], + "number": 90, + "title": "NesError breaks if passed an error event from onerror.", + "url": "https://github.com/hapijs/nes/issues/90" + }, + { + "id": 116071552, + "labels": ["feature"], + "number": 76, + "title": "Pass the onclose information to onDisconnect", + "url": "https://github.com/hapijs/nes/issues/76" + } + ], "number": 14, - "title": "Add event callback for client connection", - "url": "https://github.com/hapijs/nes/issues/14" - }, - { - "id": 104993913, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/14", + "version": "2.2.0" + }, + { + "date": "2016-01-15T21:02:18Z", + "id": 1488266, + "issues": [ + { + "id": 126956435, + "labels": ["feature"], + "number": 89, + "title": "Decorate errors with source type", + "url": "https://github.com/hapijs/nes/issues/89" + }, + { + "id": 126933305, + "labels": ["bug"], + "number": 88, + "title": "onDisconnect() reports reconnect state incorrectly", + "url": "https://github.com/hapijs/nes/issues/88" + } + ], + "number": 13, + "url": "https://github.com/hapijs/nes/milestone/13", + "version": "2.1.0" + }, + { + "date": "2016-01-06T20:23:32Z", + "id": 1483412, + "issues": [ + { + "id": 125001426, + "labels": ["bug"], + "number": 87, + "title": "The update to ws 1.0.x introduces breaking changes", + "url": "https://github.com/hapijs/nes/issues/87" + } + ], "number": 12, - "title": "Add browser packaging entry points", - "url": "https://github.com/hapijs/nes/pull/12" - }, - { - "id": 104841021, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/12", + "version": "2.0.2" + }, + { + "date": "2016-01-04T20:39:50Z", + "id": 1441486, + "issues": [ + { + "id": 124828639, + "labels": ["security", "dependency"], + "number": 86, + "title": "update ws to 1.0.x", + "url": "https://github.com/hapijs/nes/pull/86" + } + ], "number": 11, - "title": "Initial publish/subscribe interface", - "url": "https://github.com/hapijs/nes/issues/11" - }, - { - "id": 104838136, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/11", + "version": "2.0.1" + }, + { + "date": "2015-12-03T08:38:30Z", + "id": 1438067, + "issues": [ + { + "id": 120001127, + "labels": ["feature", "breaking changes"], + "number": 84, + "title": "Change client.subscribe() to require a callback", + "url": "https://github.com/hapijs/nes/issues/84" + }, + { + "id": 120001032, + "labels": ["feature", "breaking changes"], + "number": 83, + "title": "Add version check in hello", + "url": "https://github.com/hapijs/nes/issues/83" + } + ], + "number": 10, + "url": "https://github.com/hapijs/nes/milestone/10", + "version": "2.0.0" + }, + { + "date": "2015-12-01T18:21:00Z", + "id": 1409927, + "issues": [ + { + "id": 119658520, + "labels": ["bug"], + "number": 81, + "title": "Fix illegal invocation error when using default onError handler.", + "url": "https://github.com/hapijs/nes/pull/81" + } + ], "number": 9, - "title": "Use console.error() when no onError handler", - "url": "https://github.com/hapijs/nes/issues/9" - }, - { - "id": 104830125, - "labels": ["bug"], + "url": "https://github.com/hapijs/nes/milestone/9", + "version": "1.2.2" + }, + { + "date": "2015-11-13T07:43:53Z", + "id": 1396358, + "issues": [ + { + "id": 116443477, + "labels": ["bug"], + "number": 79, + "title": "Possible to subscribe, unsubscribe, and resubscribe? v1.2.0", + "url": "https://github.com/hapijs/nes/issues/79" + } + ], + "number": 8, + "url": "https://github.com/hapijs/nes/milestone/8", + "version": "1.2.1" + }, + { + "date": "2015-11-05T20:22:41Z", + "id": 1383976, + "issues": [ + { + "id": 115351236, + "labels": ["feature"], + "number": 72, + "title": "Update to create a es5 client artifact", + "url": "https://github.com/hapijs/nes/pull/72" + }, + { + "id": 115248506, + "labels": ["feature"], + "number": 71, + "title": "Add socket.app", + "url": "https://github.com/hapijs/nes/issues/71" + }, + { + "id": 115237510, + "labels": ["feature"], + "number": 70, + "title": "Decorate request with socket", + "url": "https://github.com/hapijs/nes/issues/70" + }, + { + "id": 115149883, + "labels": ["feature", "breaking changes"], + "number": 69, + "title": "ES6 style changes", + "url": "https://github.com/hapijs/nes/issues/69" + } + ], + "number": 7, + "url": "https://github.com/hapijs/nes/milestone/7", + "version": "1.2.0" + }, + { + "date": "2015-10-29T18:04:22Z", + "id": 1369059, + "issues": [ + { + "id": 114107063, + "labels": ["bug"], + "number": 67, + "title": "Use internal auth endpoint id for lookup", + "url": "https://github.com/hapijs/nes/pull/67" + }, + { + "id": 114100358, + "labels": ["bug"], + "number": 66, + "title": "Plugin route prefix cause mismatch with default internal auth endpoint", + "url": "https://github.com/hapijs/nes/issues/66" + } + ], "number": 6, - "title": "Re-auth on reconnect", - "url": "https://github.com/hapijs/nes/issues/6" - }, - { - "id": 104819805, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/6", + "version": "1.1.2" + }, + { + "date": "2015-10-21T20:48:26Z", + "id": 1368890, + "issues": [ + { + "id": 112675703, + "labels": ["feature"], + "number": 65, + "title": "Return auth error message in response", + "url": "https://github.com/hapijs/nes/issues/65" + } + ], "number": 5, - "title": "Allow any authentication method when using token auth", - "url": "https://github.com/hapijs/nes/issues/5" - }, - { - "id": 104814526, - "labels": ["feature"], + "url": "https://github.com/hapijs/nes/milestone/5", + "version": "1.1.1" + }, + { + "date": "2015-10-21T18:55:21Z", + "id": 1364410, + "issues": [ + { + "id": 112654243, + "labels": ["feature"], + "number": 64, + "title": "Implement internal data for filtering messages", + "url": "https://github.com/hapijs/nes/pull/64" + }, + { + "id": 112375515, + "labels": ["feature"], + "number": 63, + "title": "Add message metadata for publish", + "url": "https://github.com/hapijs/nes/issues/63" + }, + { + "id": 112072452, + "labels": ["feature"], + "number": 62, + "title": "Implement eachSocket iterator", + "url": "https://github.com/hapijs/nes/pull/62" + }, + { + "id": 112069547, + "labels": ["feature"], + "number": 61, + "title": "Implement per-subscription lifecycle", + "url": "https://github.com/hapijs/nes/pull/61" + }, + { + "id": 112056783, + "labels": ["feature"], + "number": 60, + "title": "Add onDisconnection callback", + "url": "https://github.com/hapijs/nes/pull/60" + }, + { + "id": 111849410, + "labels": ["feature"], + "number": 56, + "title": "Add disconnection callback", + "url": "https://github.com/hapijs/nes/issues/56" + } + ], "number": 4, - "title": "Allow handler to handle unknown message types", - "url": "https://github.com/hapijs/nes/issues/4" - }, - { - "id": 104749207, - "labels": ["support"], + "url": "https://github.com/hapijs/nes/milestone/4", + "version": "1.1.0" + }, + { + "date": "2015-10-19T17:03:59Z", + "id": 1302167, + "issues": [ + { + "id": 106407779, + "labels": ["feature"], + "number": 46, + "title": "socket.send()", + "url": "https://github.com/hapijs/nes/issues/46" + }, + { + "id": 106407672, + "labels": ["breaking changes"], + "number": 45, + "title": "Rename onBroadcast to onUpdate", + "url": "https://github.com/hapijs/nes/issues/45" + }, + { + "id": 106201264, + "labels": ["feature"], + "number": 44, + "title": "Max reconnect retries", + "url": "https://github.com/hapijs/nes/issues/44" + }, + { + "id": 106201253, + "labels": ["feature"], + "number": 43, + "title": "Connection timeout", + "url": "https://github.com/hapijs/nes/issues/43" + }, + { + "id": 105246358, + "labels": ["feature"], + "number": 22, + "title": "Add heartbeat", + "url": "https://github.com/hapijs/nes/issues/22" + }, + { + "id": 105049065, + "labels": ["feature"], + "number": 19, + "title": "Allow for custom callback data to Client.connect()", + "url": "https://github.com/hapijs/nes/issues/19" + }, + { + "id": 104838100, + "labels": ["feature"], + "number": 8, + "title": "Request timeout", + "url": "https://github.com/hapijs/nes/issues/8" + } + ], "number": 3, - "title": "How will adding additional functionality work?", - "url": "https://github.com/hapijs/nes/issues/3" - } - ], - "number": 1, - "url": "https://github.com/hapijs/nes/milestone/1", - "version": "0.3.0" - } + "url": "https://github.com/hapijs/nes/milestone/3", + "version": "1.0.0" + }, + { + "date": "2015-09-12T05:53:56Z", + "id": 1294211, + "issues": [ + { + "id": 106111412, + "labels": ["bug"], + "number": 42, + "title": "Remove duplicated statusCode in errors", + "url": "https://github.com/hapijs/nes/issues/42" + }, + { + "id": 106081497, + "labels": ["feature"], + "number": 41, + "title": "Filter headers in responses", + "url": "https://github.com/hapijs/nes/issues/41" + }, + { + "id": 106081409, + "labels": ["bug", "breaking changes"], + "number": 40, + "title": "Consistent error transmission", + "url": "https://github.com/hapijs/nes/issues/40" + }, + { + "id": 106049691, + "labels": ["bug", "security"], + "number": 38, + "title": "Prevent client from including a request authorization header", + "url": "https://github.com/hapijs/nes/issues/38" + }, + { + "id": 105920027, + "labels": ["bug"], + "number": 34, + "title": "Prevent client from subscribing multiple times to same path", + "url": "https://github.com/hapijs/nes/issues/34" + }, + { + "id": 105637442, + "labels": ["feature", "breaking changes"], + "number": 32, + "title": "Change server onConnect to onConnection and delay until after auth when required", + "url": "https://github.com/hapijs/nes/issues/32" + }, + { + "id": 105465701, + "labels": ["bug", "security"], + "number": 30, + "title": "Block all client requests when channel requires auth", + "url": "https://github.com/hapijs/nes/issues/30" + }, + { + "id": 105464784, + "labels": ["bug"], + "number": 29, + "title": "Fix typo", + "url": "https://github.com/hapijs/nes/pull/29" + }, + { + "id": 105463421, + "labels": ["bug"], + "number": 28, + "title": "Implement unsubscribe on the server", + "url": "https://github.com/hapijs/nes/issues/28" + }, + { + "id": 105458344, + "labels": ["feature"], + "number": 27, + "title": "Expose socket authentication state", + "url": "https://github.com/hapijs/nes/issues/27" + }, + { + "id": 105414679, + "labels": ["feature"], + "number": 26, + "title": "Ability to force disconnect for specific clients", + "url": "https://github.com/hapijs/nes/issues/26" + }, + { + "id": 105309771, + "labels": ["feature", "breaking changes"], + "number": 25, + "title": "'data' vs 'message' for incoming data", + "url": "https://github.com/hapijs/nes/issues/25" + }, + { + "id": 105288915, + "labels": ["bug"], + "number": 24, + "title": "Subscriptions are not cleaned on client disconnect", + "url": "https://github.com/hapijs/nes/issues/24" + } + ], + "number": 2, + "url": "https://github.com/hapijs/nes/milestone/2", + "version": "0.4.0" + }, + { + "date": "2015-09-07T18:10:08Z", + "id": 1289644, + "issues": [ + { + "id": 105115325, + "labels": ["feature"], + "number": 21, + "title": "Drop support for non-protocol messages", + "url": "https://github.com/hapijs/nes/issues/21" + }, + { + "id": 105076096, + "labels": ["feature"], + "number": 20, + "title": "Change default auth method to direct", + "url": "https://github.com/hapijs/nes/issues/20" + }, + { + "id": 105048671, + "labels": ["bug"], + "number": 18, + "title": "Race condition exists in client reconnect logic", + "url": "https://github.com/hapijs/nes/issues/18" + }, + { + "id": 105047616, + "labels": ["feature"], + "number": 17, + "title": "Allow for custom messages", + "url": "https://github.com/hapijs/nes/pull/17" + }, + { + "id": 105035033, + "labels": ["feature"], + "number": 16, + "title": "Turn auth on by default", + "url": "https://github.com/hapijs/nes/issues/16" + }, + { + "id": 105004952, + "labels": ["feature"], + "number": 15, + "title": "Add onConnect callback option", + "url": "https://github.com/hapijs/nes/pull/15" + }, + { + "id": 105004232, + "labels": ["feature"], + "number": 14, + "title": "Add event callback for client connection", + "url": "https://github.com/hapijs/nes/issues/14" + }, + { + "id": 104993913, + "labels": ["feature"], + "number": 12, + "title": "Add browser packaging entry points", + "url": "https://github.com/hapijs/nes/pull/12" + }, + { + "id": 104841021, + "labels": ["feature"], + "number": 11, + "title": "Initial publish/subscribe interface", + "url": "https://github.com/hapijs/nes/issues/11" + }, + { + "id": 104838136, + "labels": ["feature"], + "number": 9, + "title": "Use console.error() when no onError handler", + "url": "https://github.com/hapijs/nes/issues/9" + }, + { + "id": 104830125, + "labels": ["bug"], + "number": 6, + "title": "Re-auth on reconnect", + "url": "https://github.com/hapijs/nes/issues/6" + }, + { + "id": 104819805, + "labels": ["feature"], + "number": 5, + "title": "Allow any authentication method when using token auth", + "url": "https://github.com/hapijs/nes/issues/5" + }, + { + "id": 104814526, + "labels": ["feature"], + "number": 4, + "title": "Allow handler to handle unknown message types", + "url": "https://github.com/hapijs/nes/issues/4" + }, + { + "id": 104749207, + "labels": ["support"], + "number": 3, + "title": "How will adding additional functionality work?", + "url": "https://github.com/hapijs/nes/issues/3" + } + ], + "number": 1, + "url": "https://github.com/hapijs/nes/milestone/1", + "version": "0.3.0" + } ] diff --git a/generated/modules/nes/info.json b/generated/modules/nes/info.json index d22d94fa..9acd8cfa 100644 --- a/generated/modules/nes/info.json +++ b/generated/modules/nes/info.json @@ -1,28 +1,28 @@ { - "api": true, - "forks": 86, - "isPlugin": true, - "link": "https://github.com/hapijs/nes", - "name": "nes", - "package": "@hapi/nes", - "slogan": "WebSocket adapter plugin for hapi routes.", - "sloganHtml": "WebSocket adapter plugin for hapi routes.", - "stars": 501, - "updated": "2025-01-08T21:42:46Z", - "versions": [ - { - "branch": "v13.0.1", - "license": "BSD", - "name": "13.0.1", - "node": ">= 16" - }, - { - "branch": "v14.0.1", - "license": "BSD", - "name": "14.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["14.0.1", "13.0.1"], - "latestVersion": "14.x.x" + "api": true, + "forks": 86, + "isPlugin": true, + "latestVersion": "14.x.x", + "link": "https://github.com/hapijs/nes", + "name": "nes", + "package": "@hapi/nes", + "slogan": "WebSocket adapter plugin for hapi routes.", + "sloganHtml": "WebSocket adapter plugin for hapi routes.", + "stars": 501, + "updated": "2025-01-08T21:42:46Z", + "versions": [ + { + "branch": "v13.0.1", + "license": "BSD", + "name": "13.0.1", + "node": ">= 16" + }, + { + "branch": "v14.0.1", + "license": "BSD", + "name": "14.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["14.0.1", "13.0.1"] } diff --git a/generated/modules/nigel/changelog.json b/generated/modules/nigel/changelog.json index 0dd9387b..aaf56dee 100644 --- a/generated/modules/nigel/changelog.json +++ b/generated/modules/nigel/changelog.json @@ -1,302 +1,302 @@ [ - { - "date": "2023-02-11T18:06:10Z", - "id": 8012496, - "issues": [ - { - "id": 1551767341, - "labels": [], - "number": 33, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/nigel/pull/33" - } - ], - "number": 20, - "url": "https://github.com/hapijs/nigel/milestone/20", - "version": "5.0.1" - }, - { - "date": "2022-05-24T02:49:20Z", - "id": 8012495, - "issues": [ - { - "id": 1245887608, - "labels": ["breaking changes", "dependency"], - "number": 32, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/nigel/pull/32" - } - ], - "number": 19, - "url": "https://github.com/hapijs/nigel/milestone/19", - "version": "5.0.0" - }, - { - "date": "2020-07-05T05:26:03Z", - "id": 5593016, - "issues": [ - { - "id": 648651417, - "labels": ["bug"], - "number": 26, - "title": "fix duplicate 'close' events", - "url": "https://github.com/hapijs/nigel/pull/26" - } - ], - "number": 17, - "url": "https://github.com/hapijs/nigel/milestone/17", - "version": "4.0.2" - }, - { - "date": "2020-06-29T06:16:25Z", - "id": 4973406, - "issues": [ - { - "id": 647130584, - "labels": ["bug"], - "number": 25, - "title": "close event emitted twice", - "url": "https://github.com/hapijs/nigel/issues/25" - } - ], - "number": 16, - "url": "https://github.com/hapijs/nigel/milestone/16", - "version": "4.0.1" - }, - { - "date": "2020-01-05T06:36:12Z", - "id": 4973405, - "issues": [ - { - "id": 545378097, - "labels": ["breaking changes", "dependency"], - "number": 23, - "title": "Only node 12", - "url": "https://github.com/hapijs/nigel/issues/23" - } - ], - "number": 15, - "url": "https://github.com/hapijs/nigel/milestone/15", - "version": "4.0.0" - }, - { - "date": "2019-08-15T01:19:30Z", - "id": 4194606, - "issues": [ - { - "id": 480900845, - "labels": ["dependency"], - "number": 21, - "title": "Update deps", - "url": "https://github.com/hapijs/nigel/issues/21" - } - ], - "number": 13, - "url": "https://github.com/hapijs/nigel/milestone/13", - "version": "3.1.1" - }, - { - "date": "2019-04-02T17:45:18Z", - "id": 3792287, - "issues": [ - { - "id": 428358553, - "labels": ["dependency"], + { + "date": "2023-02-11T18:06:10Z", + "id": 8012496, + "issues": [ + { + "id": 1551767341, + "labels": [], + "number": 33, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/nigel/pull/33" + } + ], + "number": 20, + "url": "https://github.com/hapijs/nigel/milestone/20", + "version": "5.0.1" + }, + { + "date": "2022-05-24T02:49:20Z", + "id": 8012495, + "issues": [ + { + "id": 1245887608, + "labels": ["breaking changes", "dependency"], + "number": 32, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/nigel/pull/32" + } + ], "number": 19, - "title": "Change module namespace", - "url": "https://github.com/hapijs/nigel/issues/19" - } - ], - "number": 10, - "url": "https://github.com/hapijs/nigel/milestone/10", - "version": "3.1.0" - }, - { - "date": "2018-11-03T00:33:51Z", - "id": 3788796, - "issues": [ - { - "id": 377002893, - "labels": ["non issue"], + "url": "https://github.com/hapijs/nigel/milestone/19", + "version": "5.0.0" + }, + { + "date": "2020-07-05T05:26:03Z", + "id": 5593016, + "issues": [ + { + "id": 648651417, + "labels": ["bug"], + "number": 26, + "title": "fix duplicate 'close' events", + "url": "https://github.com/hapijs/nigel/pull/26" + } + ], + "number": 17, + "url": "https://github.com/hapijs/nigel/milestone/17", + "version": "4.0.2" + }, + { + "date": "2020-06-29T06:16:25Z", + "id": 4973406, + "issues": [ + { + "id": 647130584, + "labels": ["bug"], + "number": 25, + "title": "close event emitted twice", + "url": "https://github.com/hapijs/nigel/issues/25" + } + ], "number": 16, - "title": "Remove engines", - "url": "https://github.com/hapijs/nigel/issues/16" - } - ], - "number": 9, - "url": "https://github.com/hapijs/nigel/milestone/9", - "version": "3.0.4" - }, - { - "date": "2018-11-01T18:37:34Z", - "id": 3784167, - "issues": [ - { - "id": 376516844, - "labels": ["dependency"], + "url": "https://github.com/hapijs/nigel/milestone/16", + "version": "4.0.1" + }, + { + "date": "2020-01-05T06:36:12Z", + "id": 4973405, + "issues": [ + { + "id": 545378097, + "labels": ["breaking changes", "dependency"], + "number": 23, + "title": "Only node 12", + "url": "https://github.com/hapijs/nigel/issues/23" + } + ], "number": 15, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/nigel/issues/15" - } - ], - "number": 8, - "url": "https://github.com/hapijs/nigel/milestone/8", - "version": "3.0.3" - }, - { - "date": "2018-10-31T05:49:54Z", - "id": 3232155, - "issues": [ - { - "id": 375802535, - "labels": ["non issue"], - "number": 14, - "title": "Cleanup", - "url": "https://github.com/hapijs/nigel/issues/14" - } - ], - "number": 7, - "url": "https://github.com/hapijs/nigel/milestone/7", - "version": "3.0.2" - }, - { - "date": "2018-03-31T00:18:14Z", - "id": 2794164, - "issues": [ - { - "id": 307175392, - "labels": ["bug"], + "url": "https://github.com/hapijs/nigel/milestone/15", + "version": "4.0.0" + }, + { + "date": "2019-08-15T01:19:30Z", + "id": 4194606, + "issues": [ + { + "id": 480900845, + "labels": ["dependency"], + "number": 21, + "title": "Update deps", + "url": "https://github.com/hapijs/nigel/issues/21" + } + ], "number": 13, - "title": "Remove new Buffer usage", - "url": "https://github.com/hapijs/nigel/pull/13" - }, - { - "id": 304102761, - "labels": ["non issue"], - "number": 12, - "title": "Remove `noAssert` argument from buffer functions", - "url": "https://github.com/hapijs/nigel/pull/12" - } - ], - "number": 6, - "url": "https://github.com/hapijs/nigel/milestone/6", - "version": "3.0.1" - }, - { - "date": "2017-09-26T08:56:40Z", - "id": 1910376, - "issues": [ - { - "id": 260544004, - "labels": ["breaking changes"], - "number": 11, - "title": "Node 8", - "url": "https://github.com/hapijs/nigel/issues/11" - } - ], - "number": 5, - "url": "https://github.com/hapijs/nigel/milestone/5", - "version": "3.0.0" - }, - { - "date": "2019-03-25T18:40:22Z", - "id": 4170984, - "issues": [ - { - "id": 425047281, - "labels": ["lts"], - "number": 18, - "title": "Commercial version of v2 branch", - "url": "https://github.com/hapijs/nigel/issues/18" - } - ], - "number": 11, - "url": "https://github.com/hapijs/nigel/milestone/11", - "version": "2.1.0" - }, - { - "date": "2016-07-28T19:43:23Z", - "id": 1777302, - "issues": [ - { - "id": 168179635, - "labels": ["dependency"], + "url": "https://github.com/hapijs/nigel/milestone/13", + "version": "3.1.1" + }, + { + "date": "2019-04-02T17:45:18Z", + "id": 3792287, + "issues": [ + { + "id": 428358553, + "labels": ["dependency"], + "number": 19, + "title": "Change module namespace", + "url": "https://github.com/hapijs/nigel/issues/19" + } + ], "number": 10, - "title": "Update deps", - "url": "https://github.com/hapijs/nigel/issues/10" - } - ], - "number": 4, - "url": "https://github.com/hapijs/nigel/milestone/4", - "version": "2.0.2" - }, - { - "date": "2016-05-19T18:11:22Z", - "id": 1390426, - "issues": [ - { - "id": 155488985, - "labels": ["test", "documentation", "dependency"], + "url": "https://github.com/hapijs/nigel/milestone/10", + "version": "3.1.0" + }, + { + "date": "2018-11-03T00:33:51Z", + "id": 3788796, + "issues": [ + { + "id": 377002893, + "labels": ["non issue"], + "number": 16, + "title": "Remove engines", + "url": "https://github.com/hapijs/nigel/issues/16" + } + ], "number": 9, - "title": "Update hoek & lab", - "url": "https://github.com/hapijs/nigel/pull/9" - } - ], - "number": 3, - "url": "https://github.com/hapijs/nigel/milestone/3", - "version": "2.0.1" - }, - { - "date": "2015-11-03T04:29:49Z", - "id": 811748, - "issues": [ - { - "id": 114738690, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/nigel/milestone/9", + "version": "3.0.4" + }, + { + "date": "2018-11-01T18:37:34Z", + "id": 3784167, + "issues": [ + { + "id": 376516844, + "labels": ["dependency"], + "number": 15, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/nigel/issues/15" + } + ], + "number": 8, + "url": "https://github.com/hapijs/nigel/milestone/8", + "version": "3.0.3" + }, + { + "date": "2018-10-31T05:49:54Z", + "id": 3232155, + "issues": [ + { + "id": 375802535, + "labels": ["non issue"], + "number": 14, + "title": "Cleanup", + "url": "https://github.com/hapijs/nigel/issues/14" + } + ], + "number": 7, + "url": "https://github.com/hapijs/nigel/milestone/7", + "version": "3.0.2" + }, + { + "date": "2018-03-31T00:18:14Z", + "id": 2794164, + "issues": [ + { + "id": 307175392, + "labels": ["bug"], + "number": 13, + "title": "Remove new Buffer usage", + "url": "https://github.com/hapijs/nigel/pull/13" + }, + { + "id": 304102761, + "labels": ["non issue"], + "number": 12, + "title": "Remove `noAssert` argument from buffer functions", + "url": "https://github.com/hapijs/nigel/pull/12" + } + ], + "number": 6, + "url": "https://github.com/hapijs/nigel/milestone/6", + "version": "3.0.1" + }, + { + "date": "2017-09-26T08:56:40Z", + "id": 1910376, + "issues": [ + { + "id": 260544004, + "labels": ["breaking changes"], + "number": 11, + "title": "Node 8", + "url": "https://github.com/hapijs/nigel/issues/11" + } + ], "number": 5, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/nigel/issues/5" - }, - { - "id": 112796891, - "labels": ["feature"], + "url": "https://github.com/hapijs/nigel/milestone/5", + "version": "3.0.0" + }, + { + "date": "2019-03-25T18:40:22Z", + "id": 4170984, + "issues": [ + { + "id": 425047281, + "labels": ["lts"], + "number": 18, + "title": "Commercial version of v2 branch", + "url": "https://github.com/hapijs/nigel/issues/18" + } + ], + "number": 11, + "url": "https://github.com/hapijs/nigel/milestone/11", + "version": "2.1.0" + }, + { + "date": "2016-07-28T19:43:23Z", + "id": 1777302, + "issues": [ + { + "id": 168179635, + "labels": ["dependency"], + "number": 10, + "title": "Update deps", + "url": "https://github.com/hapijs/nigel/issues/10" + } + ], "number": 4, - "title": "Adjust whitespace after semicolons to fix tests", - "url": "https://github.com/hapijs/nigel/pull/4" - }, - { - "id": 59536204, - "labels": ["test", "dependency"], + "url": "https://github.com/hapijs/nigel/milestone/4", + "version": "2.0.2" + }, + { + "date": "2016-05-19T18:11:22Z", + "id": 1390426, + "issues": [ + { + "id": 155488985, + "labels": ["test", "documentation", "dependency"], + "number": 9, + "title": "Update hoek & lab", + "url": "https://github.com/hapijs/nigel/pull/9" + } + ], "number": 3, - "title": "Update to Lab 5.x.x and Code 1.x.x", - "url": "https://github.com/hapijs/nigel/pull/3" - }, - { - "id": 58941629, - "labels": ["test"], + "url": "https://github.com/hapijs/nigel/milestone/3", + "version": "2.0.1" + }, + { + "date": "2015-11-03T04:29:49Z", + "id": 811748, + "issues": [ + { + "id": 114738690, + "labels": ["breaking changes"], + "number": 5, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/nigel/issues/5" + }, + { + "id": 112796891, + "labels": ["feature"], + "number": 4, + "title": "Adjust whitespace after semicolons to fix tests", + "url": "https://github.com/hapijs/nigel/pull/4" + }, + { + "id": 59536204, + "labels": ["test", "dependency"], + "number": 3, + "title": "Update to Lab 5.x.x and Code 1.x.x", + "url": "https://github.com/hapijs/nigel/pull/3" + }, + { + "id": 58941629, + "labels": ["test"], + "number": 2, + "title": "Update .travis.yml", + "url": "https://github.com/hapijs/nigel/pull/2" + } + ], "number": 2, - "title": "Update .travis.yml", - "url": "https://github.com/hapijs/nigel/pull/2" - } - ], - "number": 2, - "url": "https://github.com/hapijs/nigel/milestone/2", - "version": "2.0.0" - }, - { - "date": "2014-10-02T18:18:49Z", - "id": 805550, - "issues": [ - { - "id": 44221440, - "labels": ["feature"], + "url": "https://github.com/hapijs/nigel/milestone/2", + "version": "2.0.0" + }, + { + "date": "2014-10-02T18:18:49Z", + "id": 805550, + "issues": [ + { + "id": 44221440, + "labels": ["feature"], + "number": 1, + "title": "Performance tweaks", + "url": "https://github.com/hapijs/nigel/issues/1" + } + ], "number": 1, - "title": "Performance tweaks", - "url": "https://github.com/hapijs/nigel/issues/1" - } - ], - "number": 1, - "url": "https://github.com/hapijs/nigel/milestone/1", - "version": "1.0.1" - } + "url": "https://github.com/hapijs/nigel/milestone/1", + "version": "1.0.1" + } ] diff --git a/generated/modules/nigel/info.json b/generated/modules/nigel/info.json index 818670dc..8e02062b 100644 --- a/generated/modules/nigel/info.json +++ b/generated/modules/nigel/info.json @@ -1,22 +1,22 @@ { - "api": false, - "forks": 10, - "isPlugin": false, - "link": "https://github.com/hapijs/nigel", - "name": "nigel", - "package": "@hapi/nigel", - "slogan": "Boyer-Moore-Horspool algorithms", - "sloganHtml": "Boyer-Moore-Horspool algorithms", - "stars": 16, - "updated": "2025-08-24T14:33:19Z", - "versions": [ - { - "branch": "v5.0.1", - "license": "BSD", - "name": "5.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["5.0.1"], - "latestVersion": "5.x.x" + "api": false, + "forks": 10, + "isPlugin": false, + "latestVersion": "5.x.x", + "link": "https://github.com/hapijs/nigel", + "name": "nigel", + "package": "@hapi/nigel", + "slogan": "Boyer-Moore-Horspool algorithms", + "sloganHtml": "Boyer-Moore-Horspool algorithms", + "stars": 16, + "updated": "2025-08-24T14:33:19Z", + "versions": [ + { + "branch": "v5.0.1", + "license": "BSD", + "name": "5.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["5.0.1"] } diff --git a/generated/modules/oppsy/changelog.json b/generated/modules/oppsy/changelog.json index 1ec6bb29..c3d711ae 100644 --- a/generated/modules/oppsy/changelog.json +++ b/generated/modules/oppsy/changelog.json @@ -1,183 +1,183 @@ [ - { - "date": "2020-01-12T04:57:36Z", - "id": 4574335, - "issues": [ - { - "id": 548521400, - "labels": ["dependency", "breaking changes"], - "number": 27, - "title": "Only node 12", - "url": "https://github.com/hapijs/oppsy/issues/27" - } - ], - "number": 10, - "url": "https://github.com/hapijs/oppsy/milestone/10", - "version": "3.0.0" - }, - { - "date": "2019-08-15T01:17:58Z", - "id": 4260038, - "issues": [ - { - "id": 480900592, - "labels": ["dependency"], - "number": 23, - "title": "Update deps", - "url": "https://github.com/hapijs/oppsy/issues/23" - } - ], - "number": 9, - "url": "https://github.com/hapijs/oppsy/milestone/9", - "version": "2.1.2" - }, - { - "date": "2019-04-25T16:17:47Z", - "id": 4247009, - "issues": [ - { - "id": 437052543, - "labels": ["bug", "dependency"], - "number": 21, - "title": "Add missing namespace to hoek dependency", - "url": "https://github.com/hapijs/oppsy/pull/21" - } - ], - "number": 8, - "url": "https://github.com/hapijs/oppsy/milestone/8", - "version": "2.1.1" - }, - { - "date": "2019-04-22T00:18:44Z", - "id": 4247008, - "issues": [ - { - "id": 435561671, - "labels": ["dependency"], - "number": 20, - "title": "Change module namespace", - "url": "https://github.com/hapijs/oppsy/issues/20" - } - ], - "number": 7, - "url": "https://github.com/hapijs/oppsy/milestone/7", - "version": "2.1.0" - }, - { - "date": "2019-04-22T00:17:12Z", - "id": 2961826, - "issues": [ - { - "id": 407021602, - "labels": [], - "number": 19, - "title": "Update Hoek and dev dependencies", - "url": "https://github.com/hapijs/oppsy/pull/19" - } - ], - "number": 6, - "url": "https://github.com/hapijs/oppsy/milestone/6", - "version": "2.0.1" - }, - { - "date": "2017-12-06T13:07:39Z", - "id": 2960081, - "issues": [ - { - "id": 279533786, - "labels": [], - "number": 13, - "title": "Add cpu process information. Closes #7", - "url": "https://github.com/hapijs/oppsy/pull/13" - }, - { - "id": 277272412, - "labels": [], - "number": 12, - "title": "Migrate to node 8 and async/await", - "url": "https://github.com/hapijs/oppsy/pull/12" - } - ], - "number": 5, - "url": "https://github.com/hapijs/oppsy/milestone/5", - "version": "2.0.0" - }, - { - "date": "2017-12-05T17:48:51Z", - "id": 1933190, - "issues": [ - { - "id": 170196654, - "labels": ["bug"], + { + "date": "2020-01-12T04:57:36Z", + "id": 4574335, + "issues": [ + { + "id": 548521400, + "labels": ["dependency", "breaking changes"], + "number": 27, + "title": "Only node 12", + "url": "https://github.com/hapijs/oppsy/issues/27" + } + ], + "number": 10, + "url": "https://github.com/hapijs/oppsy/milestone/10", + "version": "3.0.0" + }, + { + "date": "2019-08-15T01:17:58Z", + "id": 4260038, + "issues": [ + { + "id": 480900592, + "labels": ["dependency"], + "number": 23, + "title": "Update deps", + "url": "https://github.com/hapijs/oppsy/issues/23" + } + ], + "number": 9, + "url": "https://github.com/hapijs/oppsy/milestone/9", + "version": "2.1.2" + }, + { + "date": "2019-04-25T16:17:47Z", + "id": 4247009, + "issues": [ + { + "id": 437052543, + "labels": ["bug", "dependency"], + "number": 21, + "title": "Add missing namespace to hoek dependency", + "url": "https://github.com/hapijs/oppsy/pull/21" + } + ], + "number": 8, + "url": "https://github.com/hapijs/oppsy/milestone/8", + "version": "2.1.1" + }, + { + "date": "2019-04-22T00:18:44Z", + "id": 4247008, + "issues": [ + { + "id": 435561671, + "labels": ["dependency"], + "number": 20, + "title": "Change module namespace", + "url": "https://github.com/hapijs/oppsy/issues/20" + } + ], + "number": 7, + "url": "https://github.com/hapijs/oppsy/milestone/7", + "version": "2.1.0" + }, + { + "date": "2019-04-22T00:17:12Z", + "id": 2961826, + "issues": [ + { + "id": 407021602, + "labels": [], + "number": 19, + "title": "Update Hoek and dev dependencies", + "url": "https://github.com/hapijs/oppsy/pull/19" + } + ], "number": 6, - "title": "Fix httpAgent reference assignment", - "url": "https://github.com/hapijs/oppsy/pull/6" - } - ], - "number": 4, - "url": "https://github.com/hapijs/oppsy/milestone/4", - "version": "1.0.3" - }, - { - "date": "2016-08-09T18:07:47Z", - "id": 1418315, - "issues": [ - { - "id": 155818388, - "labels": ["dependency", "test"], + "url": "https://github.com/hapijs/oppsy/milestone/6", + "version": "2.0.1" + }, + { + "date": "2017-12-06T13:07:39Z", + "id": 2960081, + "issues": [ + { + "id": 279533786, + "labels": [], + "number": 13, + "title": "Add cpu process information. Closes #7", + "url": "https://github.com/hapijs/oppsy/pull/13" + }, + { + "id": 277272412, + "labels": [], + "number": 12, + "title": "Migrate to node 8 and async/await", + "url": "https://github.com/hapijs/oppsy/pull/12" + } + ], "number": 5, - "title": "Test on node v6, update dependencies", - "url": "https://github.com/hapijs/oppsy/pull/5" - } - ], - "number": 3, - "url": "https://github.com/hapijs/oppsy/milestone/3", - "version": "1.0.2" - }, - { - "date": "2015-11-18T16:51:02Z", - "id": 1417119, - "issues": [ - { - "id": 117626367, - "labels": ["bug"], + "url": "https://github.com/hapijs/oppsy/milestone/5", + "version": "2.0.0" + }, + { + "date": "2017-12-05T17:48:51Z", + "id": 1933190, + "issues": [ + { + "id": 170196654, + "labels": ["bug"], + "number": 6, + "title": "Fix httpAgent reference assignment", + "url": "https://github.com/hapijs/oppsy/pull/6" + } + ], "number": 4, - "title": "Fixes #2.", - "url": "https://github.com/hapijs/oppsy/pull/4" - }, - { - "id": 117586217, - "labels": ["bug"], + "url": "https://github.com/hapijs/oppsy/milestone/4", + "version": "1.0.3" + }, + { + "date": "2016-08-09T18:07:47Z", + "id": 1418315, + "issues": [ + { + "id": 155818388, + "labels": ["dependency", "test"], + "number": 5, + "title": "Test on node v6, update dependencies", + "url": "https://github.com/hapijs/oppsy/pull/5" + } + ], "number": 3, - "title": "Bind networkMonitor to _tasks.", - "url": "https://github.com/hapijs/oppsy/pull/3" - }, - { - "id": 117580528, - "labels": ["bug"], + "url": "https://github.com/hapijs/oppsy/milestone/3", + "version": "1.0.2" + }, + { + "date": "2015-11-18T16:51:02Z", + "id": 1417119, + "issues": [ + { + "id": 117626367, + "labels": ["bug"], + "number": 4, + "title": "Fixes #2.", + "url": "https://github.com/hapijs/oppsy/pull/4" + }, + { + "id": 117586217, + "labels": ["bug"], + "number": 3, + "title": "Bind networkMonitor to _tasks.", + "url": "https://github.com/hapijs/oppsy/pull/3" + }, + { + "id": 117580528, + "labels": ["bug"], + "number": 2, + "title": "TypeError: Cannot read property 'connections' of undefined", + "url": "https://github.com/hapijs/oppsy/issues/2" + } + ], "number": 2, - "title": "TypeError: Cannot read property 'connections' of undefined", - "url": "https://github.com/hapijs/oppsy/issues/2" - } - ], - "number": 2, - "url": "https://github.com/hapijs/oppsy/milestone/2", - "version": "1.0.1" - }, - { - "date": "2015-11-18T02:04:13Z", - "id": 1416526, - "issues": [ - { - "id": 117430278, - "labels": ["feature"], + "url": "https://github.com/hapijs/oppsy/milestone/2", + "version": "1.0.1" + }, + { + "date": "2015-11-18T02:04:13Z", + "id": 1416526, + "issues": [ + { + "id": 117430278, + "labels": ["feature"], + "number": 1, + "title": "Implementation", + "url": "https://github.com/hapijs/oppsy/pull/1" + } + ], "number": 1, - "title": "Implementation", - "url": "https://github.com/hapijs/oppsy/pull/1" - } - ], - "number": 1, - "url": "https://github.com/hapijs/oppsy/milestone/1", - "version": "1.0.0" - } + "url": "https://github.com/hapijs/oppsy/milestone/1", + "version": "1.0.0" + } ] diff --git a/generated/modules/oppsy/info.json b/generated/modules/oppsy/info.json index ad761ec5..b874a85f 100644 --- a/generated/modules/oppsy/info.json +++ b/generated/modules/oppsy/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 19, - "isPlugin": false, - "link": "https://github.com/hapijs/oppsy", - "name": "oppsy", - "package": "@hapi/oppsy", - "slogan": "An EventEmitter useful for collecting hapi server ops information.", - "sloganHtml": "An EventEmitter useful for collecting hapi server ops information.", - "stars": 25, - "updated": "2024-10-23T14:52:58Z", - "versions": [ - { - "branch": "v3.0.0", - "license": "BSD", - "name": "3.0.0", - "node": ">= 16" - } - ], - "versionsArray": ["3.0.0"], - "latestVersion": "3.x.x" + "api": true, + "forks": 19, + "isPlugin": false, + "latestVersion": "3.x.x", + "link": "https://github.com/hapijs/oppsy", + "name": "oppsy", + "package": "@hapi/oppsy", + "slogan": "An EventEmitter useful for collecting hapi server ops information.", + "sloganHtml": "An EventEmitter useful for collecting hapi server ops information.", + "stars": 25, + "updated": "2024-10-23T14:52:58Z", + "versions": [ + { + "branch": "v3.0.0", + "license": "BSD", + "name": "3.0.0", + "node": ">= 16" + } + ], + "versionsArray": ["3.0.0"] } diff --git a/generated/modules/oxc-plugin/changelog.json b/generated/modules/oxc-plugin/changelog.json new file mode 100644 index 00000000..c9216e1a --- /dev/null +++ b/generated/modules/oxc-plugin/changelog.json @@ -0,0 +1,34 @@ +[ + { + "date": "2026-06-10T16:59:41Z", + "id": 16292283, + "issues": [ + { + "id": 4633214017, + "labels": ["bug"], + "number": 4, + "title": "fix: vitest's oxc plugin default exclude", + "url": "https://github.com/hapijs/oxc-plugin/pull/4" + } + ], + "number": 2, + "url": "https://github.com/hapijs/oxc-plugin/milestone/2", + "version": "1.0.1" + }, + { + "date": "2026-06-10T16:59:39Z", + "id": 16285140, + "issues": [ + { + "id": 4629548439, + "labels": ["feature"], + "number": 3, + "title": "feat: initial implementation of oxc rules", + "url": "https://github.com/hapijs/oxc-plugin/pull/3" + } + ], + "number": 1, + "url": "https://github.com/hapijs/oxc-plugin/milestone/1", + "version": "1.0.0" + } +] diff --git a/generated/modules/oxc-plugin/info.json b/generated/modules/oxc-plugin/info.json new file mode 100644 index 00000000..944174cf --- /dev/null +++ b/generated/modules/oxc-plugin/info.json @@ -0,0 +1,22 @@ +{ + "api": true, + "forks": 0, + "isPlugin": false, + "latestVersion": "1.x.x", + "link": "https://github.com/hapijs/oxc-plugin", + "name": "oxc-plugin", + "package": "@hapi/oxc-plugin", + "slogan": "Oxlint & Oxfmt plugin containing hapi style guide rules and config.", + "sloganHtml": "Oxlint & Oxfmt plugin containing hapi style guide rules and config.", + "stars": 0, + "updated": "2026-06-10T17:01:56Z", + "versions": [ + { + "branch": "v1.0.1", + "license": "BSD", + "name": "1.0.1", + "node": ">= 22" + } + ], + "versionsArray": ["1.0.1"] +} diff --git a/generated/modules/pez/changelog.json b/generated/modules/pez/changelog.json index 113962bc..b89d10ef 100644 --- a/generated/modules/pez/changelog.json +++ b/generated/modules/pez/changelog.json @@ -1,494 +1,494 @@ [ - { - "date": "2026-04-02T08:16:07Z", - "id": 15394807, - "issues": [ - { - "id": 4192696882, - "labels": ["dependency"], - "number": 54, - "title": "chore: bump dependencies", - "url": "https://github.com/hapijs/pez/pull/54" - } - ], - "number": 32, - "url": "https://github.com/hapijs/pez/milestone/32", - "version": "6.1.1" - }, - { - "date": "2026-04-02T08:11:20Z", - "id": 9043409, - "issues": [ - { - "id": 1584351984, - "labels": ["feature"], - "number": 50, - "title": "Support maxParts to limit multipart payloads", - "url": "https://github.com/hapijs/pez/issues/50" - } - ], - "number": 31, - "url": "https://github.com/hapijs/pez/milestone/31", - "version": "6.1.0" - }, - { - "date": "2023-02-14T15:17:22Z", - "id": 8012501, - "issues": [ - { - "id": 1551768903, - "labels": [], - "number": 49, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/pez/pull/49" - } - ], - "number": 29, - "url": "https://github.com/hapijs/pez/milestone/29", - "version": "6.0.1" - }, - { - "date": "2023-02-14T15:17:21Z", - "id": 8012500, - "issues": [ - { - "id": 1245906884, - "labels": ["breaking changes", "dependency"], - "number": 48, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/pez/pull/48" - } - ], - "number": 28, - "url": "https://github.com/hapijs/pez/milestone/28", - "version": "6.0.0" - }, - { - "date": "2026-04-02T08:11:59Z", - "id": 9043408, - "issues": [], - "number": 30, - "url": "https://github.com/hapijs/pez/milestone/30", - "version": "5.1.0" - }, - { - "date": "2020-07-17T18:54:10Z", - "id": 5103351, - "issues": [ - { - "id": 659514085, - "labels": ["bug", "dependency"], - "number": 39, - "title": "node 14. Closes #38", - "url": "https://github.com/hapijs/pez/pull/39" - }, - { - "id": 659513527, - "labels": ["bug", "dependency"], - "number": 38, - "title": "Support node 14", - "url": "https://github.com/hapijs/pez/issues/38" - } - ], - "number": 24, - "url": "https://github.com/hapijs/pez/milestone/24", - "version": "5.0.3" - }, - { - "date": "2020-02-13T17:46:26Z", - "id": 5100815, - "issues": [ - { - "id": 564848929, - "labels": ["dependency"], - "number": 35, - "title": "Update dep", - "url": "https://github.com/hapijs/pez/issues/35" - } - ], - "number": 23, - "url": "https://github.com/hapijs/pez/milestone/23", - "version": "5.0.2" - }, - { - "date": "2020-02-13T07:57:00Z", - "id": 4973415, - "issues": [ - { - "id": 564492584, - "labels": ["bug", "security"], - "number": 34, - "title": "Explicitly handle __proto__ header", - "url": "https://github.com/hapijs/pez/issues/34" - } - ], - "number": 22, - "url": "https://github.com/hapijs/pez/milestone/22", - "version": "5.0.1" - }, - { - "date": "2020-01-05T06:47:51Z", - "id": 4973414, - "issues": [ - { - "id": 545379749, - "labels": ["breaking changes", "dependency"], + { + "date": "2026-04-02T08:16:07Z", + "id": 15394807, + "issues": [ + { + "id": 4192696882, + "labels": ["dependency"], + "number": 54, + "title": "chore: bump dependencies", + "url": "https://github.com/hapijs/pez/pull/54" + } + ], "number": 32, - "title": "Only node 12", - "url": "https://github.com/hapijs/pez/issues/32" - } - ], - "number": 21, - "url": "https://github.com/hapijs/pez/milestone/21", - "version": "5.0.0" - }, - { - "date": "2020-07-17T07:28:08Z", - "id": 5103405, - "issues": [], - "number": 25, - "url": "https://github.com/hapijs/pez/milestone/25", - "version": "4.1.3" - }, - { - "date": "2020-02-13T17:51:38Z", - "id": 4574332, - "issues": [ - { - "id": 564851471, - "labels": ["bug", "security", "lts"], - "number": 36, - "title": "Backport #34", - "url": "https://github.com/hapijs/pez/issues/36" - } - ], - "number": 20, - "url": "https://github.com/hapijs/pez/milestone/20", - "version": "4.1.2" - }, - { - "date": "2019-08-15T01:16:24Z", - "id": 4194633, - "issues": [ - { - "id": 480900332, - "labels": ["dependency"], - "number": 30, - "title": "Update deps", - "url": "https://github.com/hapijs/pez/issues/30" - } - ], - "number": 19, - "url": "https://github.com/hapijs/pez/milestone/19", - "version": "4.1.1" - }, - { - "date": "2019-04-02T18:02:23Z", - "id": 3792288, - "issues": [ - { - "id": 428363101, - "labels": ["dependency"], + "url": "https://github.com/hapijs/pez/milestone/32", + "version": "6.1.1" + }, + { + "date": "2026-04-02T08:11:20Z", + "id": 9043409, + "issues": [ + { + "id": 1584351984, + "labels": ["feature"], + "number": 50, + "title": "Support maxParts to limit multipart payloads", + "url": "https://github.com/hapijs/pez/issues/50" + } + ], + "number": 31, + "url": "https://github.com/hapijs/pez/milestone/31", + "version": "6.1.0" + }, + { + "date": "2023-02-14T15:17:22Z", + "id": 8012501, + "issues": [ + { + "id": 1551768903, + "labels": [], + "number": 49, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/pez/pull/49" + } + ], + "number": 29, + "url": "https://github.com/hapijs/pez/milestone/29", + "version": "6.0.1" + }, + { + "date": "2023-02-14T15:17:21Z", + "id": 8012500, + "issues": [ + { + "id": 1245906884, + "labels": ["breaking changes", "dependency"], + "number": 48, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/pez/pull/48" + } + ], "number": 28, - "title": "Change module namespace", - "url": "https://github.com/hapijs/pez/issues/28" - } - ], - "number": 16, - "url": "https://github.com/hapijs/pez/milestone/16", - "version": "4.1.0" - }, - { - "date": "2018-11-03T00:34:40Z", - "id": 3788808, - "issues": [ - { - "id": 377002942, - "labels": ["non issue"], + "url": "https://github.com/hapijs/pez/milestone/28", + "version": "6.0.0" + }, + { + "date": "2026-04-02T08:11:59Z", + "id": 9043408, + "issues": [], + "number": 30, + "url": "https://github.com/hapijs/pez/milestone/30", + "version": "5.1.0" + }, + { + "date": "2020-07-17T18:54:10Z", + "id": 5103351, + "issues": [ + { + "id": 659514085, + "labels": ["bug", "dependency"], + "number": 39, + "title": "node 14. Closes #38", + "url": "https://github.com/hapijs/pez/pull/39" + }, + { + "id": 659513527, + "labels": ["bug", "dependency"], + "number": 38, + "title": "Support node 14", + "url": "https://github.com/hapijs/pez/issues/38" + } + ], "number": 24, - "title": "Remove engines", - "url": "https://github.com/hapijs/pez/issues/24" - } - ], - "number": 15, - "url": "https://github.com/hapijs/pez/milestone/15", - "version": "4.0.5" - }, - { - "date": "2018-11-01T18:42:55Z", - "id": 3784065, - "issues": [ - { - "id": 376517679, - "labels": ["dependency"], + "url": "https://github.com/hapijs/pez/milestone/24", + "version": "5.0.3" + }, + { + "date": "2020-02-13T17:46:26Z", + "id": 5100815, + "issues": [ + { + "id": 564848929, + "labels": ["dependency"], + "number": 35, + "title": "Update dep", + "url": "https://github.com/hapijs/pez/issues/35" + } + ], "number": 23, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/pez/issues/23" - } - ], - "number": 14, - "url": "https://github.com/hapijs/pez/milestone/14", - "version": "4.0.4" - }, - { - "date": "2018-10-31T04:21:53Z", - "id": 3206357, - "issues": [ - { - "id": 375792742, - "labels": ["non issue"], + "url": "https://github.com/hapijs/pez/milestone/23", + "version": "5.0.2" + }, + { + "date": "2020-02-13T07:57:00Z", + "id": 4973415, + "issues": [ + { + "id": 564492584, + "labels": ["bug", "security"], + "number": 34, + "title": "Explicitly handle __proto__ header", + "url": "https://github.com/hapijs/pez/issues/34" + } + ], + "number": 22, + "url": "https://github.com/hapijs/pez/milestone/22", + "version": "5.0.1" + }, + { + "date": "2020-01-05T06:47:51Z", + "id": 4973414, + "issues": [ + { + "id": 545379749, + "labels": ["breaking changes", "dependency"], + "number": 32, + "title": "Only node 12", + "url": "https://github.com/hapijs/pez/issues/32" + } + ], "number": 21, - "title": "Convert to class", - "url": "https://github.com/hapijs/pez/issues/21" - } - ], - "number": 13, - "url": "https://github.com/hapijs/pez/milestone/13", - "version": "4.0.3" - }, - { - "date": "2018-03-21T14:09:49Z", - "id": 2885347, - "issues": [ - { - "id": 307173829, - "labels": ["security"], + "url": "https://github.com/hapijs/pez/milestone/21", + "version": "5.0.0" + }, + { + "date": "2020-07-17T07:28:08Z", + "id": 5103405, + "issues": [], + "number": 25, + "url": "https://github.com/hapijs/pez/milestone/25", + "version": "4.1.3" + }, + { + "date": "2020-02-13T17:51:38Z", + "id": 4574332, + "issues": [ + { + "id": 564851471, + "labels": ["bug", "security", "lts"], + "number": 36, + "title": "Backport #34", + "url": "https://github.com/hapijs/pez/issues/36" + } + ], "number": 20, - "title": "Remove new Buffer usage", - "url": "https://github.com/hapijs/pez/pull/20" - } - ], - "number": 12, - "url": "https://github.com/hapijs/pez/milestone/12", - "version": "4.0.2" - }, - { - "date": "2017-11-03T08:24:18Z", - "id": 2885346, - "issues": [ - { - "id": 270904596, - "labels": ["dependency"], + "url": "https://github.com/hapijs/pez/milestone/20", + "version": "4.1.2" + }, + { + "date": "2019-08-15T01:16:24Z", + "id": 4194633, + "issues": [ + { + "id": 480900332, + "labels": ["dependency"], + "number": 30, + "title": "Update deps", + "url": "https://github.com/hapijs/pez/issues/30" + } + ], "number": 19, - "title": "Update deps", - "url": "https://github.com/hapijs/pez/issues/19" - } - ], - "number": 11, - "url": "https://github.com/hapijs/pez/milestone/11", - "version": "4.0.1" - }, - { - "date": "2017-11-03T08:21:19Z", - "id": 2799361, - "issues": [ - { - "id": 266927980, - "labels": ["bug", "breaking changes"], - "number": 18, - "title": "Return 413 on maxBytes error", - "url": "https://github.com/hapijs/pez/pull/18" - } - ], - "number": 10, - "url": "https://github.com/hapijs/pez/milestone/10", - "version": "4.0.0" - }, - { - "date": "2017-09-28T05:43:53Z", - "id": 2546755, - "issues": [ - { - "id": 261199246, - "labels": ["dependency"], - "number": 17, - "title": "Update deps", - "url": "https://github.com/hapijs/pez/issues/17" - } - ], - "number": 9, - "url": "https://github.com/hapijs/pez/milestone/9", - "version": "3.0.1" - }, - { - "date": "2020-07-17T07:28:06Z", - "id": 5103423, - "issues": [], - "number": 26, - "url": "https://github.com/hapijs/pez/milestone/26", - "version": "2.2.2" - }, - { - "date": "2020-02-13T18:02:24Z", - "id": 4170961, - "issues": [ - { - "id": 564853363, - "labels": ["bug", "security", "commercial"], - "number": 37, - "title": "Backport #34", - "url": "https://github.com/hapijs/pez/issues/37" - } - ], - "number": 18, - "url": "https://github.com/hapijs/pez/milestone/18", - "version": "2.2.1" - }, - { - "date": "2019-03-25T18:46:10Z", - "id": 4170960, - "issues": [ - { - "id": 425044011, - "labels": ["lts"], - "number": 27, - "title": "Commercial version of v2 branch", - "url": "https://github.com/hapijs/pez/issues/27" - } - ], - "number": 17, - "url": "https://github.com/hapijs/pez/milestone/17", - "version": "2.2.0" - }, - { - "date": "2017-05-28T06:49:47Z", - "id": 2162577, - "issues": [ - { - "id": 231850651, - "labels": ["dependency"], + "url": "https://github.com/hapijs/pez/milestone/19", + "version": "4.1.1" + }, + { + "date": "2019-04-02T18:02:23Z", + "id": 3792288, + "issues": [ + { + "id": 428363101, + "labels": ["dependency"], + "number": 28, + "title": "Change module namespace", + "url": "https://github.com/hapijs/pez/issues/28" + } + ], "number": 16, - "title": "Update deps.", - "url": "https://github.com/hapijs/pez/issues/16" - } - ], - "number": 8, - "url": "https://github.com/hapijs/pez/milestone/8", - "version": "2.1.5" - }, - { - "date": "2016-11-29T01:02:52Z", - "id": 2049702, - "issues": [], - "number": 7, - "url": "https://github.com/hapijs/pez/milestone/7", - "version": "2.1.4" - }, - { - "date": "2016-10-05T13:57:51Z", - "id": 1813529, - "issues": [ - { - "id": 181141436, - "labels": ["dependency"], + "url": "https://github.com/hapijs/pez/milestone/16", + "version": "4.1.0" + }, + { + "date": "2018-11-03T00:34:40Z", + "id": 3788808, + "issues": [ + { + "id": 377002942, + "labels": ["non issue"], + "number": 24, + "title": "Remove engines", + "url": "https://github.com/hapijs/pez/issues/24" + } + ], + "number": 15, + "url": "https://github.com/hapijs/pez/milestone/15", + "version": "4.0.5" + }, + { + "date": "2018-11-01T18:42:55Z", + "id": 3784065, + "issues": [ + { + "id": 376517679, + "labels": ["dependency"], + "number": 23, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/pez/issues/23" + } + ], "number": 14, - "title": "update dependencies + lint updates", - "url": "https://github.com/hapijs/pez/pull/14" - } - ], - "number": 6, - "url": "https://github.com/hapijs/pez/milestone/6", - "version": "2.1.3" - }, - { - "date": "2016-06-07T14:03:19Z", - "id": 1774022, - "issues": [ - { - "id": 158931231, - "labels": ["dependency"], + "url": "https://github.com/hapijs/pez/milestone/14", + "version": "4.0.4" + }, + { + "date": "2018-10-31T04:21:53Z", + "id": 3206357, + "issues": [ + { + "id": 375792742, + "labels": ["non issue"], + "number": 21, + "title": "Convert to class", + "url": "https://github.com/hapijs/pez/issues/21" + } + ], + "number": 13, + "url": "https://github.com/hapijs/pez/milestone/13", + "version": "4.0.3" + }, + { + "date": "2018-03-21T14:09:49Z", + "id": 2885347, + "issues": [ + { + "id": 307173829, + "labels": ["security"], + "number": 20, + "title": "Remove new Buffer usage", + "url": "https://github.com/hapijs/pez/pull/20" + } + ], "number": 12, - "title": "Update dependencies for v2.1.2 release", - "url": "https://github.com/hapijs/pez/issues/12" - }, - { - "id": 158931016, - "labels": ["feature"], + "url": "https://github.com/hapijs/pez/milestone/12", + "version": "4.0.2" + }, + { + "date": "2017-11-03T08:24:18Z", + "id": 2885346, + "issues": [ + { + "id": 270904596, + "labels": ["dependency"], + "number": 19, + "title": "Update deps", + "url": "https://github.com/hapijs/pez/issues/19" + } + ], "number": 11, - "title": "Add .npmignore file", - "url": "https://github.com/hapijs/pez/issues/11" - } - ], - "number": 5, - "url": "https://github.com/hapijs/pez/milestone/5", - "version": "2.1.2" - }, - { - "date": "2016-05-18T13:26:10Z", - "id": 1687130, - "issues": [ - { - "id": 155489687, - "labels": ["dependency"], + "url": "https://github.com/hapijs/pez/milestone/11", + "version": "4.0.1" + }, + { + "date": "2017-11-03T08:21:19Z", + "id": 2799361, + "issues": [ + { + "id": 266927980, + "labels": ["bug", "breaking changes"], + "number": 18, + "title": "Return 413 on maxBytes error", + "url": "https://github.com/hapijs/pez/pull/18" + } + ], "number": 10, - "title": "Github / npm hoek version mismatch", - "url": "https://github.com/hapijs/pez/issues/10" - } - ], - "number": 4, - "url": "https://github.com/hapijs/pez/milestone/4", - "version": "2.1.1" - }, - { - "date": "2016-04-06T12:40:00Z", - "id": 1390464, - "issues": [ - { - "id": 145772962, - "labels": ["feature"], + "url": "https://github.com/hapijs/pez/milestone/10", + "version": "4.0.0" + }, + { + "date": "2017-09-28T05:43:53Z", + "id": 2546755, + "issues": [ + { + "id": 261199246, + "labels": ["dependency"], + "number": 17, + "title": "Update deps", + "url": "https://github.com/hapijs/pez/issues/17" + } + ], "number": 9, - "title": "add maxBytes setting to detect oversized payloads", - "url": "https://github.com/hapijs/pez/pull/9" - } - ], - "number": 3, - "url": "https://github.com/hapijs/pez/milestone/3", - "version": "2.1.0" - }, - { - "date": "2015-11-03T05:42:09Z", - "id": 1386483, - "issues": [ - { - "id": 114740564, - "labels": ["dependency"], + "url": "https://github.com/hapijs/pez/milestone/9", + "version": "3.0.1" + }, + { + "date": "2020-07-17T07:28:06Z", + "id": 5103423, + "issues": [], + "number": 26, + "url": "https://github.com/hapijs/pez/milestone/26", + "version": "2.2.2" + }, + { + "date": "2020-02-13T18:02:24Z", + "id": 4170961, + "issues": [ + { + "id": 564853363, + "labels": ["bug", "security", "commercial"], + "number": 37, + "title": "Backport #34", + "url": "https://github.com/hapijs/pez/issues/37" + } + ], + "number": 18, + "url": "https://github.com/hapijs/pez/milestone/18", + "version": "2.2.1" + }, + { + "date": "2019-03-25T18:46:10Z", + "id": 4170960, + "issues": [ + { + "id": 425044011, + "labels": ["lts"], + "number": 27, + "title": "Commercial version of v2 branch", + "url": "https://github.com/hapijs/pez/issues/27" + } + ], + "number": 17, + "url": "https://github.com/hapijs/pez/milestone/17", + "version": "2.2.0" + }, + { + "date": "2017-05-28T06:49:47Z", + "id": 2162577, + "issues": [ + { + "id": 231850651, + "labels": ["dependency"], + "number": 16, + "title": "Update deps.", + "url": "https://github.com/hapijs/pez/issues/16" + } + ], "number": 8, - "title": "ES6 deps", - "url": "https://github.com/hapijs/pez/issues/8" - } - ], - "number": 2, - "url": "https://github.com/hapijs/pez/milestone/2", - "version": "2.0.1" - }, - { - "date": "2015-10-31T03:43:58Z", - "id": 807363, - "issues": [ - { - "id": 84055106, - "labels": ["test", "documentation"], + "url": "https://github.com/hapijs/pez/milestone/8", + "version": "2.1.5" + }, + { + "date": "2016-11-29T01:02:52Z", + "id": 2049702, + "issues": [], + "number": 7, + "url": "https://github.com/hapijs/pez/milestone/7", + "version": "2.1.4" + }, + { + "date": "2016-10-05T13:57:51Z", + "id": 1813529, + "issues": [ + { + "id": 181141436, + "labels": ["dependency"], + "number": 14, + "title": "update dependencies + lint updates", + "url": "https://github.com/hapijs/pez/pull/14" + } + ], "number": 6, - "title": "Repo cleanup", - "url": "https://github.com/hapijs/pez/pull/6" - }, - { - "id": 59534549, - "labels": ["test", "dependency"], + "url": "https://github.com/hapijs/pez/milestone/6", + "version": "2.1.3" + }, + { + "date": "2016-06-07T14:03:19Z", + "id": 1774022, + "issues": [ + { + "id": 158931231, + "labels": ["dependency"], + "number": 12, + "title": "Update dependencies for v2.1.2 release", + "url": "https://github.com/hapijs/pez/issues/12" + }, + { + "id": 158931016, + "labels": ["feature"], + "number": 11, + "title": "Add .npmignore file", + "url": "https://github.com/hapijs/pez/issues/11" + } + ], "number": 5, - "title": "Update to Lab 5.x.x and Code 1.x.x", - "url": "https://github.com/hapijs/pez/pull/5" - }, - { - "id": 58941942, - "labels": ["test"], + "url": "https://github.com/hapijs/pez/milestone/5", + "version": "2.1.2" + }, + { + "date": "2016-05-18T13:26:10Z", + "id": 1687130, + "issues": [ + { + "id": 155489687, + "labels": ["dependency"], + "number": 10, + "title": "Github / npm hoek version mismatch", + "url": "https://github.com/hapijs/pez/issues/10" + } + ], "number": 4, - "title": "Update .travis.yml", - "url": "https://github.com/hapijs/pez/pull/4" - } - ], - "number": 1, - "url": "https://github.com/hapijs/pez/milestone/1", - "version": "2.0.0" - } + "url": "https://github.com/hapijs/pez/milestone/4", + "version": "2.1.1" + }, + { + "date": "2016-04-06T12:40:00Z", + "id": 1390464, + "issues": [ + { + "id": 145772962, + "labels": ["feature"], + "number": 9, + "title": "add maxBytes setting to detect oversized payloads", + "url": "https://github.com/hapijs/pez/pull/9" + } + ], + "number": 3, + "url": "https://github.com/hapijs/pez/milestone/3", + "version": "2.1.0" + }, + { + "date": "2015-11-03T05:42:09Z", + "id": 1386483, + "issues": [ + { + "id": 114740564, + "labels": ["dependency"], + "number": 8, + "title": "ES6 deps", + "url": "https://github.com/hapijs/pez/issues/8" + } + ], + "number": 2, + "url": "https://github.com/hapijs/pez/milestone/2", + "version": "2.0.1" + }, + { + "date": "2015-10-31T03:43:58Z", + "id": 807363, + "issues": [ + { + "id": 84055106, + "labels": ["test", "documentation"], + "number": 6, + "title": "Repo cleanup", + "url": "https://github.com/hapijs/pez/pull/6" + }, + { + "id": 59534549, + "labels": ["test", "dependency"], + "number": 5, + "title": "Update to Lab 5.x.x and Code 1.x.x", + "url": "https://github.com/hapijs/pez/pull/5" + }, + { + "id": 58941942, + "labels": ["test"], + "number": 4, + "title": "Update .travis.yml", + "url": "https://github.com/hapijs/pez/pull/4" + } + ], + "number": 1, + "url": "https://github.com/hapijs/pez/milestone/1", + "version": "2.0.0" + } ] diff --git a/generated/modules/pez/info.json b/generated/modules/pez/info.json index 044837e8..ca1daeaf 100644 --- a/generated/modules/pez/info.json +++ b/generated/modules/pez/info.json @@ -1,22 +1,22 @@ { - "api": false, - "forks": 18, - "isPlugin": false, - "link": "https://github.com/hapijs/pez", - "name": "pez", - "package": "@hapi/pez", - "slogan": "Multipart parser.", - "sloganHtml": "Multipart parser.", - "stars": 34, - "updated": "2026-04-02T08:12:22Z", - "versions": [ - { - "branch": "v6.1.1", - "license": "BSD", - "name": "6.1.1", - "node": ">= 16" - } - ], - "versionsArray": ["6.1.1"], - "latestVersion": "6.x.x" + "api": false, + "forks": 18, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/pez", + "name": "pez", + "package": "@hapi/pez", + "slogan": "Multipart parser.", + "sloganHtml": "Multipart parser.", + "stars": 34, + "updated": "2026-06-11T14:48:05Z", + "versions": [ + { + "branch": "v6.1.1", + "license": "BSD", + "name": "6.1.1", + "node": ">= 16" + } + ], + "versionsArray": ["6.1.1"] } diff --git a/generated/modules/podium/changelog.json b/generated/modules/podium/changelog.json index 9a1dfb70..17d918fa 100644 --- a/generated/modules/podium/changelog.json +++ b/generated/modules/podium/changelog.json @@ -1,631 +1,631 @@ [ - { - "date": "2025-01-07T22:49:01Z", - "id": 12134207, - "issues": [ - { - "id": 2773878427, - "labels": [], - "number": 84, - "title": "fix: typescript exactOptionalPropertyTypes issue", - "url": "https://github.com/hapijs/podium/pull/84" - } - ], - "number": 38, - "url": "https://github.com/hapijs/podium/milestone/38", - "version": "5.0.2" - }, - { - "date": "2025-01-07T22:48:24Z", - "id": 7955809, - "issues": [ - { - "id": 1551772144, - "labels": [], - "number": 82, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/podium/pull/82" - } - ], - "number": 37, - "url": "https://github.com/hapijs/podium/milestone/37", - "version": "5.0.1" - }, - { - "date": "2022-05-08T19:54:56Z", - "id": 7809044, - "issues": [ - { - "id": 1228483287, - "labels": ["dependency", "breaking changes"], - "number": 80, - "title": "Upgrade deps for node v14+", - "url": "https://github.com/hapijs/podium/pull/80" - }, - { - "id": 1184028217, - "labels": ["feature"], - "number": 79, - "title": "Support podium.gauge() method", - "url": "https://github.com/hapijs/podium/pull/79" - }, - { - "id": 1028130967, - "labels": ["breaking changes"], - "number": 76, - "title": "Prepare a breaking build", - "url": "https://github.com/hapijs/podium/pull/76" - }, - { - "id": 1028122352, - "labels": ["feature", "breaking changes"], - "number": 75, - "title": "Drop node 12 support", - "url": "https://github.com/hapijs/podium/issues/75" - }, - { - "id": 1028121757, - "labels": ["feature", "breaking changes"], - "number": 74, - "title": "Prepare for ESM", - "url": "https://github.com/hapijs/podium/issues/74" - }, - { - "id": 1028120848, - "labels": ["feature", "breaking changes"], - "number": 73, - "title": "Don't return promise from emit()", - "url": "https://github.com/hapijs/podium/issues/73" - }, - { - "id": 727469976, - "labels": ["feature", "breaking changes"], - "number": 65, - "title": "Remove \"podium\" event source", - "url": "https://github.com/hapijs/podium/issues/65" - }, - { - "id": 726330516, - "labels": ["bug"], - "number": 64, - "title": "A thrown error in a handler can prevent other handlers from being called", - "url": "https://github.com/hapijs/podium/issues/64" - } - ], - "number": 36, - "url": "https://github.com/hapijs/podium/milestone/36", - "version": "5.0.0" - }, - { - "date": "2021-04-12T15:37:39Z", - "id": 6605770, - "issues": [ - { - "id": 848948561, - "labels": ["bug", "types"], - "number": 70, - "title": "Fix typings to accomodate spread flag", - "url": "https://github.com/hapijs/podium/pull/70" - } - ], - "number": 34, - "url": "https://github.com/hapijs/podium/milestone/34", - "version": "4.1.3" - }, - { - "date": "2021-03-29T21:15:10Z", - "id": 6605658, - "issues": [ - { - "id": 843624459, - "labels": ["bug"], - "number": 67, - "title": "Clone the data array before using it as args", - "url": "https://github.com/hapijs/podium/pull/67" - } - ], - "number": 33, - "url": "https://github.com/hapijs/podium/milestone/33", - "version": "4.1.2" - }, - { - "date": "2021-03-29T21:15:19Z", - "id": 5128586, - "issues": [ - { - "id": 709595724, - "labels": [], - "number": 62, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/podium/pull/62" - } - ], - "number": 32, - "url": "https://github.com/hapijs/podium/milestone/32", - "version": "4.1.1" - }, - { - "date": "2020-02-21T07:29:54Z", - "id": 4973184, - "issues": [ - { - "id": 568786108, - "labels": ["feature"], - "number": 58, - "title": "few()", - "url": "https://github.com/hapijs/podium/issues/58" - } - ], - "number": 31, - "url": "https://github.com/hapijs/podium/milestone/31", - "version": "4.1.0" - }, - { - "date": "2020-01-04T23:23:32Z", - "id": 4973183, - "issues": [ - { - "id": 545341751, - "labels": ["dependency", "breaking changes"], - "number": 57, - "title": "Only node 12", - "url": "https://github.com/hapijs/podium/issues/57" - } - ], - "number": 30, - "url": "https://github.com/hapijs/podium/milestone/30", - "version": "4.0.0" - }, - { - "date": "2019-11-01T22:37:43Z", - "id": 4655589, - "issues": [ - { - "id": 516381358, - "labels": ["non issue"], - "number": 55, - "title": "Optimize emit()", - "url": "https://github.com/hapijs/podium/issues/55" - } - ], - "number": 28, - "url": "https://github.com/hapijs/podium/milestone/28", - "version": "3.4.3" - }, - { - "date": "2019-09-12T22:43:26Z", - "id": 4574331, - "issues": [ - { - "id": 493062034, - "labels": ["dependency"], - "number": 49, - "title": "Update joi", - "url": "https://github.com/hapijs/podium/issues/49" - } - ], - "number": 27, - "url": "https://github.com/hapijs/podium/milestone/27", - "version": "3.4.2" - }, - { - "date": "2019-08-15T01:15:03Z", - "id": 4192099, - "issues": [ - { - "id": 480900083, - "labels": ["dependency"], - "number": 48, - "title": "Update deps", - "url": "https://github.com/hapijs/podium/issues/48" - } - ], - "number": 26, - "url": "https://github.com/hapijs/podium/milestone/26", - "version": "3.4.1" - }, - { - "date": "2019-04-02T05:03:10Z", - "id": 4191043, - "issues": [ - { - "id": 428025313, - "labels": ["dependency"], - "number": 43, - "title": "Update joi dep", - "url": "https://github.com/hapijs/podium/issues/43" - } - ], - "number": 25, - "url": "https://github.com/hapijs/podium/milestone/25", - "version": "3.4.0" - }, - { - "date": "2019-04-01T19:59:59Z", - "id": 3811349, - "issues": [ - { - "id": 427878395, - "labels": ["dependency"], - "number": 42, - "title": "Change module namespace", - "url": "https://github.com/hapijs/podium/issues/42" - } - ], - "number": 22, - "url": "https://github.com/hapijs/podium/milestone/22", - "version": "3.3.0" - }, - { - "date": "2018-11-11T05:00:05Z", - "id": 3792289, - "issues": [], - "number": 21, - "url": "https://github.com/hapijs/podium/milestone/21", - "version": "3.2.0" - }, - { - "date": "2018-11-03T00:35:37Z", - "id": 3788826, - "issues": [ - { - "id": 377002986, - "labels": ["non issue"], - "number": 39, - "title": "Remove engines", - "url": "https://github.com/hapijs/podium/issues/39" - } - ], - "number": 20, - "url": "https://github.com/hapijs/podium/milestone/20", - "version": "3.1.5" - }, - { - "date": "2018-11-01T18:49:51Z", - "id": 3786666, - "issues": [ - { - "id": 376521729, - "labels": ["dependency"], + { + "date": "2025-01-07T22:49:01Z", + "id": 12134207, + "issues": [ + { + "id": 2773878427, + "labels": [], + "number": 84, + "title": "fix: typescript exactOptionalPropertyTypes issue", + "url": "https://github.com/hapijs/podium/pull/84" + } + ], "number": 38, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/podium/issues/38" - } - ], - "number": 19, - "url": "https://github.com/hapijs/podium/milestone/19", - "version": "3.1.4" - }, - { - "date": "2018-10-31T22:53:27Z", - "id": 2855371, - "issues": [ - { - "id": 376190374, - "labels": ["non issue"], + "url": "https://github.com/hapijs/podium/milestone/38", + "version": "5.0.2" + }, + { + "date": "2025-01-07T22:48:24Z", + "id": 7955809, + "issues": [ + { + "id": 1551772144, + "labels": [], + "number": 82, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/podium/pull/82" + } + ], "number": 37, - "title": "Cleanup and node 11", - "url": "https://github.com/hapijs/podium/issues/37" - } - ], - "number": 18, - "url": "https://github.com/hapijs/podium/milestone/18", - "version": "3.1.3" - }, - { - "date": "2017-10-20T22:12:19Z", - "id": 2812224, - "issues": [ - { - "id": 267317708, - "labels": ["bug"], + "url": "https://github.com/hapijs/podium/milestone/37", + "version": "5.0.1" + }, + { + "date": "2022-05-08T19:54:56Z", + "id": 7809044, + "issues": [ + { + "id": 1228483287, + "labels": ["dependency", "breaking changes"], + "number": 80, + "title": "Upgrade deps for node v14+", + "url": "https://github.com/hapijs/podium/pull/80" + }, + { + "id": 1184028217, + "labels": ["feature"], + "number": 79, + "title": "Support podium.gauge() method", + "url": "https://github.com/hapijs/podium/pull/79" + }, + { + "id": 1028130967, + "labels": ["breaking changes"], + "number": 76, + "title": "Prepare a breaking build", + "url": "https://github.com/hapijs/podium/pull/76" + }, + { + "id": 1028122352, + "labels": ["feature", "breaking changes"], + "number": 75, + "title": "Drop node 12 support", + "url": "https://github.com/hapijs/podium/issues/75" + }, + { + "id": 1028121757, + "labels": ["feature", "breaking changes"], + "number": 74, + "title": "Prepare for ESM", + "url": "https://github.com/hapijs/podium/issues/74" + }, + { + "id": 1028120848, + "labels": ["feature", "breaking changes"], + "number": 73, + "title": "Don't return promise from emit()", + "url": "https://github.com/hapijs/podium/issues/73" + }, + { + "id": 727469976, + "labels": ["feature", "breaking changes"], + "number": 65, + "title": "Remove \"podium\" event source", + "url": "https://github.com/hapijs/podium/issues/65" + }, + { + "id": 726330516, + "labels": ["bug"], + "number": 64, + "title": "A thrown error in a handler can prevent other handlers from being called", + "url": "https://github.com/hapijs/podium/issues/64" + } + ], + "number": 36, + "url": "https://github.com/hapijs/podium/milestone/36", + "version": "5.0.0" + }, + { + "date": "2021-04-12T15:37:39Z", + "id": 6605770, + "issues": [ + { + "id": 848948561, + "labels": ["bug", "types"], + "number": 70, + "title": "Fix typings to accomodate spread flag", + "url": "https://github.com/hapijs/podium/pull/70" + } + ], "number": 34, - "title": "Only remove once handler if actually called", - "url": "https://github.com/hapijs/podium/issues/34" - }, - { - "id": 267317640, - "labels": ["bug"], + "url": "https://github.com/hapijs/podium/milestone/34", + "version": "4.1.3" + }, + { + "date": "2021-03-29T21:15:10Z", + "id": 6605658, + "issues": [ + { + "id": 843624459, + "labels": ["bug"], + "number": 67, + "title": "Clone the data array before using it as args", + "url": "https://github.com/hapijs/podium/pull/67" + } + ], "number": 33, - "title": "Do not modify criteria objects", - "url": "https://github.com/hapijs/podium/issues/33" - } - ], - "number": 17, - "url": "https://github.com/hapijs/podium/milestone/17", - "version": "3.1.2" - }, - { - "date": "2017-10-03T20:39:45Z", - "id": 2811998, - "issues": [ - { - "id": 262577503, - "labels": ["bug"], + "url": "https://github.com/hapijs/podium/milestone/33", + "version": "4.1.2" + }, + { + "date": "2021-03-29T21:15:19Z", + "id": 5128586, + "issues": [ + { + "id": 709595724, + "labels": [], + "number": 62, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/podium/pull/62" + } + ], "number": 32, - "title": "Remove emit() return values", - "url": "https://github.com/hapijs/podium/issues/32" - } - ], - "number": 16, - "url": "https://github.com/hapijs/podium/milestone/16", - "version": "3.1.1" - }, - { - "date": "2017-10-03T20:02:39Z", - "id": 2801194, - "issues": [ - { - "id": 261444521, - "labels": ["bug", "feature"], + "url": "https://github.com/hapijs/podium/milestone/32", + "version": "4.1.1" + }, + { + "date": "2020-02-21T07:29:54Z", + "id": 4973184, + "issues": [ + { + "id": 568786108, + "labels": ["feature"], + "number": 58, + "title": "few()", + "url": "https://github.com/hapijs/podium/issues/58" + } + ], "number": 31, - "title": "Return consistent results from the emit function", - "url": "https://github.com/hapijs/podium/pull/31" - } - ], - "number": 15, - "url": "https://github.com/hapijs/podium/milestone/15", - "version": "3.1.0" - }, - { - "date": "2017-09-28T19:13:12Z", - "id": 2799055, - "issues": [ - { - "id": 261429317, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/podium/milestone/31", + "version": "4.1.0" + }, + { + "date": "2020-01-04T23:23:32Z", + "id": 4973183, + "issues": [ + { + "id": 545341751, + "labels": ["dependency", "breaking changes"], + "number": 57, + "title": "Only node 12", + "url": "https://github.com/hapijs/podium/issues/57" + } + ], "number": 30, - "title": "Remove block option", - "url": "https://github.com/hapijs/podium/issues/30" - }, - { - "id": 261429117, - "labels": ["breaking changes"], - "number": 29, - "title": "emit() no longer waits for previous emits to complete", - "url": "https://github.com/hapijs/podium/issues/29" - }, - { - "id": 261428860, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/podium/milestone/30", + "version": "4.0.0" + }, + { + "date": "2019-11-01T22:37:43Z", + "id": 4655589, + "issues": [ + { + "id": 516381358, + "labels": ["non issue"], + "number": 55, + "title": "Optimize emit()", + "url": "https://github.com/hapijs/podium/issues/55" + } + ], "number": 28, - "title": "Remove error handler", - "url": "https://github.com/hapijs/podium/issues/28" - } - ], - "number": 14, - "url": "https://github.com/hapijs/podium/milestone/14", - "version": "3.0.0" - }, - { - "date": "2017-09-28T00:58:02Z", - "id": 2795677, - "issues": [ - { - "id": 261161547, - "labels": ["feature"], + "url": "https://github.com/hapijs/podium/milestone/28", + "version": "3.4.3" + }, + { + "date": "2019-09-12T22:43:26Z", + "id": 4574331, + "issues": [ + { + "id": 493062034, + "labels": ["dependency"], + "number": 49, + "title": "Update joi", + "url": "https://github.com/hapijs/podium/issues/49" + } + ], "number": 27, - "title": "Expose events validation method", - "url": "https://github.com/hapijs/podium/issues/27" - } - ], - "number": 13, - "url": "https://github.com/hapijs/podium/milestone/13", - "version": "2.1.0" - }, - { - "date": "2017-09-26T19:15:44Z", - "id": 2772335, - "issues": [ - { - "id": 260737975, - "labels": ["dependency"], + "url": "https://github.com/hapijs/podium/milestone/27", + "version": "3.4.2" + }, + { + "date": "2019-08-15T01:15:03Z", + "id": 4192099, + "issues": [ + { + "id": 480900083, + "labels": ["dependency"], + "number": 48, + "title": "Update deps", + "url": "https://github.com/hapijs/podium/issues/48" + } + ], "number": 26, - "title": "Update deps", - "url": "https://github.com/hapijs/podium/issues/26" - } - ], - "number": 12, - "url": "https://github.com/hapijs/podium/milestone/12", - "version": "2.0.3" - }, - { - "date": "2017-09-17T22:15:26Z", - "id": 2770797, - "issues": [ - { - "id": 258339779, - "labels": ["bug"], + "url": "https://github.com/hapijs/podium/milestone/26", + "version": "3.4.1" + }, + { + "date": "2019-04-02T05:03:10Z", + "id": 4191043, + "issues": [ + { + "id": 428025313, + "labels": ["dependency"], + "number": 43, + "title": "Update joi dep", + "url": "https://github.com/hapijs/podium/issues/43" + } + ], "number": 25, - "title": "Return consistent result on once()", - "url": "https://github.com/hapijs/podium/issues/25" - } - ], - "number": 11, - "url": "https://github.com/hapijs/podium/milestone/11", - "version": "2.0.2" - }, - { - "date": "2017-09-16T08:14:26Z", - "id": 2770762, - "issues": [ - { - "id": 258216843, - "labels": ["bug"], - "number": 24, - "title": "Cleanup emit()", - "url": "https://github.com/hapijs/podium/issues/24" - } - ], - "number": 10, - "url": "https://github.com/hapijs/podium/milestone/10", - "version": "2.0.1" - }, - { - "date": "2017-09-16T07:08:55Z", - "id": 2646817, - "issues": [ - { - "id": 258214334, - "labels": ["feature", "breaking changes"], - "number": 23, - "title": "Convert emit() to async function", - "url": "https://github.com/hapijs/podium/issues/23" - } - ], - "number": 9, - "url": "https://github.com/hapijs/podium/milestone/9", - "version": "2.0.0" - }, - { - "date": "2019-03-25T07:02:20Z", - "id": 4168288, - "issues": [ - { - "id": 424750189, - "labels": ["lts"], - "number": 41, - "title": "Commercial version of v1 branch", - "url": "https://github.com/hapijs/podium/issues/41" - } - ], - "number": 23, - "url": "https://github.com/hapijs/podium/milestone/23", - "version": "1.4.0" - }, - { - "date": "2017-07-18T07:06:24Z", - "id": 2164854, - "issues": [ - { - "id": 243615493, - "labels": ["feature"], + "url": "https://github.com/hapijs/podium/milestone/25", + "version": "3.4.0" + }, + { + "date": "2019-04-01T19:59:59Z", + "id": 3811349, + "issues": [ + { + "id": 427878395, + "labels": ["dependency"], + "number": 42, + "title": "Change module namespace", + "url": "https://github.com/hapijs/podium/issues/42" + } + ], "number": 22, - "title": "Method to create new emitters based on existing configuration", - "url": "https://github.com/hapijs/podium/issues/22" - }, - { - "id": 216689045, - "labels": ["bug", "feature"], + "url": "https://github.com/hapijs/podium/milestone/22", + "version": "3.3.0" + }, + { + "date": "2018-11-11T05:00:05Z", + "id": 3792289, + "issues": [], + "number": 21, + "url": "https://github.com/hapijs/podium/milestone/21", + "version": "3.2.0" + }, + { + "date": "2018-11-03T00:35:37Z", + "id": 3788826, + "issues": [ + { + "id": 377002986, + "labels": ["non issue"], + "number": 39, + "title": "Remove engines", + "url": "https://github.com/hapijs/podium/issues/39" + } + ], + "number": 20, + "url": "https://github.com/hapijs/podium/milestone/20", + "version": "3.1.5" + }, + { + "date": "2018-11-01T18:49:51Z", + "id": 3786666, + "issues": [ + { + "id": 376521729, + "labels": ["dependency"], + "number": 38, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/podium/issues/38" + } + ], + "number": 19, + "url": "https://github.com/hapijs/podium/milestone/19", + "version": "3.1.4" + }, + { + "date": "2018-10-31T22:53:27Z", + "id": 2855371, + "issues": [ + { + "id": 376190374, + "labels": ["non issue"], + "number": 37, + "title": "Cleanup and node 11", + "url": "https://github.com/hapijs/podium/issues/37" + } + ], "number": 18, - "title": "throwing inside an event breaks new events from emitting", - "url": "https://github.com/hapijs/podium/issues/18" - } - ], - "number": 8, - "url": "https://github.com/hapijs/podium/milestone/8", - "version": "1.3.0" - }, - { - "date": "2016-11-29T21:17:46Z", - "id": 2162626, - "issues": [ - { - "id": 192300779, - "labels": ["bug", "security"], + "url": "https://github.com/hapijs/podium/milestone/18", + "version": "3.1.3" + }, + { + "date": "2017-10-20T22:12:19Z", + "id": 2812224, + "issues": [ + { + "id": 267317708, + "labels": ["bug"], + "number": 34, + "title": "Only remove once handler if actually called", + "url": "https://github.com/hapijs/podium/issues/34" + }, + { + "id": 267317640, + "labels": ["bug"], + "number": 33, + "title": "Do not modify criteria objects", + "url": "https://github.com/hapijs/podium/issues/33" + } + ], "number": 17, - "title": "Defer using process.nextTick", - "url": "https://github.com/hapijs/podium/pull/17" - } - ], - "number": 7, - "url": "https://github.com/hapijs/podium/milestone/7", - "version": "1.2.5" - }, - { - "date": "2016-11-29T01:43:27Z", - "id": 1976347, - "issues": [ - { - "id": 192166052, - "labels": ["dependency"], + "url": "https://github.com/hapijs/podium/milestone/17", + "version": "3.1.2" + }, + { + "date": "2017-10-03T20:39:45Z", + "id": 2811998, + "issues": [ + { + "id": 262577503, + "labels": ["bug"], + "number": 32, + "title": "Remove emit() return values", + "url": "https://github.com/hapijs/podium/issues/32" + } + ], "number": 16, - "title": "Update deps", - "url": "https://github.com/hapijs/podium/issues/16" - } - ], - "number": 6, - "url": "https://github.com/hapijs/podium/milestone/6", - "version": "1.2.4" - }, - { - "date": "2016-09-01T00:04:21Z", - "id": 1975926, - "issues": [ - { - "id": 174407417, - "labels": ["bug"], + "url": "https://github.com/hapijs/podium/milestone/16", + "version": "3.1.1" + }, + { + "date": "2017-10-03T20:02:39Z", + "id": 2801194, + "issues": [ + { + "id": 261444521, + "labels": ["bug", "feature"], + "number": 31, + "title": "Return consistent results from the emit function", + "url": "https://github.com/hapijs/podium/pull/31" + } + ], + "number": 15, + "url": "https://github.com/hapijs/podium/milestone/15", + "version": "3.1.0" + }, + { + "date": "2017-09-28T19:13:12Z", + "id": 2799055, + "issues": [ + { + "id": 261429317, + "labels": ["breaking changes"], + "number": 30, + "title": "Remove block option", + "url": "https://github.com/hapijs/podium/issues/30" + }, + { + "id": 261429117, + "labels": ["breaking changes"], + "number": 29, + "title": "emit() no longer waits for previous emits to complete", + "url": "https://github.com/hapijs/podium/issues/29" + }, + { + "id": 261428860, + "labels": ["breaking changes"], + "number": 28, + "title": "Remove error handler", + "url": "https://github.com/hapijs/podium/issues/28" + } + ], + "number": 14, + "url": "https://github.com/hapijs/podium/milestone/14", + "version": "3.0.0" + }, + { + "date": "2017-09-28T00:58:02Z", + "id": 2795677, + "issues": [ + { + "id": 261161547, + "labels": ["feature"], + "number": 27, + "title": "Expose events validation method", + "url": "https://github.com/hapijs/podium/issues/27" + } + ], + "number": 13, + "url": "https://github.com/hapijs/podium/milestone/13", + "version": "2.1.0" + }, + { + "date": "2017-09-26T19:15:44Z", + "id": 2772335, + "issues": [ + { + "id": 260737975, + "labels": ["dependency"], + "number": 26, + "title": "Update deps", + "url": "https://github.com/hapijs/podium/issues/26" + } + ], + "number": 12, + "url": "https://github.com/hapijs/podium/milestone/12", + "version": "2.0.3" + }, + { + "date": "2017-09-17T22:15:26Z", + "id": 2770797, + "issues": [ + { + "id": 258339779, + "labels": ["bug"], + "number": 25, + "title": "Return consistent result on once()", + "url": "https://github.com/hapijs/podium/issues/25" + } + ], + "number": 11, + "url": "https://github.com/hapijs/podium/milestone/11", + "version": "2.0.2" + }, + { + "date": "2017-09-16T08:14:26Z", + "id": 2770762, + "issues": [ + { + "id": 258216843, + "labels": ["bug"], + "number": 24, + "title": "Cleanup emit()", + "url": "https://github.com/hapijs/podium/issues/24" + } + ], "number": 10, - "title": "Generate data once across podiums", - "url": "https://github.com/hapijs/podium/issues/10" - } - ], - "number": 5, - "url": "https://github.com/hapijs/podium/milestone/5", - "version": "1.2.3" - }, - { - "date": "2016-08-31T19:50:50Z", - "id": 1957206, - "issues": [ - { - "id": 174362408, - "labels": ["bug"], + "url": "https://github.com/hapijs/podium/milestone/10", + "version": "2.0.1" + }, + { + "date": "2017-09-16T07:08:55Z", + "id": 2646817, + "issues": [ + { + "id": 258214334, + "labels": ["feature", "breaking changes"], + "number": 23, + "title": "Convert emit() to async function", + "url": "https://github.com/hapijs/podium/issues/23" + } + ], "number": 9, - "title": "emit() callback not called on next tick", - "url": "https://github.com/hapijs/podium/issues/9" - } - ], - "number": 4, - "url": "https://github.com/hapijs/podium/milestone/4", - "version": "1.2.2" - }, - { - "date": "2016-08-23T06:02:55Z", - "id": 1956701, - "issues": [ - { - "id": 172618734, - "labels": ["bug"], + "url": "https://github.com/hapijs/podium/milestone/9", + "version": "2.0.0" + }, + { + "date": "2019-03-25T07:02:20Z", + "id": 4168288, + "issues": [ + { + "id": 424750189, + "labels": ["lts"], + "number": 41, + "title": "Commercial version of v1 branch", + "url": "https://github.com/hapijs/podium/issues/41" + } + ], + "number": 23, + "url": "https://github.com/hapijs/podium/milestone/23", + "version": "1.4.0" + }, + { + "date": "2017-07-18T07:06:24Z", + "id": 2164854, + "issues": [ + { + "id": 243615493, + "labels": ["feature"], + "number": 22, + "title": "Method to create new emitters based on existing configuration", + "url": "https://github.com/hapijs/podium/issues/22" + }, + { + "id": 216689045, + "labels": ["bug", "feature"], + "number": 18, + "title": "throwing inside an event breaks new events from emitting", + "url": "https://github.com/hapijs/podium/issues/18" + } + ], "number": 8, - "title": "Function data not allowed with spread", - "url": "https://github.com/hapijs/podium/issues/8" - } - ], - "number": 3, - "url": "https://github.com/hapijs/podium/milestone/3", - "version": "1.2.1" - }, - { - "date": "2016-08-22T23:49:29Z", - "id": 1953411, - "issues": [ - { - "id": 172581182, - "labels": ["feature"], + "url": "https://github.com/hapijs/podium/milestone/8", + "version": "1.3.0" + }, + { + "date": "2016-11-29T21:17:46Z", + "id": 2162626, + "issues": [ + { + "id": 192300779, + "labels": ["bug", "security"], + "number": 17, + "title": "Defer using process.nextTick", + "url": "https://github.com/hapijs/podium/pull/17" + } + ], "number": 7, - "title": "Support function data to generate data once", - "url": "https://github.com/hapijs/podium/issues/7" - } - ], - "number": 2, - "url": "https://github.com/hapijs/podium/milestone/2", - "version": "1.2.0" - }, - { - "date": "2016-08-21T07:48:30Z", - "id": 1953410, - "issues": [ - { - "id": 172309555, - "labels": ["feature"], + "url": "https://github.com/hapijs/podium/milestone/7", + "version": "1.2.5" + }, + { + "date": "2016-11-29T01:43:27Z", + "id": 1976347, + "issues": [ + { + "id": 192166052, + "labels": ["dependency"], + "number": 16, + "title": "Update deps", + "url": "https://github.com/hapijs/podium/issues/16" + } + ], + "number": 6, + "url": "https://github.com/hapijs/podium/milestone/6", + "version": "1.2.4" + }, + { + "date": "2016-09-01T00:04:21Z", + "id": 1975926, + "issues": [ + { + "id": 174407417, + "labels": ["bug"], + "number": 10, + "title": "Generate data once across podiums", + "url": "https://github.com/hapijs/podium/issues/10" + } + ], "number": 5, - "title": "Allow emit() to be overridden", - "url": "https://github.com/hapijs/podium/issues/5" - } - ], - "number": 1, - "url": "https://github.com/hapijs/podium/milestone/1", - "version": "1.1.0" - } + "url": "https://github.com/hapijs/podium/milestone/5", + "version": "1.2.3" + }, + { + "date": "2016-08-31T19:50:50Z", + "id": 1957206, + "issues": [ + { + "id": 174362408, + "labels": ["bug"], + "number": 9, + "title": "emit() callback not called on next tick", + "url": "https://github.com/hapijs/podium/issues/9" + } + ], + "number": 4, + "url": "https://github.com/hapijs/podium/milestone/4", + "version": "1.2.2" + }, + { + "date": "2016-08-23T06:02:55Z", + "id": 1956701, + "issues": [ + { + "id": 172618734, + "labels": ["bug"], + "number": 8, + "title": "Function data not allowed with spread", + "url": "https://github.com/hapijs/podium/issues/8" + } + ], + "number": 3, + "url": "https://github.com/hapijs/podium/milestone/3", + "version": "1.2.1" + }, + { + "date": "2016-08-22T23:49:29Z", + "id": 1953411, + "issues": [ + { + "id": 172581182, + "labels": ["feature"], + "number": 7, + "title": "Support function data to generate data once", + "url": "https://github.com/hapijs/podium/issues/7" + } + ], + "number": 2, + "url": "https://github.com/hapijs/podium/milestone/2", + "version": "1.2.0" + }, + { + "date": "2016-08-21T07:48:30Z", + "id": 1953410, + "issues": [ + { + "id": 172309555, + "labels": ["feature"], + "number": 5, + "title": "Allow emit() to be overridden", + "url": "https://github.com/hapijs/podium/issues/5" + } + ], + "number": 1, + "url": "https://github.com/hapijs/podium/milestone/1", + "version": "1.1.0" + } ] diff --git a/generated/modules/podium/info.json b/generated/modules/podium/info.json index 7bfb3e7e..68e7d7ec 100644 --- a/generated/modules/podium/info.json +++ b/generated/modules/podium/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 21, - "isPlugin": false, - "link": "https://github.com/hapijs/podium", - "name": "podium", - "package": "@hapi/podium", - "slogan": "Event emitter with async features.", - "sloganHtml": "Event emitter with async features.", - "stars": 86, - "updated": "2025-01-07T22:49:33Z", - "versions": [ - { - "branch": "v5.0.2", - "license": "BSD", - "name": "5.0.2", - "node": ">= 16" - } - ], - "versionsArray": ["5.0.2"], - "latestVersion": "5.x.x" + "api": true, + "forks": 21, + "isPlugin": false, + "latestVersion": "5.x.x", + "link": "https://github.com/hapijs/podium", + "name": "podium", + "package": "@hapi/podium", + "slogan": "Event emitter with async features.", + "sloganHtml": "Event emitter with async features.", + "stars": 86, + "updated": "2025-01-07T22:49:33Z", + "versions": [ + { + "branch": "v5.0.2", + "license": "BSD", + "name": "5.0.2", + "node": ">= 16" + } + ], + "versionsArray": ["5.0.2"] } diff --git a/generated/modules/scooter/changelog.json b/generated/modules/scooter/changelog.json index bba472f8..0cca4b1a 100644 --- a/generated/modules/scooter/changelog.json +++ b/generated/modules/scooter/changelog.json @@ -1,197 +1,197 @@ [ - { - "date": "2022-10-29T20:19:56Z", - "id": 8574536, - "issues": [ - { - "id": 1420830422, - "labels": ["feature", "test", "breaking changes", "dependency"], - "number": 63, - "title": "Support for hapi v21, node v18, ESM tests, multiple registration", - "url": "https://github.com/hapijs/scooter/pull/63" - } - ], - "number": 11, - "url": "https://github.com/hapijs/scooter/milestone/11", - "version": "7.0.0" - }, - { - "date": "2020-09-26T15:49:42Z", - "id": 4659681, - "issues": [ - { - "id": 684033246, - "labels": [], - "number": 58, - "title": "migrate to new travis format", - "url": "https://github.com/hapijs/scooter/pull/58" - }, - { - "id": 677273561, - "labels": [], - "number": 57, - "title": "update to hapi 20", - "url": "https://github.com/hapijs/scooter/pull/57" - }, - { - "id": 672196171, - "labels": [], - "number": 56, - "title": "upgrade semver and lab", - "url": "https://github.com/hapijs/scooter/pull/56" - } - ], - "number": 8, - "url": "https://github.com/hapijs/scooter/milestone/8", - "version": "6.0.1" - }, - { - "date": "2020-01-13T12:25:45Z", - "id": 4999091, - "issues": [ - { - "id": 548896133, - "labels": ["breaking changes", "dependency"], - "number": 55, - "title": "Only node 12", - "url": "https://github.com/hapijs/scooter/issues/55" - }, - { - "id": 548895500, - "labels": ["breaking changes", "dependency"], - "number": 54, - "title": "Require hapi 18", - "url": "https://github.com/hapijs/scooter/issues/54" - } - ], - "number": 9, - "url": "https://github.com/hapijs/scooter/milestone/9", - "version": "6.0.0" - }, - { - "date": "2019-09-15T05:28:07Z", - "id": 4246941, - "issues": [ - { - "id": 475258927, - "labels": ["dependency"], - "number": 49, - "title": "Re-fix issue #44 which was reverted in changeset da33ea7", - "url": "https://github.com/hapijs/scooter/pull/49" - } - ], - "number": 7, - "url": "https://github.com/hapijs/scooter/milestone/7", - "version": "5.1.1" - }, - { - "date": "2019-04-21T22:30:47Z", - "id": 3811390, - "issues": [ - { - "id": 435553860, - "labels": ["dependency"], - "number": 48, - "title": "Change module namespace", - "url": "https://github.com/hapijs/scooter/issues/48" - } - ], - "number": 6, - "url": "https://github.com/hapijs/scooter/milestone/6", - "version": "4.1.0" - }, - { - "date": "2018-11-11T06:54:34Z", - "id": 3811389, - "issues": [ - { - "id": 379496049, - "labels": ["non issue", "dependency"], - "number": 39, - "title": "Cleanup", - "url": "https://github.com/hapijs/scooter/issues/39" - } - ], - "number": 5, - "url": "https://github.com/hapijs/scooter/milestone/5", - "version": "4.0.1" - }, - { - "date": "2018-11-11T06:53:47Z", - "id": 1387678, - "issues": [ - { - "id": 114498879, - "labels": ["breaking changes", "dependency"], - "number": 30, - "title": "Update to follow node > 4 style standards", - "url": "https://github.com/hapijs/scooter/issues/30" - } - ], - "number": 4, - "url": "https://github.com/hapijs/scooter/milestone/4", - "version": "3.0.0" - }, - { - "date": "2016-05-24T03:08:10Z", - "id": 757981, - "issues": [ - { - "id": 50441581, - "labels": ["breaking changes", "dependency"], - "number": 22, - "title": "hapi8. Closes #21", - "url": "https://github.com/hapijs/scooter/pull/22" - }, - { - "id": 50441400, - "labels": ["breaking changes", "dependency"], - "number": 21, - "title": "hapi 8.0 API", - "url": "https://github.com/hapijs/scooter/issues/21" - } - ], - "number": 3, - "url": "https://github.com/hapijs/scooter/milestone/3", - "version": "2.0.0" - }, - { - "date": "2014-08-18T21:39:19Z", - "id": 757980, - "issues": [ - { - "id": 40534855, - "labels": ["dependency"], - "number": 16, - "title": "lab 4.0", - "url": "https://github.com/hapijs/scooter/issues/16" - }, - { - "id": 40534707, - "labels": ["documentation"], - "number": 15, - "title": "Rename spumko to hapijs", - "url": "https://github.com/hapijs/scooter/issues/15" - } - ], - "number": 2, - "url": "https://github.com/hapijs/scooter/milestone/2", - "version": "1.2.1" - }, - { - "date": "2014-03-20T08:59:55Z", - "id": 603545, - "issues": [ - { - "id": 29802472, - "labels": ["feature"], + { + "date": "2022-10-29T20:19:56Z", + "id": 8574536, + "issues": [ + { + "id": 1420830422, + "labels": ["feature", "test", "breaking changes", "dependency"], + "number": 63, + "title": "Support for hapi v21, node v18, ESM tests, multiple registration", + "url": "https://github.com/hapijs/scooter/pull/63" + } + ], + "number": 11, + "url": "https://github.com/hapijs/scooter/milestone/11", + "version": "7.0.0" + }, + { + "date": "2020-09-26T15:49:42Z", + "id": 4659681, + "issues": [ + { + "id": 684033246, + "labels": [], + "number": 58, + "title": "migrate to new travis format", + "url": "https://github.com/hapijs/scooter/pull/58" + }, + { + "id": 677273561, + "labels": [], + "number": 57, + "title": "update to hapi 20", + "url": "https://github.com/hapijs/scooter/pull/57" + }, + { + "id": 672196171, + "labels": [], + "number": 56, + "title": "upgrade semver and lab", + "url": "https://github.com/hapijs/scooter/pull/56" + } + ], + "number": 8, + "url": "https://github.com/hapijs/scooter/milestone/8", + "version": "6.0.1" + }, + { + "date": "2020-01-13T12:25:45Z", + "id": 4999091, + "issues": [ + { + "id": 548896133, + "labels": ["breaking changes", "dependency"], + "number": 55, + "title": "Only node 12", + "url": "https://github.com/hapijs/scooter/issues/55" + }, + { + "id": 548895500, + "labels": ["breaking changes", "dependency"], + "number": 54, + "title": "Require hapi 18", + "url": "https://github.com/hapijs/scooter/issues/54" + } + ], + "number": 9, + "url": "https://github.com/hapijs/scooter/milestone/9", + "version": "6.0.0" + }, + { + "date": "2019-09-15T05:28:07Z", + "id": 4246941, + "issues": [ + { + "id": 475258927, + "labels": ["dependency"], + "number": 49, + "title": "Re-fix issue #44 which was reverted in changeset da33ea7", + "url": "https://github.com/hapijs/scooter/pull/49" + } + ], + "number": 7, + "url": "https://github.com/hapijs/scooter/milestone/7", + "version": "5.1.1" + }, + { + "date": "2019-04-21T22:30:47Z", + "id": 3811390, + "issues": [ + { + "id": 435553860, + "labels": ["dependency"], + "number": 48, + "title": "Change module namespace", + "url": "https://github.com/hapijs/scooter/issues/48" + } + ], + "number": 6, + "url": "https://github.com/hapijs/scooter/milestone/6", + "version": "4.1.0" + }, + { + "date": "2018-11-11T06:54:34Z", + "id": 3811389, + "issues": [ + { + "id": 379496049, + "labels": ["non issue", "dependency"], + "number": 39, + "title": "Cleanup", + "url": "https://github.com/hapijs/scooter/issues/39" + } + ], + "number": 5, + "url": "https://github.com/hapijs/scooter/milestone/5", + "version": "4.0.1" + }, + { + "date": "2018-11-11T06:53:47Z", + "id": 1387678, + "issues": [ + { + "id": 114498879, + "labels": ["breaking changes", "dependency"], + "number": 30, + "title": "Update to follow node > 4 style standards", + "url": "https://github.com/hapijs/scooter/issues/30" + } + ], + "number": 4, + "url": "https://github.com/hapijs/scooter/milestone/4", + "version": "3.0.0" + }, + { + "date": "2016-05-24T03:08:10Z", + "id": 757981, + "issues": [ + { + "id": 50441581, + "labels": ["breaking changes", "dependency"], + "number": 22, + "title": "hapi8. Closes #21", + "url": "https://github.com/hapijs/scooter/pull/22" + }, + { + "id": 50441400, + "labels": ["breaking changes", "dependency"], + "number": 21, + "title": "hapi 8.0 API", + "url": "https://github.com/hapijs/scooter/issues/21" + } + ], + "number": 3, + "url": "https://github.com/hapijs/scooter/milestone/3", + "version": "2.0.0" + }, + { + "date": "2014-08-18T21:39:19Z", + "id": 757980, + "issues": [ + { + "id": 40534855, + "labels": ["dependency"], + "number": 16, + "title": "lab 4.0", + "url": "https://github.com/hapijs/scooter/issues/16" + }, + { + "id": 40534707, + "labels": ["documentation"], + "number": 15, + "title": "Rename spumko to hapijs", + "url": "https://github.com/hapijs/scooter/issues/15" + } + ], "number": 2, - "title": "hapi 3.0", - "url": "https://github.com/hapijs/scooter/issues/2" - } - ], - "number": 1, - "url": "https://github.com/hapijs/scooter/milestone/1", - "version": "1.0.1" - } + "url": "https://github.com/hapijs/scooter/milestone/2", + "version": "1.2.1" + }, + { + "date": "2014-03-20T08:59:55Z", + "id": 603545, + "issues": [ + { + "id": 29802472, + "labels": ["feature"], + "number": 2, + "title": "hapi 3.0", + "url": "https://github.com/hapijs/scooter/issues/2" + } + ], + "number": 1, + "url": "https://github.com/hapijs/scooter/milestone/1", + "version": "1.0.1" + } ] diff --git a/generated/modules/scooter/info.json b/generated/modules/scooter/info.json index 02e3f02e..de37db42 100644 --- a/generated/modules/scooter/info.json +++ b/generated/modules/scooter/info.json @@ -1,28 +1,28 @@ { - "api": true, - "forks": 24, - "isPlugin": true, - "link": "https://github.com/hapijs/scooter", - "name": "scooter", - "package": "@hapi/scooter", - "slogan": "User-agent information plugin.", - "sloganHtml": "User-agent information plugin.", - "stars": 46, - "updated": "2026-03-23T08:49:02Z", - "versions": [ - { - "branch": "v7.0.0", - "license": "BSD", - "name": "7.0.0", - "node": ">= 16" - }, - { - "branch": "v8.0.0", - "license": "BSD", - "name": "8.0.0", - "node": ">= 16" - } - ], - "versionsArray": ["8.0.0", "7.0.0"], - "latestVersion": "8.x.x" + "api": true, + "forks": 24, + "isPlugin": true, + "latestVersion": "8.x.x", + "link": "https://github.com/hapijs/scooter", + "name": "scooter", + "package": "@hapi/scooter", + "slogan": "User-agent information plugin.", + "sloganHtml": "User-agent information plugin.", + "stars": 46, + "updated": "2026-03-23T08:49:02Z", + "versions": [ + { + "branch": "v7.0.0", + "license": "BSD", + "name": "7.0.0", + "node": ">= 16" + }, + { + "branch": "v8.0.0", + "license": "BSD", + "name": "8.0.0", + "node": ">= 16" + } + ], + "versionsArray": ["8.0.0", "7.0.0"] } diff --git a/generated/modules/shot/changelog.json b/generated/modules/shot/changelog.json index 109de9b0..0a1bf94e 100644 --- a/generated/modules/shot/changelog.json +++ b/generated/modules/shot/changelog.json @@ -1,990 +1,1013 @@ [ - { - "date": "2025-08-13T22:35:10Z", - "id": 13483179, - "issues": [ - { - "id": 3316031449, - "labels": ["bug"], - "number": 151, - "title": "Improve argument validation and messaging", - "url": "https://github.com/hapijs/shot/pull/151" - }, - { - "id": 3316003489, - "labels": ["bug"], - "number": 150, - "title": "Support handlers calling res.destroy() to abort sending a response", - "url": "https://github.com/hapijs/shot/pull/150" - } - ], - "number": 55, - "url": "https://github.com/hapijs/shot/milestone/55", - "version": "6.0.2" - }, - { - "date": "2023-02-11T20:29:00Z", - "id": 7956645, - "issues": [ - { - "id": 1551778395, - "labels": ["dependency"], - "number": 147, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/shot/pull/147" - } - ], - "number": 54, - "url": "https://github.com/hapijs/shot/milestone/54", - "version": "6.0.1" - }, - { - "date": "2022-05-09T04:05:08Z", - "id": 7908563, - "issues": [ - { - "id": 1213890005, - "labels": ["feature"], - "number": 145, - "title": "More realistic request socket interface", - "url": "https://github.com/hapijs/shot/pull/145" - }, - { - "id": 1206653283, - "labels": ["breaking changes"], - "number": 144, - "title": "Drop node v12 support", - "url": "https://github.com/hapijs/shot/pull/144" - }, - { - "id": 856809287, - "labels": ["types"], - "number": 140, - "title": "Add initial typescript support", - "url": "https://github.com/hapijs/shot/pull/140" - } - ], - "number": 53, - "url": "https://github.com/hapijs/shot/milestone/53", - "version": "6.0.0" - }, - { - "date": "2021-01-23T07:04:19Z", - "id": 5921232, - "issues": [ - { - "id": 791725840, - "labels": ["bug"], - "number": 139, - "title": "When simulating close, ensure res emits close.", - "url": "https://github.com/hapijs/shot/pull/139" - }, - { - "id": 782917479, - "labels": ["non issue"], - "number": 137, - "title": "remove unused lib/schema.js", - "url": "https://github.com/hapijs/shot/pull/137" - }, - { - "id": 709596284, - "labels": [], - "number": 134, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/shot/pull/134" - } - ], - "number": 51, - "url": "https://github.com/hapijs/shot/milestone/51", - "version": "5.0.5" - }, - { - "date": "2020-09-26T19:26:01Z", - "id": 5834448, - "issues": [ - { - "id": 686187417, - "labels": ["bug"], - "number": 133, - "title": "Another attempt at #129", - "url": "https://github.com/hapijs/shot/pull/133" - }, - { - "id": 686054774, - "labels": ["test"], - "number": 132, - "title": "fix: do not auto destroy request stream", - "url": "https://github.com/hapijs/shot/pull/132" - } - ], - "number": 50, - "url": "https://github.com/hapijs/shot/milestone/50", - "version": "5.0.4" - }, - { - "date": "2020-08-25T22:53:38Z", - "id": 5809683, - "issues": [ - { - "id": 685816286, - "labels": [], - "number": 130, - "title": "Revert \"Fix cleanup to be consistent across node releases\"", - "url": "https://github.com/hapijs/shot/pull/130" - } - ], - "number": 49, - "url": "https://github.com/hapijs/shot/milestone/49", - "version": "5.0.3" - }, - { - "date": "2020-08-25T15:26:23Z", - "id": 5808357, - "issues": [ - { - "id": 685529058, - "labels": ["bug"], - "number": 129, - "title": "Fix cleanup to be consistent across node releases", - "url": "https://github.com/hapijs/shot/pull/129" - } - ], - "number": 48, - "url": "https://github.com/hapijs/shot/milestone/48", - "version": "5.0.2" - }, - { - "date": "2020-08-25T15:25:45Z", - "id": 4973448, - "issues": [ - { - "id": 660914620, - "labels": ["test"], - "number": 127, - "title": "test on node 14", - "url": "https://github.com/hapijs/shot/pull/127" - }, - { - "id": 660360033, - "labels": ["dependency"], - "number": 124, - "title": "Replace joi with validate", - "url": "https://github.com/hapijs/shot/pull/124" - } - ], - "number": 47, - "url": "https://github.com/hapijs/shot/milestone/47", - "version": "5.0.1" - }, - { - "date": "2020-01-08T21:17:23Z", - "id": 4973447, - "issues": [ - { - "id": 547105740, - "labels": ["breaking changes", "dependency"], - "number": 120, - "title": "Only node 12", - "url": "https://github.com/hapijs/shot/issues/120" - } - ], - "number": 46, - "url": "https://github.com/hapijs/shot/milestone/46", - "version": "5.0.0" - }, - { - "date": "2019-09-12T23:17:38Z", - "id": 4655616, - "issues": [ - { - "id": 493070681, - "labels": ["dependency"], - "number": 112, - "title": "Update joi", - "url": "https://github.com/hapijs/shot/issues/112" - } - ], - "number": 44, - "url": "https://github.com/hapijs/shot/milestone/44", - "version": "4.1.2" - }, - { - "date": "2019-09-12T23:17:21Z", - "id": 4192164, - "issues": [ - { - "id": 470518921, - "labels": ["bug", "dependency"], - "number": 109, - "title": "work around Node's DEP0066", - "url": "https://github.com/hapijs/shot/pull/109" - } - ], - "number": 43, - "url": "https://github.com/hapijs/shot/milestone/43", - "version": "4.1.1" - }, - { - "date": "2019-04-02T05:57:58Z", - "id": 3792290, - "issues": [ - { - "id": 441059893, - "labels": ["bug", "dependency"], - "number": 108, - "title": "Node V12 deprecation warning [DEP0066] OutgoingMessage.prototype._headers is deprecated", - "url": "https://github.com/hapijs/shot/issues/108" - }, - { - "id": 428037492, - "labels": ["dependency"], - "number": 106, - "title": "Change module name", - "url": "https://github.com/hapijs/shot/issues/106" - } - ], - "number": 40, - "url": "https://github.com/hapijs/shot/milestone/40", - "version": "4.1.0" - }, - { - "date": "2018-11-03T00:36:49Z", - "id": 3788862, - "issues": [ - { - "id": 377003034, - "labels": ["non issue"], - "number": 101, - "title": "Remove engines", - "url": "https://github.com/hapijs/shot/issues/101" - } - ], - "number": 39, - "url": "https://github.com/hapijs/shot/milestone/39", - "version": "4.0.7" - }, - { - "date": "2018-11-01T19:01:21Z", - "id": 3788861, - "issues": [ - { - "id": 376525162, - "labels": ["dependency"], - "number": 100, - "title": "Update deps", - "url": "https://github.com/hapijs/shot/issues/100" - } - ], - "number": 38, - "url": "https://github.com/hapijs/shot/milestone/38", - "version": "4.0.6" - }, - { - "date": "2018-11-01T19:00:52Z", - "id": 2912994, - "issues": [ - { - "id": 375848105, - "labels": [], - "number": 99, - "title": "Updated lab to v17 to pass on Node v11", - "url": "https://github.com/hapijs/shot/pull/99" - }, - { - "id": 295941213, - "labels": ["test"], - "number": 92, - "title": "skip not covered lines on node master", - "url": "https://github.com/hapijs/shot/pull/92" - } - ], - "number": 37, - "url": "https://github.com/hapijs/shot/milestone/37", - "version": "4.0.5" - }, - { - "date": "2017-11-14T22:30:34Z", - "id": 2856585, - "issues": [], - "number": 36, - "url": "https://github.com/hapijs/shot/milestone/36", - "version": "4.0.4" - }, - { - "date": "2017-10-22T08:34:58Z", - "id": 2813707, - "issues": [ - { - "id": 267446685, - "labels": ["dependency"], - "number": 90, - "title": "Update joi", - "url": "https://github.com/hapijs/shot/issues/90" - } - ], - "number": 35, - "url": "https://github.com/hapijs/shot/milestone/35", - "version": "4.0.3" - }, - { - "date": "2017-10-04T07:47:43Z", - "id": 2799412, - "issues": [ - { - "id": 262695339, - "labels": ["feature"], - "number": 89, - "title": "Replace instanceof with symbol", - "url": "https://github.com/hapijs/shot/issues/89" - } - ], - "number": 34, - "url": "https://github.com/hapijs/shot/milestone/34", - "version": "4.0.2" - }, - { - "date": "2017-09-28T06:15:19Z", - "id": 2786758, - "issues": [ - { - "id": 261204136, - "labels": ["dependency"], - "number": 88, - "title": "Update deps", - "url": "https://github.com/hapijs/shot/issues/88" - } - ], - "number": 33, - "url": "https://github.com/hapijs/shot/milestone/33", - "version": "4.0.1" - }, - { - "date": "2017-09-28T06:15:21Z", - "id": 2786757, - "issues": [], - "number": 32, - "url": "https://github.com/hapijs/shot/milestone/32", - "version": "4.0.0" - }, - { - "date": "2020-06-29T20:53:35Z", - "id": 4168310, - "issues": [ - { - "id": 647657335, - "labels": ["bug", "lts", "commercial"], - "number": 122, - "title": "Support node 12", - "url": "https://github.com/hapijs/shot/issues/122" - } - ], - "number": 42, - "url": "https://github.com/hapijs/shot/milestone/42", - "version": "3.5.1" - }, - { - "date": "2019-03-25T16:19:48Z", - "id": 4168309, - "issues": [ - { - "id": 424752997, - "labels": ["lts"], - "number": 105, - "title": "Commercial version of v3 branch", - "url": "https://github.com/hapijs/shot/issues/105" - } - ], - "number": 41, - "url": "https://github.com/hapijs/shot/milestone/41", - "version": "3.5.0" - }, - { - "date": "2017-09-23T10:00:11Z", - "id": 2555724, - "issues": [ - { - "id": 232469523, - "labels": ["bug"], - "number": 85, - "title": "Fix for node 8", - "url": "https://github.com/hapijs/shot/pull/85" - } - ], - "number": 31, - "url": "https://github.com/hapijs/shot/milestone/31", - "version": "3.4.2" - }, - { - "date": "2017-09-23T10:00:12Z", - "id": 2162623, - "issues": [ - { - "id": 232023062, - "labels": ["bug"], - "number": 84, - "title": "Fix node 8 issues", - "url": "https://github.com/hapijs/shot/pull/84" - } - ], - "number": 30, - "url": "https://github.com/hapijs/shot/milestone/30", - "version": "3.4.1" - }, - { - "date": "2016-11-29T01:41:05Z", - "id": 1966679, - "issues": [ - { - "id": 192165492, - "labels": ["dependency"], - "number": 83, - "title": "Update deps", - "url": "https://github.com/hapijs/shot/issues/83" - }, - { - "id": 176047183, - "labels": ["feature", "breaking changes"], - "number": 81, - "title": "Handle streams of utf8 encoded strings", - "url": "https://github.com/hapijs/shot/pull/81" - }, - { - "id": 175988308, - "labels": ["feature"], - "number": 79, - "title": "Remove custom output parsing and buffer payload chunks via write()", - "url": "https://github.com/hapijs/shot/pull/79" - }, - { - "id": 173839758, - "labels": ["documentation"], - "number": 76, - "title": "Updated API docs to reflect new validate flag", - "url": "https://github.com/hapijs/shot/pull/76" - } - ], - "number": 29, - "url": "https://github.com/hapijs/shot/milestone/29", - "version": "3.4.0" - }, - { - "date": "2016-08-26T21:46:09Z", - "id": 1966675, - "issues": [], - "number": 28, - "url": "https://github.com/hapijs/shot/milestone/28", - "version": "3.3.1" - }, - { - "date": "2016-08-26T21:37:05Z", - "id": 1964660, - "issues": [ - { - "id": 173548451, - "labels": ["feature"], - "number": 75, - "title": "Cleanup validation and make it optional", - "url": "https://github.com/hapijs/shot/issues/75" - } - ], - "number": 27, - "url": "https://github.com/hapijs/shot/milestone/27", - "version": "3.3.0" - }, - { - "date": "2016-08-26T08:42:55Z", - "id": 1957165, - "issues": [ - { - "id": 172192496, - "labels": ["bug"], - "number": 73, - "title": "Add status message to response object", - "url": "https://github.com/hapijs/shot/pull/73" - }, - { - "id": 167660630, - "labels": ["feature"], - "number": 71, - "title": "add validation schema to shot", - "url": "https://github.com/hapijs/shot/pull/71" - } - ], - "number": 26, - "url": "https://github.com/hapijs/shot/milestone/26", - "version": "3.2.1" - }, - { - "date": "2016-08-23T05:19:50Z", - "id": 1954621, - "issues": [ - { - "id": 172614128, - "labels": ["feature"], - "number": 74, - "title": "Include statusMessage", - "url": "https://github.com/hapijs/shot/issues/74" - } - ], - "number": 25, - "url": "https://github.com/hapijs/shot/milestone/25", - "version": "3.2.0" - }, - { - "date": "2016-08-22T08:58:35Z", - "id": 1910276, - "issues": [ - { - "id": 168173402, - "labels": ["documentation"], - "number": 72, - "title": "npmignore", - "url": "https://github.com/hapijs/shot/issues/72" - } - ], - "number": 24, - "url": "https://github.com/hapijs/shot/milestone/24", - "version": "3.1.1" - }, - { - "date": "2016-07-28T19:11:47Z", - "id": 1572979, - "issues": [ - { - "id": 156607428, - "labels": ["test", "dependency"], - "number": 69, - "title": "Update code to 3.x.x", - "url": "https://github.com/hapijs/shot/pull/69" - }, - { - "id": 155801096, - "labels": ["test", "dependency"], - "number": 68, - "title": "Test on node 6, update lab and fix tests", - "url": "https://github.com/hapijs/shot/pull/68" - }, - { - "id": 148002092, - "labels": ["feature"], - "number": 67, - "title": "Support stream payloads", - "url": "https://github.com/hapijs/shot/pull/67" - }, - { - "id": 132475208, - "labels": ["feature"], - "number": 65, - "title": "Adds quotes around node versions in travis file", - "url": "https://github.com/hapijs/shot/pull/65" - } - ], - "number": 23, - "url": "https://github.com/hapijs/shot/milestone/23", - "version": "3.1.0" - }, - { - "date": "2016-02-09T17:13:27Z", - "id": 1479361, - "issues": [ - { - "id": 125964703, - "labels": ["bug"], - "number": 63, - "title": "Add default port to host header when no port specified. Fixes #62", - "url": "https://github.com/hapijs/shot/pull/63" - }, - { - "id": 124636692, - "labels": ["feature"], - "number": 61, - "title": "Reduce function generation", - "url": "https://github.com/hapijs/shot/pull/61" - }, - { - "id": 124321774, - "labels": ["feature", "non issue"], - "number": 60, - "title": "Refactor index.js into separate files", - "url": "https://github.com/hapijs/shot/pull/60" - } - ], - "number": 22, - "url": "https://github.com/hapijs/shot/milestone/22", - "version": "3.0.1" - }, - { - "date": "2015-12-30T08:55:07Z", - "id": 1389543, - "issues": [ - { - "id": 124319716, - "labels": ["documentation"], - "number": 59, - "title": "Update README with ES6 styles", - "url": "https://github.com/hapijs/shot/issues/59" - }, - { - "id": 124319683, - "labels": ["documentation"], - "number": 58, - "title": "Updated README for ES6 styles closes #59", - "url": "https://github.com/hapijs/shot/pull/58" - }, - { - "id": 124224969, - "labels": ["bug", "breaking changes"], - "number": 57, - "title": "Set trailers in res.trailers rather than res.headers. Fixes #56", - "url": "https://github.com/hapijs/shot/pull/57" - }, - { - "id": 124125017, - "labels": ["bug", "breaking changes"], + { + "date": "2026-05-27T07:19:05Z", + "id": 16011639, + "issues": [ + { + "id": 4429821274, + "labels": ["bug"], + "number": 153, + "title": "Fix stream payload error handling", + "url": "https://github.com/hapijs/shot/pull/153" + }, + { + "id": 4429757896, + "labels": ["bug"], + "number": 152, + "title": "Fix missing close emits", + "url": "https://github.com/hapijs/shot/pull/152" + } + ], "number": 56, - "title": "Trailers should be added to res.trailers, not res.headers", - "url": "https://github.com/hapijs/shot/issues/56" - } - ], - "number": 21, - "url": "https://github.com/hapijs/shot/milestone/21", - "version": "3.0.0" - }, - { - "date": "2015-11-02T18:15:08Z", - "id": 1389534, - "issues": [ - { - "id": 114652150, - "labels": ["test"], + "url": "https://github.com/hapijs/shot/milestone/56", + "version": "6.0.3" + }, + { + "date": "2025-08-13T22:35:10Z", + "id": 13483179, + "issues": [ + { + "id": 3316031449, + "labels": ["bug"], + "number": 151, + "title": "Improve argument validation and messaging", + "url": "https://github.com/hapijs/shot/pull/151" + }, + { + "id": 3316003489, + "labels": ["bug"], + "number": 150, + "title": "Support handlers calling res.destroy() to abort sending a response", + "url": "https://github.com/hapijs/shot/pull/150" + } + ], "number": 55, - "title": "Fix broken tests", - "url": "https://github.com/hapijs/shot/issues/55" - } - ], - "number": 20, - "url": "https://github.com/hapijs/shot/milestone/20", - "version": "2.0.1" - }, - { - "date": "2015-11-02T18:10:02Z", - "id": 1384338, - "issues": [ - { - "id": 114156707, - "labels": ["breaking changes"], - "number": 52, - "title": "Node >= 4 / es2015 updates", - "url": "https://github.com/hapijs/shot/issues/52" - }, - { - "id": 114156546, - "labels": ["dependency"], + "url": "https://github.com/hapijs/shot/milestone/55", + "version": "6.0.2" + }, + { + "date": "2023-02-11T20:29:00Z", + "id": 7956645, + "issues": [ + { + "id": 1551778395, + "labels": ["dependency"], + "number": 147, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/shot/pull/147" + } + ], + "number": 54, + "url": "https://github.com/hapijs/shot/milestone/54", + "version": "6.0.1" + }, + { + "date": "2022-05-09T04:05:08Z", + "id": 7908563, + "issues": [ + { + "id": 1213890005, + "labels": ["feature"], + "number": 145, + "title": "More realistic request socket interface", + "url": "https://github.com/hapijs/shot/pull/145" + }, + { + "id": 1206653283, + "labels": ["breaking changes"], + "number": 144, + "title": "Drop node v12 support", + "url": "https://github.com/hapijs/shot/pull/144" + }, + { + "id": 856809287, + "labels": ["types"], + "number": 140, + "title": "Add initial typescript support", + "url": "https://github.com/hapijs/shot/pull/140" + } + ], + "number": 53, + "url": "https://github.com/hapijs/shot/milestone/53", + "version": "6.0.0" + }, + { + "date": "2021-01-23T07:04:19Z", + "id": 5921232, + "issues": [ + { + "id": 791725840, + "labels": ["bug"], + "number": 139, + "title": "When simulating close, ensure res emits close.", + "url": "https://github.com/hapijs/shot/pull/139" + }, + { + "id": 782917479, + "labels": ["non issue"], + "number": 137, + "title": "remove unused lib/schema.js", + "url": "https://github.com/hapijs/shot/pull/137" + }, + { + "id": 709596284, + "labels": [], + "number": 134, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/shot/pull/134" + } + ], "number": 51, - "title": "Upgrade lab to 7.x.x. Closes #50", - "url": "https://github.com/hapijs/shot/pull/51" - } - ], - "number": 19, - "url": "https://github.com/hapijs/shot/milestone/19", - "version": "2.0.0" - }, - { - "date": "2015-10-05T22:31:29Z", - "id": 1339204, - "issues": [ - { - "id": 109899525, - "labels": ["feature"], + "url": "https://github.com/hapijs/shot/milestone/51", + "version": "5.0.5" + }, + { + "date": "2020-09-26T19:26:01Z", + "id": 5834448, + "issues": [ + { + "id": 686187417, + "labels": ["bug"], + "number": 133, + "title": "Another attempt at #129", + "url": "https://github.com/hapijs/shot/pull/133" + }, + { + "id": 686054774, + "labels": ["test"], + "number": 132, + "title": "fix: do not auto destroy request stream", + "url": "https://github.com/hapijs/shot/pull/132" + } + ], + "number": 50, + "url": "https://github.com/hapijs/shot/milestone/50", + "version": "5.0.4" + }, + { + "date": "2020-08-25T22:53:38Z", + "id": 5809683, + "issues": [ + { + "id": 685816286, + "labels": [], + "number": 130, + "title": "Revert \"Fix cleanup to be consistent across node releases\"", + "url": "https://github.com/hapijs/shot/pull/130" + } + ], + "number": 49, + "url": "https://github.com/hapijs/shot/milestone/49", + "version": "5.0.3" + }, + { + "date": "2020-08-25T15:26:23Z", + "id": 5808357, + "issues": [ + { + "id": 685529058, + "labels": ["bug"], + "number": 129, + "title": "Fix cleanup to be consistent across node releases", + "url": "https://github.com/hapijs/shot/pull/129" + } + ], + "number": 48, + "url": "https://github.com/hapijs/shot/milestone/48", + "version": "5.0.2" + }, + { + "date": "2020-08-25T15:25:45Z", + "id": 4973448, + "issues": [ + { + "id": 660914620, + "labels": ["test"], + "number": 127, + "title": "test on node 14", + "url": "https://github.com/hapijs/shot/pull/127" + }, + { + "id": 660360033, + "labels": ["dependency"], + "number": 124, + "title": "Replace joi with validate", + "url": "https://github.com/hapijs/shot/pull/124" + } + ], "number": 47, - "title": "Add authority option. Closes #46", - "url": "https://github.com/hapijs/shot/pull/47" - }, - { - "id": 109899388, - "labels": ["feature"], + "url": "https://github.com/hapijs/shot/milestone/47", + "version": "5.0.1" + }, + { + "date": "2020-01-08T21:17:23Z", + "id": 4973447, + "issues": [ + { + "id": 547105740, + "labels": ["breaking changes", "dependency"], + "number": 120, + "title": "Only node 12", + "url": "https://github.com/hapijs/shot/issues/120" + } + ], "number": 46, - "title": "Add authority option for overriding default host header", - "url": "https://github.com/hapijs/shot/issues/46" - } - ], - "number": 17, - "url": "https://github.com/hapijs/shot/milestone/17", - "version": "1.7.0" - }, - { - "date": "2015-09-24T22:04:22Z", - "id": 1303307, - "issues": [ - { - "id": 108184479, - "labels": ["bug"], + "url": "https://github.com/hapijs/shot/milestone/46", + "version": "5.0.0" + }, + { + "date": "2019-09-12T23:17:38Z", + "id": 4655616, + "issues": [ + { + "id": 493070681, + "labels": ["dependency"], + "number": 112, + "title": "Update joi", + "url": "https://github.com/hapijs/shot/issues/112" + } + ], "number": 44, - "title": "Always include a host header. Closes #43", - "url": "https://github.com/hapijs/shot/pull/44" - }, - { - "id": 108184343, - "labels": ["bug"], + "url": "https://github.com/hapijs/shot/milestone/44", + "version": "4.1.2" + }, + { + "date": "2019-09-12T23:17:21Z", + "id": 4192164, + "issues": [ + { + "id": 470518921, + "labels": ["bug", "dependency"], + "number": 109, + "title": "work around Node's DEP0066", + "url": "https://github.com/hapijs/shot/pull/109" + } + ], "number": 43, - "title": "host header is not always set", - "url": "https://github.com/hapijs/shot/issues/43" - } - ], - "number": 16, - "url": "https://github.com/hapijs/shot/milestone/16", - "version": "1.6.1" - }, - { - "date": "2015-08-04T07:33:25Z", - "id": 1239704, - "issues": [ - { - "id": 90889609, - "labels": ["feature"], + "url": "https://github.com/hapijs/shot/milestone/43", + "version": "4.1.1" + }, + { + "date": "2019-04-02T05:57:58Z", + "id": 3792290, + "issues": [ + { + "id": 441059893, + "labels": ["bug", "dependency"], + "number": 108, + "title": "Node V12 deprecation warning [DEP0066] OutgoingMessage.prototype._headers is deprecated", + "url": "https://github.com/hapijs/shot/issues/108" + }, + { + "id": 428037492, + "labels": ["dependency"], + "number": 106, + "title": "Change module name", + "url": "https://github.com/hapijs/shot/issues/106" + } + ], + "number": 40, + "url": "https://github.com/hapijs/shot/milestone/40", + "version": "4.1.0" + }, + { + "date": "2018-11-03T00:36:49Z", + "id": 3788862, + "issues": [ + { + "id": 377003034, + "labels": ["non issue"], + "number": 101, + "title": "Remove engines", + "url": "https://github.com/hapijs/shot/issues/101" + } + ], + "number": 39, + "url": "https://github.com/hapijs/shot/milestone/39", + "version": "4.0.7" + }, + { + "date": "2018-11-01T19:01:21Z", + "id": 3788861, + "issues": [ + { + "id": 376525162, + "labels": ["dependency"], + "number": 100, + "title": "Update deps", + "url": "https://github.com/hapijs/shot/issues/100" + } + ], + "number": 38, + "url": "https://github.com/hapijs/shot/milestone/38", + "version": "4.0.6" + }, + { + "date": "2018-11-01T19:00:52Z", + "id": 2912994, + "issues": [ + { + "id": 375848105, + "labels": [], + "number": 99, + "title": "Updated lab to v17 to pass on Node v11", + "url": "https://github.com/hapijs/shot/pull/99" + }, + { + "id": 295941213, + "labels": ["test"], + "number": 92, + "title": "skip not covered lines on node master", + "url": "https://github.com/hapijs/shot/pull/92" + } + ], + "number": 37, + "url": "https://github.com/hapijs/shot/milestone/37", + "version": "4.0.5" + }, + { + "date": "2017-11-14T22:30:34Z", + "id": 2856585, + "issues": [], "number": 36, - "title": "Inject request with specified the remote client IP address", - "url": "https://github.com/hapijs/shot/pull/36" - }, - { - "id": 90121398, - "labels": ["feature", "support"], + "url": "https://github.com/hapijs/shot/milestone/36", + "version": "4.0.4" + }, + { + "date": "2017-10-22T08:34:58Z", + "id": 2813707, + "issues": [ + { + "id": 267446685, + "labels": ["dependency"], + "number": 90, + "title": "Update joi", + "url": "https://github.com/hapijs/shot/issues/90" + } + ], "number": 35, - "title": "Client IP address", - "url": "https://github.com/hapijs/shot/issues/35" - } - ], - "number": 15, - "url": "https://github.com/hapijs/shot/milestone/15", - "version": "1.6.0" - }, - { - "date": "2015-08-04T07:33:46Z", - "id": 1151019, - "issues": [], - "number": 14, - "url": "https://github.com/hapijs/shot/milestone/14", - "version": "1.5.4" - }, - { - "date": "2015-06-05T11:39:29Z", - "id": 1150992, - "issues": [ - { - "id": 85512529, - "labels": ["bug"], + "url": "https://github.com/hapijs/shot/milestone/35", + "version": "4.0.3" + }, + { + "date": "2017-10-04T07:47:43Z", + "id": 2799412, + "issues": [ + { + "id": 262695339, + "labels": ["feature"], + "number": 89, + "title": "Replace instanceof with symbol", + "url": "https://github.com/hapijs/shot/issues/89" + } + ], + "number": 34, + "url": "https://github.com/hapijs/shot/milestone/34", + "version": "4.0.2" + }, + { + "date": "2017-09-28T06:15:19Z", + "id": 2786758, + "issues": [ + { + "id": 261204136, + "labels": ["dependency"], + "number": 88, + "title": "Update deps", + "url": "https://github.com/hapijs/shot/issues/88" + } + ], "number": 33, - "title": "Inconsistent assignment of rawPayload", - "url": "https://github.com/hapijs/shot/issues/33" - } - ], - "number": 13, - "url": "https://github.com/hapijs/shot/milestone/13", - "version": "1.5.3" - }, - { - "date": "2015-06-05T11:13:13Z", - "id": 1149698, - "issues": [ - { - "id": 85185994, - "labels": ["bug"], + "url": "https://github.com/hapijs/shot/milestone/33", + "version": "4.0.1" + }, + { + "date": "2017-09-28T06:15:21Z", + "id": 2786757, + "issues": [], "number": 32, - "title": "use rawPayload, convert to UTF8 after the whole buffer is available", - "url": "https://github.com/hapijs/shot/pull/32" - } - ], - "number": 12, - "url": "https://github.com/hapijs/shot/milestone/12", - "version": "1.5.2" - }, - { - "date": "2015-06-04T15:41:11Z", - "id": 1067652, - "issues": [ - { - "id": 79384563, - "labels": ["bug"], + "url": "https://github.com/hapijs/shot/milestone/32", + "version": "4.0.0" + }, + { + "date": "2020-06-29T20:53:35Z", + "id": 4168310, + "issues": [ + { + "id": 647657335, + "labels": ["bug", "lts", "commercial"], + "number": 122, + "title": "Support node 12", + "url": "https://github.com/hapijs/shot/issues/122" + } + ], + "number": 42, + "url": "https://github.com/hapijs/shot/milestone/42", + "version": "3.5.1" + }, + { + "date": "2019-03-25T16:19:48Z", + "id": 4168309, + "issues": [ + { + "id": 424752997, + "labels": ["lts"], + "number": 105, + "title": "Commercial version of v3 branch", + "url": "https://github.com/hapijs/shot/issues/105" + } + ], + "number": 41, + "url": "https://github.com/hapijs/shot/milestone/41", + "version": "3.5.0" + }, + { + "date": "2017-09-23T10:00:11Z", + "id": 2555724, + "issues": [ + { + "id": 232469523, + "labels": ["bug"], + "number": 85, + "title": "Fix for node 8", + "url": "https://github.com/hapijs/shot/pull/85" + } + ], + "number": 31, + "url": "https://github.com/hapijs/shot/milestone/31", + "version": "3.4.2" + }, + { + "date": "2017-09-23T10:00:12Z", + "id": 2162623, + "issues": [ + { + "id": 232023062, + "labels": ["bug"], + "number": 84, + "title": "Fix node 8 issues", + "url": "https://github.com/hapijs/shot/pull/84" + } + ], "number": 30, - "title": "fix #7", - "url": "https://github.com/hapijs/shot/pull/30" - }, - { - "id": 16331603, - "labels": ["bug"], - "number": 7, - "title": "deprecated encoding 'binary' is used", - "url": "https://github.com/hapijs/shot/issues/7" - } - ], - "number": 11, - "url": "https://github.com/hapijs/shot/milestone/11", - "version": "1.5.1" - }, - { - "date": "2015-04-14T20:32:04Z", - "id": 1067638, - "issues": [ - { - "id": 63228901, - "labels": ["feature"], + "url": "https://github.com/hapijs/shot/milestone/30", + "version": "3.4.1" + }, + { + "date": "2016-11-29T01:41:05Z", + "id": 1966679, + "issues": [ + { + "id": 192165492, + "labels": ["dependency"], + "number": 83, + "title": "Update deps", + "url": "https://github.com/hapijs/shot/issues/83" + }, + { + "id": 176047183, + "labels": ["feature", "breaking changes"], + "number": 81, + "title": "Handle streams of utf8 encoded strings", + "url": "https://github.com/hapijs/shot/pull/81" + }, + { + "id": 175988308, + "labels": ["feature"], + "number": 79, + "title": "Remove custom output parsing and buffer payload chunks via write()", + "url": "https://github.com/hapijs/shot/pull/79" + }, + { + "id": 173839758, + "labels": ["documentation"], + "number": 76, + "title": "Updated API docs to reflect new validate flag", + "url": "https://github.com/hapijs/shot/pull/76" + } + ], + "number": 29, + "url": "https://github.com/hapijs/shot/milestone/29", + "version": "3.4.0" + }, + { + "date": "2016-08-26T21:46:09Z", + "id": 1966675, + "issues": [], "number": 28, - "title": "Add 'content-length' header matching payload length if none set", - "url": "https://github.com/hapijs/shot/pull/28" - } - ], - "number": 10, - "url": "https://github.com/hapijs/shot/milestone/10", - "version": "1.5.0" - }, - { - "date": "2015-04-14T20:25:17Z", - "id": 987627, - "issues": [ - { - "id": 59641924, - "labels": ["test"], + "url": "https://github.com/hapijs/shot/milestone/28", + "version": "3.3.1" + }, + { + "date": "2016-08-26T21:37:05Z", + "id": 1964660, + "issues": [ + { + "id": 173548451, + "labels": ["feature"], + "number": 75, + "title": "Cleanup validation and make it optional", + "url": "https://github.com/hapijs/shot/issues/75" + } + ], "number": 27, - "title": "add -L to test and test-cov", - "url": "https://github.com/hapijs/shot/pull/27" - } - ], - "number": 9, - "url": "https://github.com/hapijs/shot/milestone/9", - "version": "1.4.2" - }, - { - "date": "2015-02-19T23:40:14Z", - "id": 987608, - "issues": [ - { - "id": 53795024, - "labels": ["bug"], + "url": "https://github.com/hapijs/shot/milestone/27", + "version": "3.3.0" + }, + { + "date": "2016-08-26T08:42:55Z", + "id": 1957165, + "issues": [ + { + "id": 172192496, + "labels": ["bug"], + "number": 73, + "title": "Add status message to response object", + "url": "https://github.com/hapijs/shot/pull/73" + }, + { + "id": 167660630, + "labels": ["feature"], + "number": 71, + "title": "add validation schema to shot", + "url": "https://github.com/hapijs/shot/pull/71" + } + ], + "number": 26, + "url": "https://github.com/hapijs/shot/milestone/26", + "version": "3.2.1" + }, + { + "date": "2016-08-23T05:19:50Z", + "id": 1954621, + "issues": [ + { + "id": 172614128, + "labels": ["feature"], + "number": 74, + "title": "Include statusMessage", + "url": "https://github.com/hapijs/shot/issues/74" + } + ], + "number": 25, + "url": "https://github.com/hapijs/shot/milestone/25", + "version": "3.2.0" + }, + { + "date": "2016-08-22T08:58:35Z", + "id": 1910276, + "issues": [ + { + "id": 168173402, + "labels": ["documentation"], + "number": 72, + "title": "npmignore", + "url": "https://github.com/hapijs/shot/issues/72" + } + ], "number": 24, - "title": "Added Hoek.applyToDefaults.", - "url": "https://github.com/hapijs/shot/pull/24" - }, - { - "id": 51710101, - "labels": ["bug"], + "url": "https://github.com/hapijs/shot/milestone/24", + "version": "3.1.1" + }, + { + "date": "2016-07-28T19:11:47Z", + "id": 1572979, + "issues": [ + { + "id": 156607428, + "labels": ["test", "dependency"], + "number": 69, + "title": "Update code to 3.x.x", + "url": "https://github.com/hapijs/shot/pull/69" + }, + { + "id": 155801096, + "labels": ["test", "dependency"], + "number": 68, + "title": "Test on node 6, update lab and fix tests", + "url": "https://github.com/hapijs/shot/pull/68" + }, + { + "id": 148002092, + "labels": ["feature"], + "number": 67, + "title": "Support stream payloads", + "url": "https://github.com/hapijs/shot/pull/67" + }, + { + "id": 132475208, + "labels": ["feature"], + "number": 65, + "title": "Adds quotes around node versions in travis file", + "url": "https://github.com/hapijs/shot/pull/65" + } + ], "number": 23, - "title": "Use Hoek to assign defaults to options passed to inject. Fixes #22", - "url": "https://github.com/hapijs/shot/pull/23" - }, - { - "id": 51634785, - "labels": ["bug"], + "url": "https://github.com/hapijs/shot/milestone/23", + "version": "3.1.0" + }, + { + "date": "2016-02-09T17:13:27Z", + "id": 1479361, + "issues": [ + { + "id": 125964703, + "labels": ["bug"], + "number": 63, + "title": "Add default port to host header when no port specified. Fixes #62", + "url": "https://github.com/hapijs/shot/pull/63" + }, + { + "id": 124636692, + "labels": ["feature"], + "number": 61, + "title": "Reduce function generation", + "url": "https://github.com/hapijs/shot/pull/61" + }, + { + "id": 124321774, + "labels": ["feature", "non issue"], + "number": 60, + "title": "Refactor index.js into separate files", + "url": "https://github.com/hapijs/shot/pull/60" + } + ], "number": 22, - "title": "Use hoek to assign defaults to options passed to inject", - "url": "https://github.com/hapijs/shot/issues/22" - } - ], - "number": 8, - "url": "https://github.com/hapijs/shot/milestone/8", - "version": "1.4.1" - }, - { - "date": "2015-02-19T23:40:13Z", - "id": 780349, - "issues": [ - { - "id": 49597142, - "labels": ["feature"], + "url": "https://github.com/hapijs/shot/milestone/22", + "version": "3.0.1" + }, + { + "date": "2015-12-30T08:55:07Z", + "id": 1389543, + "issues": [ + { + "id": 124319716, + "labels": ["documentation"], + "number": 59, + "title": "Update README with ES6 styles", + "url": "https://github.com/hapijs/shot/issues/59" + }, + { + "id": 124319683, + "labels": ["documentation"], + "number": 58, + "title": "Updated README for ES6 styles closes #59", + "url": "https://github.com/hapijs/shot/pull/58" + }, + { + "id": 124224969, + "labels": ["bug", "breaking changes"], + "number": 57, + "title": "Set trailers in res.trailers rather than res.headers. Fixes #56", + "url": "https://github.com/hapijs/shot/pull/57" + }, + { + "id": 124125017, + "labels": ["bug", "breaking changes"], + "number": 56, + "title": "Trailers should be added to res.trailers, not res.headers", + "url": "https://github.com/hapijs/shot/issues/56" + } + ], + "number": 21, + "url": "https://github.com/hapijs/shot/milestone/21", + "version": "3.0.0" + }, + { + "date": "2015-11-02T18:15:08Z", + "id": 1389534, + "issues": [ + { + "id": 114652150, + "labels": ["test"], + "number": 55, + "title": "Fix broken tests", + "url": "https://github.com/hapijs/shot/issues/55" + } + ], + "number": 20, + "url": "https://github.com/hapijs/shot/milestone/20", + "version": "2.0.1" + }, + { + "date": "2015-11-02T18:10:02Z", + "id": 1384338, + "issues": [ + { + "id": 114156707, + "labels": ["breaking changes"], + "number": 52, + "title": "Node >= 4 / es2015 updates", + "url": "https://github.com/hapijs/shot/issues/52" + }, + { + "id": 114156546, + "labels": ["dependency"], + "number": 51, + "title": "Upgrade lab to 7.x.x. Closes #50", + "url": "https://github.com/hapijs/shot/pull/51" + } + ], "number": 19, - "title": "optionally accept an object as the `url`", - "url": "https://github.com/hapijs/shot/pull/19" - } - ], - "number": 7, - "url": "https://github.com/hapijs/shot/milestone/7", - "version": "1.4.0" - }, - { - "date": "2014-09-05T21:22:55Z", - "id": 740466, - "issues": [ - { - "id": 42091545, - "labels": ["dependency"], + "url": "https://github.com/hapijs/shot/milestone/19", + "version": "2.0.0" + }, + { + "date": "2015-10-05T22:31:29Z", + "id": 1339204, + "issues": [ + { + "id": 109899525, + "labels": ["feature"], + "number": 47, + "title": "Add authority option. Closes #46", + "url": "https://github.com/hapijs/shot/pull/47" + }, + { + "id": 109899388, + "labels": ["feature"], + "number": 46, + "title": "Add authority option for overriding default host header", + "url": "https://github.com/hapijs/shot/issues/46" + } + ], + "number": 17, + "url": "https://github.com/hapijs/shot/milestone/17", + "version": "1.7.0" + }, + { + "date": "2015-09-24T22:04:22Z", + "id": 1303307, + "issues": [ + { + "id": 108184479, + "labels": ["bug"], + "number": 44, + "title": "Always include a host header. Closes #43", + "url": "https://github.com/hapijs/shot/pull/44" + }, + { + "id": 108184343, + "labels": ["bug"], + "number": 43, + "title": "host header is not always set", + "url": "https://github.com/hapijs/shot/issues/43" + } + ], + "number": 16, + "url": "https://github.com/hapijs/shot/milestone/16", + "version": "1.6.1" + }, + { + "date": "2015-08-04T07:33:25Z", + "id": 1239704, + "issues": [ + { + "id": 90889609, + "labels": ["feature"], + "number": 36, + "title": "Inject request with specified the remote client IP address", + "url": "https://github.com/hapijs/shot/pull/36" + }, + { + "id": 90121398, + "labels": ["feature", "support"], + "number": 35, + "title": "Client IP address", + "url": "https://github.com/hapijs/shot/issues/35" + } + ], + "number": 15, + "url": "https://github.com/hapijs/shot/milestone/15", + "version": "1.6.0" + }, + { + "date": "2015-08-04T07:33:46Z", + "id": 1151019, + "issues": [], "number": 14, - "title": "lab 4.0", - "url": "https://github.com/hapijs/shot/issues/14" - } - ], - "number": 6, - "url": "https://github.com/hapijs/shot/milestone/6", - "version": "1.3.5" - }, - { - "date": "2014-08-02T07:42:34Z", - "id": 591490, - "issues": [ - { - "id": 34695425, - "labels": ["bug"], + "url": "https://github.com/hapijs/shot/milestone/14", + "version": "1.5.4" + }, + { + "date": "2015-06-05T11:39:29Z", + "id": 1150992, + "issues": [ + { + "id": 85512529, + "labels": ["bug"], + "number": 33, + "title": "Inconsistent assignment of rawPayload", + "url": "https://github.com/hapijs/shot/issues/33" + } + ], + "number": 13, + "url": "https://github.com/hapijs/shot/milestone/13", + "version": "1.5.3" + }, + { + "date": "2015-06-05T11:13:13Z", + "id": 1149698, + "issues": [ + { + "id": 85185994, + "labels": ["bug"], + "number": 32, + "title": "use rawPayload, convert to UTF8 after the whole buffer is available", + "url": "https://github.com/hapijs/shot/pull/32" + } + ], "number": 12, - "title": "Remove repeated assignment", - "url": "https://github.com/hapijs/shot/pull/12" - } - ], - "number": 4, - "url": "https://github.com/hapijs/shot/milestone/4", - "version": "1.3.4" - }, - { - "date": "2014-05-01T21:10:24Z", - "id": 641454, - "issues": [ - { - "id": 32305515, - "labels": ["test"], + "url": "https://github.com/hapijs/shot/milestone/12", + "version": "1.5.2" + }, + { + "date": "2015-06-04T15:41:11Z", + "id": 1067652, + "issues": [ + { + "id": 79384563, + "labels": ["bug"], + "number": 30, + "title": "fix #7", + "url": "https://github.com/hapijs/shot/pull/30" + }, + { + "id": 16331603, + "labels": ["bug"], + "number": 7, + "title": "deprecated encoding 'binary' is used", + "url": "https://github.com/hapijs/shot/issues/7" + } + ], "number": 11, - "title": "Bring coverage back to 100%", - "url": "https://github.com/hapijs/shot/issues/11" - } - ], - "number": 5, - "url": "https://github.com/hapijs/shot/milestone/5", - "version": "1.3.3" - }, - { - "date": "2014-03-08T19:47:41Z", - "id": 580362, - "issues": [ - { - "id": 29028483, - "labels": ["test"], + "url": "https://github.com/hapijs/shot/milestone/11", + "version": "1.5.1" + }, + { + "date": "2015-04-14T20:32:04Z", + "id": 1067638, + "issues": [ + { + "id": 63228901, + "labels": ["feature"], + "number": 28, + "title": "Add 'content-length' header matching payload length if none set", + "url": "https://github.com/hapijs/shot/pull/28" + } + ], "number": 10, - "title": "Bring coverage back to 100% after lab fix", - "url": "https://github.com/hapijs/shot/issues/10" - } - ], - "number": 3, - "url": "https://github.com/hapijs/shot/milestone/3", - "version": "1.3.2" - }, - { - "date": "2014-02-25T21:33:36Z", - "id": 580359, - "issues": [ - { - "id": 28286450, - "labels": ["feature"], + "url": "https://github.com/hapijs/shot/milestone/10", + "version": "1.5.0" + }, + { + "date": "2015-04-14T20:25:17Z", + "id": 987627, + "issues": [ + { + "id": 59641924, + "labels": ["test"], + "number": 27, + "title": "add -L to test and test-cov", + "url": "https://github.com/hapijs/shot/pull/27" + } + ], "number": 9, - "title": "Support node 0.11", - "url": "https://github.com/hapijs/shot/issues/9" - } - ], - "number": 2, - "url": "https://github.com/hapijs/shot/milestone/2", - "version": "1.3.1" - }, - { - "date": "2013-08-28T20:16:14Z", - "id": 413973, - "issues": [], - "number": 1, - "url": "https://github.com/hapijs/shot/milestone/1", - "version": "1.0.0" - } + "url": "https://github.com/hapijs/shot/milestone/9", + "version": "1.4.2" + }, + { + "date": "2015-02-19T23:40:14Z", + "id": 987608, + "issues": [ + { + "id": 53795024, + "labels": ["bug"], + "number": 24, + "title": "Added Hoek.applyToDefaults.", + "url": "https://github.com/hapijs/shot/pull/24" + }, + { + "id": 51710101, + "labels": ["bug"], + "number": 23, + "title": "Use Hoek to assign defaults to options passed to inject. Fixes #22", + "url": "https://github.com/hapijs/shot/pull/23" + }, + { + "id": 51634785, + "labels": ["bug"], + "number": 22, + "title": "Use hoek to assign defaults to options passed to inject", + "url": "https://github.com/hapijs/shot/issues/22" + } + ], + "number": 8, + "url": "https://github.com/hapijs/shot/milestone/8", + "version": "1.4.1" + }, + { + "date": "2015-02-19T23:40:13Z", + "id": 780349, + "issues": [ + { + "id": 49597142, + "labels": ["feature"], + "number": 19, + "title": "optionally accept an object as the `url`", + "url": "https://github.com/hapijs/shot/pull/19" + } + ], + "number": 7, + "url": "https://github.com/hapijs/shot/milestone/7", + "version": "1.4.0" + }, + { + "date": "2014-09-05T21:22:55Z", + "id": 740466, + "issues": [ + { + "id": 42091545, + "labels": ["dependency"], + "number": 14, + "title": "lab 4.0", + "url": "https://github.com/hapijs/shot/issues/14" + } + ], + "number": 6, + "url": "https://github.com/hapijs/shot/milestone/6", + "version": "1.3.5" + }, + { + "date": "2014-08-02T07:42:34Z", + "id": 591490, + "issues": [ + { + "id": 34695425, + "labels": ["bug"], + "number": 12, + "title": "Remove repeated assignment", + "url": "https://github.com/hapijs/shot/pull/12" + } + ], + "number": 4, + "url": "https://github.com/hapijs/shot/milestone/4", + "version": "1.3.4" + }, + { + "date": "2014-05-01T21:10:24Z", + "id": 641454, + "issues": [ + { + "id": 32305515, + "labels": ["test"], + "number": 11, + "title": "Bring coverage back to 100%", + "url": "https://github.com/hapijs/shot/issues/11" + } + ], + "number": 5, + "url": "https://github.com/hapijs/shot/milestone/5", + "version": "1.3.3" + }, + { + "date": "2014-03-08T19:47:41Z", + "id": 580362, + "issues": [ + { + "id": 29028483, + "labels": ["test"], + "number": 10, + "title": "Bring coverage back to 100% after lab fix", + "url": "https://github.com/hapijs/shot/issues/10" + } + ], + "number": 3, + "url": "https://github.com/hapijs/shot/milestone/3", + "version": "1.3.2" + }, + { + "date": "2014-02-25T21:33:36Z", + "id": 580359, + "issues": [ + { + "id": 28286450, + "labels": ["feature"], + "number": 9, + "title": "Support node 0.11", + "url": "https://github.com/hapijs/shot/issues/9" + } + ], + "number": 2, + "url": "https://github.com/hapijs/shot/milestone/2", + "version": "1.3.1" + }, + { + "date": "2013-08-28T20:16:14Z", + "id": 413973, + "issues": [], + "number": 1, + "url": "https://github.com/hapijs/shot/milestone/1", + "version": "1.0.0" + } ] diff --git a/generated/modules/shot/info.json b/generated/modules/shot/info.json index e3a4852e..9d66b2ab 100644 --- a/generated/modules/shot/info.json +++ b/generated/modules/shot/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 40, - "isPlugin": false, - "link": "https://github.com/hapijs/shot", - "name": "shot", - "package": "@hapi/shot", - "slogan": "Injects a fake HTTP request/response into your node server logic.", - "sloganHtml": "Injects a fake HTTP request/response into your node server logic.", - "stars": 196, - "updated": "2025-08-13T22:28:35Z", - "versions": [ - { - "branch": "v6.0.2", - "license": "BSD", - "name": "6.0.2", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.2"], - "latestVersion": "6.x.x" + "api": true, + "forks": 40, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/shot", + "name": "shot", + "package": "@hapi/shot", + "slogan": "Injects a fake HTTP request/response into your node server logic.", + "sloganHtml": "Injects a fake HTTP request/response into your node server logic.", + "stars": 196, + "updated": "2026-05-27T14:43:06Z", + "versions": [ + { + "branch": "v6.0.3", + "license": "BSD", + "name": "6.0.3", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.3"] } diff --git a/generated/modules/somever/changelog.json b/generated/modules/somever/changelog.json index 186c33d0..e5ec9975 100644 --- a/generated/modules/somever/changelog.json +++ b/generated/modules/somever/changelog.json @@ -1,160 +1,160 @@ [ - { - "date": "2023-02-11T20:26:26Z", - "id": 8182738, - "issues": [ - { - "id": 1551778742, - "labels": ["dependency"], - "number": 23, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/somever/pull/23" - } - ], - "number": 12, - "url": "https://github.com/hapijs/somever/milestone/12", - "version": "4.1.1" - }, - { - "date": "2023-02-11T20:26:24Z", - "id": 8182737, - "issues": [ - { - "id": 1300174333, - "labels": ["feature"], - "number": 22, - "title": "Support includePrerelease option to permit prereleases when matching ranges", - "url": "https://github.com/hapijs/somever/pull/22" - } - ], - "number": 11, - "url": "https://github.com/hapijs/somever/milestone/11", - "version": "4.1.0" - }, - { - "date": "2022-07-11T04:05:02Z", - "id": 7936949, - "issues": [ - { - "id": 1223561292, - "labels": ["breaking changes", "dependency"], - "number": 21, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/somever/pull/21" - } - ], - "number": 9, - "url": "https://github.com/hapijs/somever/milestone/9", - "version": "4.0.0" - }, - { - "date": "2021-05-05T18:32:18Z", - "id": 4987627, - "issues": [ - { - "id": 876336083, - "labels": ["bug"], - "number": 17, - "title": "fix: use pre-release number for comparison", - "url": "https://github.com/hapijs/somever/pull/17" - }, - { - "id": 709596466, - "labels": [], - "number": 15, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/somever/pull/15" - } - ], - "number": 7, - "url": "https://github.com/hapijs/somever/milestone/7", - "version": "3.0.1" - }, - { - "date": "2020-01-09T00:16:23Z", - "id": 4987626, - "issues": [ - { - "id": 511247347, - "labels": ["feature"], - "number": 8, - "title": "Expose Somever.compare()", - "url": "https://github.com/hapijs/somever/pull/8" - }, - { - "id": 511246754, - "labels": ["feature"], + { + "date": "2023-02-11T20:26:26Z", + "id": 8182738, + "issues": [ + { + "id": 1551778742, + "labels": ["dependency"], + "number": 23, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/somever/pull/23" + } + ], + "number": 12, + "url": "https://github.com/hapijs/somever/milestone/12", + "version": "4.1.1" + }, + { + "date": "2023-02-11T20:26:24Z", + "id": 8182737, + "issues": [ + { + "id": 1300174333, + "labels": ["feature"], + "number": 22, + "title": "Support includePrerelease option to permit prereleases when matching ranges", + "url": "https://github.com/hapijs/somever/pull/22" + } + ], + "number": 11, + "url": "https://github.com/hapijs/somever/milestone/11", + "version": "4.1.0" + }, + { + "date": "2022-07-11T04:05:02Z", + "id": 7936949, + "issues": [ + { + "id": 1223561292, + "labels": ["breaking changes", "dependency"], + "number": 21, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/somever/pull/21" + } + ], + "number": 9, + "url": "https://github.com/hapijs/somever/milestone/9", + "version": "4.0.0" + }, + { + "date": "2021-05-05T18:32:18Z", + "id": 4987627, + "issues": [ + { + "id": 876336083, + "labels": ["bug"], + "number": 17, + "title": "fix: use pre-release number for comparison", + "url": "https://github.com/hapijs/somever/pull/17" + }, + { + "id": 709596466, + "labels": [], + "number": 15, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/somever/pull/15" + } + ], "number": 7, - "title": "Expose a public Somever.compare()", - "url": "https://github.com/hapijs/somever/issues/7" - } - ], - "number": 6, - "url": "https://github.com/hapijs/somever/milestone/6", - "version": "3.0.0" - }, - { - "date": "2020-07-17T07:49:35Z", - "id": 4574325, - "issues": [], - "number": 5, - "url": "https://github.com/hapijs/somever/milestone/5", - "version": "2.1.2" - }, - { - "date": "2019-08-15T01:03:51Z", - "id": 4192173, - "issues": [ - { - "id": 480897946, - "labels": ["dependency"], + "url": "https://github.com/hapijs/somever/milestone/7", + "version": "3.0.1" + }, + { + "date": "2020-01-09T00:16:23Z", + "id": 4987626, + "issues": [ + { + "id": 511247347, + "labels": ["feature"], + "number": 8, + "title": "Expose Somever.compare()", + "url": "https://github.com/hapijs/somever/pull/8" + }, + { + "id": 511246754, + "labels": ["feature"], + "number": 7, + "title": "Expose a public Somever.compare()", + "url": "https://github.com/hapijs/somever/issues/7" + } + ], + "number": 6, + "url": "https://github.com/hapijs/somever/milestone/6", + "version": "3.0.0" + }, + { + "date": "2020-07-17T07:49:35Z", + "id": 4574325, + "issues": [], "number": 5, - "title": "Update deps", - "url": "https://github.com/hapijs/somever/issues/5" - } - ], - "number": 4, - "url": "https://github.com/hapijs/somever/milestone/4", - "version": "2.1.1" - }, - { - "date": "2019-04-02T06:06:06Z", - "id": 4170453, - "issues": [ - { - "id": 428038703, - "labels": ["dependency"], + "url": "https://github.com/hapijs/somever/milestone/5", + "version": "2.1.2" + }, + { + "date": "2019-08-15T01:03:51Z", + "id": 4192173, + "issues": [ + { + "id": 480897946, + "labels": ["dependency"], + "number": 5, + "title": "Update deps", + "url": "https://github.com/hapijs/somever/issues/5" + } + ], + "number": 4, + "url": "https://github.com/hapijs/somever/milestone/4", + "version": "2.1.1" + }, + { + "date": "2019-04-02T06:06:06Z", + "id": 4170453, + "issues": [ + { + "id": 428038703, + "labels": ["dependency"], + "number": 3, + "title": "Change module namespace", + "url": "https://github.com/hapijs/somever/issues/3" + } + ], "number": 3, - "title": "Change module namespace", - "url": "https://github.com/hapijs/somever/issues/3" - } - ], - "number": 3, - "url": "https://github.com/hapijs/somever/milestone/3", - "version": "2.1.0" - }, - { - "date": "2020-07-17T07:49:37Z", - "id": 4170452, - "issues": [], - "number": 2, - "url": "https://github.com/hapijs/somever/milestone/2", - "version": "1.1.1" - }, - { - "date": "2019-03-25T16:35:59Z", - "id": 4170447, - "issues": [ - { - "id": 424999315, - "labels": ["lts"], + "url": "https://github.com/hapijs/somever/milestone/3", + "version": "2.1.0" + }, + { + "date": "2020-07-17T07:49:37Z", + "id": 4170452, + "issues": [], "number": 2, - "title": "Commercial version of v1 branch", - "url": "https://github.com/hapijs/somever/issues/2" - } - ], - "number": 1, - "url": "https://github.com/hapijs/somever/milestone/1", - "version": "1.1.0" - } + "url": "https://github.com/hapijs/somever/milestone/2", + "version": "1.1.1" + }, + { + "date": "2019-03-25T16:35:59Z", + "id": 4170447, + "issues": [ + { + "id": 424999315, + "labels": ["lts"], + "number": 2, + "title": "Commercial version of v1 branch", + "url": "https://github.com/hapijs/somever/issues/2" + } + ], + "number": 1, + "url": "https://github.com/hapijs/somever/milestone/1", + "version": "1.1.0" + } ] diff --git a/generated/modules/somever/info.json b/generated/modules/somever/info.json index ce6d0817..028b52b4 100644 --- a/generated/modules/somever/info.json +++ b/generated/modules/somever/info.json @@ -1,22 +1,22 @@ { - "api": false, - "forks": 10, - "isPlugin": false, - "link": "https://github.com/hapijs/somever", - "name": "somever", - "package": "@hapi/somever", - "slogan": "Semantic versioning rules parser, compatible with version ranges used in package.json files and the canonical [semver](https://www.npmjs.com/package/semver) module.", - "sloganHtml": "Semantic versioning rules parser, compatible with version ranges used in package.json files and the canonical semver module.", - "stars": 0, - "updated": "2024-10-23T14:45:10Z", - "versions": [ - { - "branch": "v4.1.1", - "license": "BSD", - "name": "4.1.1", - "node": ">= 16" - } - ], - "versionsArray": ["4.1.1"], - "latestVersion": "4.x.x" + "api": false, + "forks": 10, + "isPlugin": false, + "latestVersion": "4.x.x", + "link": "https://github.com/hapijs/somever", + "name": "somever", + "package": "@hapi/somever", + "slogan": "Semantic versioning rules parser, compatible with version ranges used in package.json files and the canonical [semver](https://www.npmjs.com/package/semver) module.", + "sloganHtml": "Semantic versioning rules parser, compatible with version ranges used in package.json files and the canonical semver module.", + "stars": 0, + "updated": "2024-10-23T14:45:10Z", + "versions": [ + { + "branch": "v4.1.1", + "license": "BSD", + "name": "4.1.1", + "node": ">= 16" + } + ], + "versionsArray": ["4.1.1"] } diff --git a/generated/modules/sse/changelog.json b/generated/modules/sse/changelog.json index 57ec1ac6..b749bf73 100644 --- a/generated/modules/sse/changelog.json +++ b/generated/modules/sse/changelog.json @@ -1,18 +1,34 @@ [ - { - "date": "2026-04-07T22:13:58Z", - "id": 15452440, - "issues": [ - { - "id": 4220234917, - "labels": ["release notes"], - "number": 3, - "title": "Initial release", - "url": "https://github.com/hapijs/sse/issues/3" - } - ], - "number": 1, - "url": "https://github.com/hapijs/sse/milestone/1", - "version": "1.0.0" - } + { + "date": "2026-05-20T15:45:22Z", + "id": 16011977, + "issues": [ + { + "id": 4329144012, + "labels": ["feature"], + "number": 5, + "title": "feat: add refuse() calculator and session.complete()", + "url": "https://github.com/hapijs/sse/pull/5" + } + ], + "number": 2, + "url": "https://github.com/hapijs/sse/milestone/2", + "version": "1.1.0" + }, + { + "date": "2026-04-07T22:13:58Z", + "id": 15452440, + "issues": [ + { + "id": 4220234917, + "labels": ["release notes"], + "number": 3, + "title": "Initial release", + "url": "https://github.com/hapijs/sse/issues/3" + } + ], + "number": 1, + "url": "https://github.com/hapijs/sse/milestone/1", + "version": "1.0.0" + } ] diff --git a/generated/modules/sse/info.json b/generated/modules/sse/info.json index e8561d7b..c6f35417 100644 --- a/generated/modules/sse/info.json +++ b/generated/modules/sse/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 0, - "isPlugin": true, - "link": "https://github.com/hapijs/sse", - "name": "sse", - "package": "@hapi/sse", - "slogan": "Server-Sent Events plugin for hapi.", - "sloganHtml": "Server-Sent Events plugin for hapi.", - "stars": 0, - "updated": "2026-04-07T18:44:00Z", - "versions": [ - { - "branch": "v1.0.0", - "license": "BSD", - "name": "1.0.0", - "node": ">= 22" - } - ], - "versionsArray": ["1.0.0"], - "latestVersion": "1.x.x" + "api": true, + "forks": 0, + "isPlugin": true, + "latestVersion": "1.x.x", + "link": "https://github.com/hapijs/sse", + "name": "sse", + "package": "@hapi/sse", + "slogan": "Server-Sent Events plugin for hapi.", + "sloganHtml": "Server-Sent Events plugin for hapi.", + "stars": 0, + "updated": "2026-05-20T15:44:33Z", + "versions": [ + { + "branch": "v1.1.0", + "license": "BSD", + "name": "1.1.0", + "node": ">= 22" + } + ], + "versionsArray": ["1.1.0"] } diff --git a/generated/modules/statehood/changelog.json b/generated/modules/statehood/changelog.json index 9c2a4178..60264c42 100644 --- a/generated/modules/statehood/changelog.json +++ b/generated/modules/statehood/changelog.json @@ -1,750 +1,750 @@ [ - { - "date": "2025-11-06T09:39:52Z", - "id": 14034370, - "issues": [ - { - "id": 3567578349, - "labels": ["bug"], - "number": 89, - "title": "chore: optimize regexps", - "url": "https://github.com/hapijs/statehood/pull/89" - } - ], - "number": 45, - "url": "https://github.com/hapijs/statehood/milestone/45", - "version": "8.2.1" - }, - { - "date": "2025-02-28T23:50:15Z", - "id": 12416835, - "issues": [ - { - "id": 2134672705, - "labels": ["feature"], - "number": 88, - "title": "Add support to cookie partition", - "url": "https://github.com/hapijs/statehood/pull/88" - } - ], - "number": 44, - "url": "https://github.com/hapijs/statehood/milestone/44", - "version": "8.2.0" - }, - { - "date": "2023-04-24T21:49:37Z", - "id": 9320281, - "issues": [ - { - "id": 1681273083, - "labels": ["types"], - "number": 86, - "title": "fix: missing types on exclude", - "url": "https://github.com/hapijs/statehood/pull/86" - } - ], - "number": 43, - "url": "https://github.com/hapijs/statehood/milestone/43", - "version": "8.1.1" - }, - { - "date": "2023-04-24T21:49:35Z", - "id": 9320036, - "issues": [ - { - "id": 1648025513, - "labels": ["types"], - "number": 85, - "title": "feat: add typescript types", - "url": "https://github.com/hapijs/statehood/pull/85" - } - ], - "number": 42, - "url": "https://github.com/hapijs/statehood/milestone/42", - "version": "8.1.0" - }, - { - "date": "2023-02-11T19:06:55Z", - "id": 7956706, - "issues": [ - { - "id": 1551780082, - "labels": ["dependency"], - "number": 84, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/statehood/pull/84" - } - ], - "number": 41, - "url": "https://github.com/hapijs/statehood/milestone/41", - "version": "8.0.1" - }, - { - "date": "2022-05-23T04:21:52Z", - "id": 7956705, - "issues": [ - { - "id": 1229163252, - "labels": ["dependency", "breaking changes"], - "number": 82, - "title": "Support node v18, drop node v12", - "url": "https://github.com/hapijs/statehood/pull/82" - } - ], - "number": 40, - "url": "https://github.com/hapijs/statehood/milestone/40", - "version": "8.0.0" - }, - { - "date": "2022-04-20T02:52:24Z", - "id": 5921250, - "issues": [ - { - "id": 1206568476, - "labels": ["bug", "security"], - "number": 81, - "title": "Parse cookie pairs without a regex", - "url": "https://github.com/hapijs/statehood/pull/81" - }, - { - "id": 709596697, - "labels": [], - "number": 77, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/statehood/pull/77" - } - ], - "number": 38, - "url": "https://github.com/hapijs/statehood/milestone/38", - "version": "7.0.4" - }, - { - "date": "2020-09-26T19:29:40Z", - "id": 5101021, - "issues": [], - "number": 37, - "url": "https://github.com/hapijs/statehood/milestone/37", - "version": "7.0.3" - }, - { - "date": "2020-02-13T08:43:03Z", - "id": 4987899, - "issues": [ - { - "id": 564524089, - "labels": ["bug", "security"], - "number": 71, - "title": "Explicitly block __proto__ cookie name", - "url": "https://github.com/hapijs/statehood/issues/71" - } - ], - "number": 36, - "url": "https://github.com/hapijs/statehood/milestone/36", - "version": "7.0.2" - }, - { - "date": "2020-01-09T00:23:17Z", - "id": 4960420, - "issues": [ - { - "id": 547177742, - "labels": ["dependency"], - "number": 69, - "title": "Update deps", - "url": "https://github.com/hapijs/statehood/issues/69" - } - ], - "number": 35, - "url": "https://github.com/hapijs/statehood/milestone/35", - "version": "7.0.1" - }, - { - "date": "2019-12-28T05:08:28Z", - "id": 4655580, - "issues": [ - { - "id": 543064670, - "labels": ["dependency", "breaking changes"], - "number": 67, - "title": "Drop node 10", - "url": "https://github.com/hapijs/statehood/issues/67" - }, - { - "id": 543063143, - "labels": ["dependency", "breaking changes"], - "number": 66, - "title": "Drop node 8", - "url": "https://github.com/hapijs/statehood/issues/66" - }, - { - "id": 543063083, - "labels": ["feature"], - "number": 65, - "title": "Support custom properties via function", - "url": "https://github.com/hapijs/statehood/issues/65" - }, - { - "id": 543060718, - "labels": ["feature"], - "number": 64, - "title": "Support SameSite=None", - "url": "https://github.com/hapijs/statehood/issues/64" - } - ], - "number": 33, - "url": "https://github.com/hapijs/statehood/milestone/33", - "version": "7.0.0" - }, - { - "date": "2019-09-12T22:31:29Z", - "id": 4574323, - "issues": [ - { - "id": 493058837, - "labels": ["dependency"], - "number": 62, - "title": "Update joi", - "url": "https://github.com/hapijs/statehood/issues/62" - } - ], - "number": 32, - "url": "https://github.com/hapijs/statehood/milestone/32", - "version": "6.1.2" - }, - { - "date": "2019-08-15T01:02:09Z", - "id": 4192246, - "issues": [ - { - "id": 480897339, - "labels": ["dependency"], - "number": 61, - "title": "Update deps", - "url": "https://github.com/hapijs/statehood/issues/61" - } - ], - "number": 31, - "url": "https://github.com/hapijs/statehood/milestone/31", - "version": "6.1.1" - }, - { - "date": "2019-04-02T06:42:28Z", - "id": 4019172, - "issues": [ - { - "id": 428049004, - "labels": ["dependency"], - "number": 59, - "title": "Change module namespace", - "url": "https://github.com/hapijs/statehood/issues/59" - } - ], - "number": 28, - "url": "https://github.com/hapijs/statehood/milestone/28", - "version": "6.1.0" - }, - { - "date": "2019-01-31T19:46:46Z", - "id": 3792291, - "issues": [ - { - "id": 405123438, - "labels": ["bug", "security"], - "number": 55, - "title": "Protect against JSON.parse() prototype poisoning", - "url": "https://github.com/hapijs/statehood/issues/55" - } - ], - "number": 26, - "url": "https://github.com/hapijs/statehood/milestone/26", - "version": "6.0.9" - }, - { - "date": "2018-11-03T00:38:01Z", - "id": 3788925, - "issues": [ - { - "id": 377003288, - "labels": ["non issue"], - "number": 47, - "title": "Remove engines", - "url": "https://github.com/hapijs/statehood/issues/47" - } - ], - "number": 25, - "url": "https://github.com/hapijs/statehood/milestone/25", - "version": "6.0.8" - }, - { - "date": "2018-11-01T19:21:36Z", - "id": 3232153, - "issues": [ - { - "id": 376533626, - "labels": ["dependency"], - "number": 46, - "title": "Update deps", - "url": "https://github.com/hapijs/statehood/issues/46" - } - ], - "number": 23, - "url": "https://github.com/hapijs/statehood/milestone/23", - "version": "6.0.7" - }, - { - "date": "2018-03-31T00:10:43Z", - "id": 2886915, - "issues": [ - { - "id": 307416653, - "labels": ["bug"], + { + "date": "2025-11-06T09:39:52Z", + "id": 14034370, + "issues": [ + { + "id": 3567578349, + "labels": ["bug"], + "number": 89, + "title": "chore: optimize regexps", + "url": "https://github.com/hapijs/statehood/pull/89" + } + ], + "number": 45, + "url": "https://github.com/hapijs/statehood/milestone/45", + "version": "8.2.1" + }, + { + "date": "2025-02-28T23:50:15Z", + "id": 12416835, + "issues": [ + { + "id": 2134672705, + "labels": ["feature"], + "number": 88, + "title": "Add support to cookie partition", + "url": "https://github.com/hapijs/statehood/pull/88" + } + ], + "number": 44, + "url": "https://github.com/hapijs/statehood/milestone/44", + "version": "8.2.0" + }, + { + "date": "2023-04-24T21:49:37Z", + "id": 9320281, + "issues": [ + { + "id": 1681273083, + "labels": ["types"], + "number": 86, + "title": "fix: missing types on exclude", + "url": "https://github.com/hapijs/statehood/pull/86" + } + ], + "number": 43, + "url": "https://github.com/hapijs/statehood/milestone/43", + "version": "8.1.1" + }, + { + "date": "2023-04-24T21:49:35Z", + "id": 9320036, + "issues": [ + { + "id": 1648025513, + "labels": ["types"], + "number": 85, + "title": "feat: add typescript types", + "url": "https://github.com/hapijs/statehood/pull/85" + } + ], + "number": 42, + "url": "https://github.com/hapijs/statehood/milestone/42", + "version": "8.1.0" + }, + { + "date": "2023-02-11T19:06:55Z", + "id": 7956706, + "issues": [ + { + "id": 1551780082, + "labels": ["dependency"], + "number": 84, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/statehood/pull/84" + } + ], "number": 41, - "title": "Fix a typo", - "url": "https://github.com/hapijs/statehood/pull/41" - }, - { - "id": 307172912, - "labels": ["bug"], + "url": "https://github.com/hapijs/statehood/milestone/41", + "version": "8.0.1" + }, + { + "date": "2022-05-23T04:21:52Z", + "id": 7956705, + "issues": [ + { + "id": 1229163252, + "labels": ["dependency", "breaking changes"], + "number": 82, + "title": "Support node v18, drop node v12", + "url": "https://github.com/hapijs/statehood/pull/82" + } + ], "number": 40, - "title": "Remove new Buffer usage", - "url": "https://github.com/hapijs/statehood/pull/40" - } - ], - "number": 22, - "url": "https://github.com/hapijs/statehood/milestone/22", - "version": "6.0.6" - }, - { - "date": "2018-03-31T00:12:06Z", - "id": 3232154, - "issues": [ - { - "id": 271116422, - "labels": ["bug"], + "url": "https://github.com/hapijs/statehood/milestone/40", + "version": "8.0.0" + }, + { + "date": "2022-04-20T02:52:24Z", + "id": 5921250, + "issues": [ + { + "id": 1206568476, + "labels": ["bug", "security"], + "number": 81, + "title": "Parse cookie pairs without a regex", + "url": "https://github.com/hapijs/statehood/pull/81" + }, + { + "id": 709596697, + "labels": [], + "number": 77, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/statehood/pull/77" + } + ], "number": 38, - "title": "Use Cryptiles.fixedTimeComparison()", - "url": "https://github.com/hapijs/statehood/issues/38" - } - ], - "number": 24, - "url": "https://github.com/hapijs/statehood/milestone/24", - "version": "6.0.5" - }, - { - "date": "2017-11-03T20:25:01Z", - "id": 2885377, - "issues": [ - { - "id": 271108347, - "labels": ["feature"], + "url": "https://github.com/hapijs/statehood/milestone/38", + "version": "7.0.4" + }, + { + "date": "2020-09-26T19:29:40Z", + "id": 5101021, + "issues": [], "number": 37, - "title": "Add bounce", - "url": "https://github.com/hapijs/statehood/issues/37" - } - ], - "number": 21, - "url": "https://github.com/hapijs/statehood/milestone/21", - "version": "6.0.4" - }, - { - "date": "2017-11-03T08:42:25Z", - "id": 2856588, - "issues": [ - { - "id": 270908232, - "labels": ["dependency"], + "url": "https://github.com/hapijs/statehood/milestone/37", + "version": "7.0.3" + }, + { + "date": "2020-02-13T08:43:03Z", + "id": 4987899, + "issues": [ + { + "id": 564524089, + "labels": ["bug", "security"], + "number": 71, + "title": "Explicitly block __proto__ cookie name", + "url": "https://github.com/hapijs/statehood/issues/71" + } + ], "number": 36, - "title": "Update dep", - "url": "https://github.com/hapijs/statehood/issues/36" - } - ], - "number": 20, - "url": "https://github.com/hapijs/statehood/milestone/20", - "version": "6.0.3" - }, - { - "date": "2017-10-22T08:39:17Z", - "id": 2799414, - "issues": [ - { - "id": 267446941, - "labels": ["dependency"], + "url": "https://github.com/hapijs/statehood/milestone/36", + "version": "7.0.2" + }, + { + "date": "2020-01-09T00:23:17Z", + "id": 4960420, + "issues": [ + { + "id": 547177742, + "labels": ["dependency"], + "number": 69, + "title": "Update deps", + "url": "https://github.com/hapijs/statehood/issues/69" + } + ], "number": 35, - "title": "Update joi", - "url": "https://github.com/hapijs/statehood/issues/35" - } - ], - "number": 19, - "url": "https://github.com/hapijs/statehood/milestone/19", - "version": "6.0.2" - }, - { - "date": "2017-09-28T06:18:50Z", - "id": 2788078, - "issues": [ - { - "id": 261204726, - "labels": ["dependency"], - "number": 34, - "title": "Update deps", - "url": "https://github.com/hapijs/statehood/issues/34" - } - ], - "number": 18, - "url": "https://github.com/hapijs/statehood/milestone/18", - "version": "6.0.1" - }, - { - "date": "2017-09-25T05:54:06Z", - "id": 2651947, - "issues": [ - { - "id": 260128944, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/statehood/milestone/35", + "version": "7.0.1" + }, + { + "date": "2019-12-28T05:08:28Z", + "id": 4655580, + "issues": [ + { + "id": 543064670, + "labels": ["dependency", "breaking changes"], + "number": 67, + "title": "Drop node 10", + "url": "https://github.com/hapijs/statehood/issues/67" + }, + { + "id": 543063143, + "labels": ["dependency", "breaking changes"], + "number": 66, + "title": "Drop node 8", + "url": "https://github.com/hapijs/statehood/issues/66" + }, + { + "id": 543063083, + "labels": ["feature"], + "number": 65, + "title": "Support custom properties via function", + "url": "https://github.com/hapijs/statehood/issues/65" + }, + { + "id": 543060718, + "labels": ["feature"], + "number": 64, + "title": "Support SameSite=None", + "url": "https://github.com/hapijs/statehood/issues/64" + } + ], "number": 33, - "title": "Migrate to async interface", - "url": "https://github.com/hapijs/statehood/issues/33" - } - ], - "number": 17, - "url": "https://github.com/hapijs/statehood/milestone/17", - "version": "6.0.0" - }, - { - "date": "2019-03-25T17:44:33Z", - "id": 4170598, - "issues": [ - { - "id": 425007163, - "labels": ["lts"], - "number": 58, - "title": "Commercial version of v5 branch", - "url": "https://github.com/hapijs/statehood/issues/58" - } - ], - "number": 29, - "url": "https://github.com/hapijs/statehood/milestone/29", - "version": "5.1.0" - }, - { - "date": "2019-01-31T19:45:49Z", - "id": 4017367, - "issues": [ - { - "id": 405123803, - "labels": ["bug", "security", "lts"], - "number": 56, - "title": "Protect against JSON.parse() prototype poisoning", - "url": "https://github.com/hapijs/statehood/issues/56" - } - ], - "number": 27, - "url": "https://github.com/hapijs/statehood/milestone/27", - "version": "5.0.4" - }, - { - "date": "2017-07-20T08:32:47Z", - "id": 2546590, - "issues": [ - { - "id": 244283653, - "labels": ["bug"], + "url": "https://github.com/hapijs/statehood/milestone/33", + "version": "7.0.0" + }, + { + "date": "2019-09-12T22:31:29Z", + "id": 4574323, + "issues": [ + { + "id": 493058837, + "labels": ["dependency"], + "number": 62, + "title": "Update joi", + "url": "https://github.com/hapijs/statehood/issues/62" + } + ], "number": 32, - "title": "Ignore partial header structure errors when ignoreErrors", - "url": "https://github.com/hapijs/statehood/issues/32" - } - ], - "number": 16, - "url": "https://github.com/hapijs/statehood/milestone/16", - "version": "5.0.3" - }, - { - "date": "2017-05-27T22:27:43Z", - "id": 2162520, - "issues": [ - { - "id": 231832046, - "labels": ["dependency"], + "url": "https://github.com/hapijs/statehood/milestone/32", + "version": "6.1.2" + }, + { + "date": "2019-08-15T01:02:09Z", + "id": 4192246, + "issues": [ + { + "id": 480897339, + "labels": ["dependency"], + "number": 61, + "title": "Update deps", + "url": "https://github.com/hapijs/statehood/issues/61" + } + ], "number": 31, - "title": "Update deps.", - "url": "https://github.com/hapijs/statehood/issues/31" - } - ], - "number": 15, - "url": "https://github.com/hapijs/statehood/milestone/15", - "version": "5.0.2" - }, - { - "date": "2016-11-29T00:19:07Z", - "id": 1966598, - "issues": [ - { - "id": 187208869, - "labels": ["bug"], - "number": 29, - "title": "Fix parse when iron is used with invalid and valid values", - "url": "https://github.com/hapijs/statehood/pull/29" - }, - { - "id": 183162384, - "labels": ["bug"], + "url": "https://github.com/hapijs/statehood/milestone/31", + "version": "6.1.1" + }, + { + "date": "2019-04-02T06:42:28Z", + "id": 4019172, + "issues": [ + { + "id": 428049004, + "labels": ["dependency"], + "number": 59, + "title": "Change module namespace", + "url": "https://github.com/hapijs/statehood/issues/59" + } + ], "number": 28, - "title": "Cookies with the same name are ignored if only one is invalid", - "url": "https://github.com/hapijs/statehood/issues/28" - } - ], - "number": 14, - "url": "https://github.com/hapijs/statehood/milestone/14", - "version": "5.0.1" - }, - { - "date": "2016-08-26T20:39:23Z", - "id": 1964549, - "issues": [ - { - "id": 173538509, - "labels": ["security", "breaking changes"], + "url": "https://github.com/hapijs/statehood/milestone/28", + "version": "6.1.0" + }, + { + "date": "2019-01-31T19:46:46Z", + "id": 3792291, + "issues": [ + { + "id": 405123438, + "labels": ["bug", "security"], + "number": 55, + "title": "Protect against JSON.parse() prototype poisoning", + "url": "https://github.com/hapijs/statehood/issues/55" + } + ], "number": 26, - "title": "Change Secure, HttpOnly, and SameSite to true by default", - "url": "https://github.com/hapijs/statehood/issues/26" - } - ], - "number": 13, - "url": "https://github.com/hapijs/statehood/milestone/13", - "version": "5.0.0" - }, - { - "date": "2016-08-26T08:22:20Z", - "id": 1910438, - "issues": [ - { - "id": 157330951, - "labels": ["bug"], - "number": 23, - "title": "Assert when input is not a string", - "url": "https://github.com/hapijs/statehood/pull/23" - }, - { - "id": 156900491, - "labels": ["feature"], - "number": 21, - "title": "Support SameSite attribute", - "url": "https://github.com/hapijs/statehood/issues/21" - }, - { - "id": 144061731, - "labels": ["bug", "security"], - "number": 17, - "title": "Assert when input is not a string", - "url": "https://github.com/hapijs/statehood/issues/17" - } - ], - "number": 12, - "url": "https://github.com/hapijs/statehood/milestone/12", - "version": "4.1.0" - }, - { - "date": "2016-07-28T20:14:07Z", - "id": 1910288, - "issues": [ - { - "id": 168185653, - "labels": ["dependency"], + "url": "https://github.com/hapijs/statehood/milestone/26", + "version": "6.0.9" + }, + { + "date": "2018-11-03T00:38:01Z", + "id": 3788925, + "issues": [ + { + "id": 377003288, + "labels": ["non issue"], + "number": 47, + "title": "Remove engines", + "url": "https://github.com/hapijs/statehood/issues/47" + } + ], "number": 25, - "title": "Update deps", - "url": "https://github.com/hapijs/statehood/issues/25" - } - ], - "number": 11, - "url": "https://github.com/hapijs/statehood/milestone/11", - "version": "4.0.3" - }, - { - "date": "2016-07-28T19:20:14Z", - "id": 1780040, - "issues": [ - { - "id": 168174975, - "labels": ["documentation"], + "url": "https://github.com/hapijs/statehood/milestone/25", + "version": "6.0.8" + }, + { + "date": "2018-11-01T19:21:36Z", + "id": 3232153, + "issues": [ + { + "id": 376533626, + "labels": ["dependency"], + "number": 46, + "title": "Update deps", + "url": "https://github.com/hapijs/statehood/issues/46" + } + ], + "number": 23, + "url": "https://github.com/hapijs/statehood/milestone/23", + "version": "6.0.7" + }, + { + "date": "2018-03-31T00:10:43Z", + "id": 2886915, + "issues": [ + { + "id": 307416653, + "labels": ["bug"], + "number": 41, + "title": "Fix a typo", + "url": "https://github.com/hapijs/statehood/pull/41" + }, + { + "id": 307172912, + "labels": ["bug"], + "number": 40, + "title": "Remove new Buffer usage", + "url": "https://github.com/hapijs/statehood/pull/40" + } + ], + "number": 22, + "url": "https://github.com/hapijs/statehood/milestone/22", + "version": "6.0.6" + }, + { + "date": "2018-03-31T00:12:06Z", + "id": 3232154, + "issues": [ + { + "id": 271116422, + "labels": ["bug"], + "number": 38, + "title": "Use Cryptiles.fixedTimeComparison()", + "url": "https://github.com/hapijs/statehood/issues/38" + } + ], "number": 24, - "title": "npmignore", - "url": "https://github.com/hapijs/statehood/issues/24" - } - ], - "number": 10, - "url": "https://github.com/hapijs/statehood/milestone/10", - "version": "4.0.2" - }, - { - "date": "2016-05-21T03:48:29Z", - "id": 1554830, - "issues": [ - { - "id": 155821044, - "labels": ["test", "documentation", "dependency"], + "url": "https://github.com/hapijs/statehood/milestone/24", + "version": "6.0.5" + }, + { + "date": "2017-11-03T20:25:01Z", + "id": 2885377, + "issues": [ + { + "id": 271108347, + "labels": ["feature"], + "number": 37, + "title": "Add bounce", + "url": "https://github.com/hapijs/statehood/issues/37" + } + ], + "number": 21, + "url": "https://github.com/hapijs/statehood/milestone/21", + "version": "6.0.4" + }, + { + "date": "2017-11-03T08:42:25Z", + "id": 2856588, + "issues": [ + { + "id": 270908232, + "labels": ["dependency"], + "number": 36, + "title": "Update dep", + "url": "https://github.com/hapijs/statehood/issues/36" + } + ], + "number": 20, + "url": "https://github.com/hapijs/statehood/milestone/20", + "version": "6.0.3" + }, + { + "date": "2017-10-22T08:39:17Z", + "id": 2799414, + "issues": [ + { + "id": 267446941, + "labels": ["dependency"], + "number": 35, + "title": "Update joi", + "url": "https://github.com/hapijs/statehood/issues/35" + } + ], "number": 19, - "title": "Test on node v6, update dependencies", - "url": "https://github.com/hapijs/statehood/pull/19" - } - ], - "number": 9, - "url": "https://github.com/hapijs/statehood/milestone/9", - "version": "4.0.1" - }, - { - "date": "2016-02-01T08:08:03Z", - "id": 1480493, - "issues": [ - { - "id": 130286832, - "labels": ["dependency", "security", "breaking changes"], + "url": "https://github.com/hapijs/statehood/milestone/19", + "version": "6.0.2" + }, + { + "date": "2017-09-28T06:18:50Z", + "id": 2788078, + "issues": [ + { + "id": 261204726, + "labels": ["dependency"], + "number": 34, + "title": "Update deps", + "url": "https://github.com/hapijs/statehood/issues/34" + } + ], + "number": 18, + "url": "https://github.com/hapijs/statehood/milestone/18", + "version": "6.0.1" + }, + { + "date": "2017-09-25T05:54:06Z", + "id": 2651947, + "issues": [ + { + "id": 260128944, + "labels": ["breaking changes"], + "number": 33, + "title": "Migrate to async interface", + "url": "https://github.com/hapijs/statehood/issues/33" + } + ], + "number": 17, + "url": "https://github.com/hapijs/statehood/milestone/17", + "version": "6.0.0" + }, + { + "date": "2019-03-25T17:44:33Z", + "id": 4170598, + "issues": [ + { + "id": 425007163, + "labels": ["lts"], + "number": 58, + "title": "Commercial version of v5 branch", + "url": "https://github.com/hapijs/statehood/issues/58" + } + ], + "number": 29, + "url": "https://github.com/hapijs/statehood/milestone/29", + "version": "5.1.0" + }, + { + "date": "2019-01-31T19:45:49Z", + "id": 4017367, + "issues": [ + { + "id": 405123803, + "labels": ["bug", "security", "lts"], + "number": 56, + "title": "Protect against JSON.parse() prototype poisoning", + "url": "https://github.com/hapijs/statehood/issues/56" + } + ], + "number": 27, + "url": "https://github.com/hapijs/statehood/milestone/27", + "version": "5.0.4" + }, + { + "date": "2017-07-20T08:32:47Z", + "id": 2546590, + "issues": [ + { + "id": 244283653, + "labels": ["bug"], + "number": 32, + "title": "Ignore partial header structure errors when ignoreErrors", + "url": "https://github.com/hapijs/statehood/issues/32" + } + ], "number": 16, - "title": "Update hueniverse/iron from 3.x.x to 4.x.x", - "url": "https://github.com/hapijs/statehood/issues/16" - } - ], - "number": 8, - "url": "https://github.com/hapijs/statehood/milestone/8", - "version": "4.0.0" - }, - { - "date": "2016-01-02T18:19:47Z", - "id": 1390395, - "issues": [ - { - "id": 124602884, - "labels": ["feature"], + "url": "https://github.com/hapijs/statehood/milestone/16", + "version": "5.0.3" + }, + { + "date": "2017-05-27T22:27:43Z", + "id": 2162520, + "issues": [ + { + "id": 231832046, + "labels": ["dependency"], + "number": 31, + "title": "Update deps.", + "url": "https://github.com/hapijs/statehood/issues/31" + } + ], "number": 15, - "title": "Allow empty names in loose mode", - "url": "https://github.com/hapijs/statehood/issues/15" - } - ], - "number": 7, - "url": "https://github.com/hapijs/statehood/milestone/7", - "version": "3.1.0" - }, - { - "date": "2015-11-03T03:29:42Z", - "id": 1149532, - "issues": [ - { - "id": 114733690, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/statehood/milestone/15", + "version": "5.0.2" + }, + { + "date": "2016-11-29T00:19:07Z", + "id": 1966598, + "issues": [ + { + "id": 187208869, + "labels": ["bug"], + "number": 29, + "title": "Fix parse when iron is used with invalid and valid values", + "url": "https://github.com/hapijs/statehood/pull/29" + }, + { + "id": 183162384, + "labels": ["bug"], + "number": 28, + "title": "Cookies with the same name are ignored if only one is invalid", + "url": "https://github.com/hapijs/statehood/issues/28" + } + ], "number": 14, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/statehood/issues/14" - } - ], - "number": 6, - "url": "https://github.com/hapijs/statehood/milestone/6", - "version": "3.0.0" - }, - { - "date": "2015-06-04T14:15:26Z", - "id": 1149526, - "issues": [ - { - "id": 85117868, - "labels": ["dependency"], + "url": "https://github.com/hapijs/statehood/milestone/14", + "version": "5.0.1" + }, + { + "date": "2016-08-26T20:39:23Z", + "id": 1964549, + "issues": [ + { + "id": 173538509, + "labels": ["security", "breaking changes"], + "number": 26, + "title": "Change Secure, HttpOnly, and SameSite to true by default", + "url": "https://github.com/hapijs/statehood/issues/26" + } + ], "number": 13, - "title": "Update hapijs/joi to 6.4.3 from 4.9.0", - "url": "https://github.com/hapijs/statehood/issues/13" - } - ], - "number": 5, - "url": "https://github.com/hapijs/statehood/milestone/5", - "version": "2.1.1" - }, - { - "date": "2015-06-04T14:09:36Z", - "id": 898079, - "issues": [ - { - "id": 74652403, - "labels": ["feature"], + "url": "https://github.com/hapijs/statehood/milestone/13", + "version": "5.0.0" + }, + { + "date": "2016-08-26T08:22:20Z", + "id": 1910438, + "issues": [ + { + "id": 157330951, + "labels": ["bug"], + "number": 23, + "title": "Assert when input is not a string", + "url": "https://github.com/hapijs/statehood/pull/23" + }, + { + "id": 156900491, + "labels": ["feature"], + "number": 21, + "title": "Support SameSite attribute", + "url": "https://github.com/hapijs/statehood/issues/21" + }, + { + "id": 144061731, + "labels": ["bug", "security"], + "number": 17, + "title": "Assert when input is not a string", + "url": "https://github.com/hapijs/statehood/issues/17" + } + ], "number": 12, - "title": "Support isNullOverride in applyToDefaults", - "url": "https://github.com/hapijs/statehood/pull/12" - } - ], - "number": 4, - "url": "https://github.com/hapijs/statehood/milestone/4", - "version": "2.1.0" - }, - { - "date": "2014-12-09T22:42:09Z", - "id": 781487, - "issues": [ - { - "id": 50113345, - "labels": ["feature"], + "url": "https://github.com/hapijs/statehood/milestone/12", + "version": "4.1.0" + }, + { + "date": "2016-07-28T20:14:07Z", + "id": 1910288, + "issues": [ + { + "id": 168185653, + "labels": ["dependency"], + "number": 25, + "title": "Update deps", + "url": "https://github.com/hapijs/statehood/issues/25" + } + ], + "number": 11, + "url": "https://github.com/hapijs/statehood/milestone/11", + "version": "4.0.3" + }, + { + "date": "2016-07-28T19:20:14Z", + "id": 1780040, + "issues": [ + { + "id": 168174975, + "labels": ["documentation"], + "number": 24, + "title": "npmignore", + "url": "https://github.com/hapijs/statehood/issues/24" + } + ], + "number": 10, + "url": "https://github.com/hapijs/statehood/milestone/10", + "version": "4.0.2" + }, + { + "date": "2016-05-21T03:48:29Z", + "id": 1554830, + "issues": [ + { + "id": 155821044, + "labels": ["test", "documentation", "dependency"], + "number": 19, + "title": "Test on node v6, update dependencies", + "url": "https://github.com/hapijs/statehood/pull/19" + } + ], "number": 9, - "title": "Move passThrough exclude logic from h2o2", - "url": "https://github.com/hapijs/statehood/issues/9" - }, - { - "id": 49990013, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/statehood/milestone/9", + "version": "4.0.1" + }, + { + "date": "2016-02-01T08:08:03Z", + "id": 1480493, + "issues": [ + { + "id": 130286832, + "labels": ["dependency", "security", "breaking changes"], + "number": 16, + "title": "Update hueniverse/iron from 3.x.x to 4.x.x", + "url": "https://github.com/hapijs/statehood/issues/16" + } + ], "number": 8, - "title": "Change parse and format to prototype", - "url": "https://github.com/hapijs/statehood/issues/8" - }, - { - "id": 49988621, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/statehood/milestone/8", + "version": "4.0.0" + }, + { + "date": "2016-01-02T18:19:47Z", + "id": 1390395, + "issues": [ + { + "id": 124602884, + "labels": ["feature"], + "number": 15, + "title": "Allow empty names in loose mode", + "url": "https://github.com/hapijs/statehood/issues/15" + } + ], "number": 7, - "title": "Replace globals with per cookie defaults", - "url": "https://github.com/hapijs/statehood/issues/7" - }, - { - "id": 49988581, - "labels": ["bug"], + "url": "https://github.com/hapijs/statehood/milestone/7", + "version": "3.1.0" + }, + { + "date": "2015-11-03T03:29:42Z", + "id": 1149532, + "issues": [ + { + "id": 114733690, + "labels": ["breaking changes"], + "number": 14, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/statehood/issues/14" + } + ], "number": 6, - "title": "Ignored errors do not stop processing current cookie", - "url": "https://github.com/hapijs/statehood/issues/6" - } - ], - "number": 3, - "url": "https://github.com/hapijs/statehood/milestone/3", - "version": "2.0.0" - }, - { - "date": "2014-09-08T03:00:10Z", - "id": 781428, - "issues": [ - { - "id": 42156463, - "labels": ["feature"], + "url": "https://github.com/hapijs/statehood/milestone/6", + "version": "3.0.0" + }, + { + "date": "2015-06-04T14:15:26Z", + "id": 1149526, + "issues": [ + { + "id": 85117868, + "labels": ["dependency"], + "number": 13, + "title": "Update hapijs/joi to 6.4.3 from 4.9.0", + "url": "https://github.com/hapijs/statehood/issues/13" + } + ], + "number": 5, + "url": "https://github.com/hapijs/statehood/milestone/5", + "version": "2.1.1" + }, + { + "date": "2015-06-04T14:09:36Z", + "id": 898079, + "issues": [ + { + "id": 74652403, + "labels": ["feature"], + "number": 12, + "title": "Support isNullOverride in applyToDefaults", + "url": "https://github.com/hapijs/statehood/pull/12" + } + ], + "number": 4, + "url": "https://github.com/hapijs/statehood/milestone/4", + "version": "2.1.0" + }, + { + "date": "2014-12-09T22:42:09Z", + "id": 781487, + "issues": [ + { + "id": 50113345, + "labels": ["feature"], + "number": 9, + "title": "Move passThrough exclude logic from h2o2", + "url": "https://github.com/hapijs/statehood/issues/9" + }, + { + "id": 49990013, + "labels": ["breaking changes"], + "number": 8, + "title": "Change parse and format to prototype", + "url": "https://github.com/hapijs/statehood/issues/8" + }, + { + "id": 49988621, + "labels": ["breaking changes"], + "number": 7, + "title": "Replace globals with per cookie defaults", + "url": "https://github.com/hapijs/statehood/issues/7" + }, + { + "id": 49988581, + "labels": ["bug"], + "number": 6, + "title": "Ignored errors do not stop processing current cookie", + "url": "https://github.com/hapijs/statehood/issues/6" + } + ], "number": 3, - "title": "exclude()", - "url": "https://github.com/hapijs/statehood/issues/3" - }, - { - "id": 42156453, - "labels": ["bug"], + "url": "https://github.com/hapijs/statehood/milestone/3", + "version": "2.0.0" + }, + { + "date": "2014-09-08T03:00:10Z", + "id": 781428, + "issues": [ + { + "id": 42156463, + "labels": ["feature"], + "number": 3, + "title": "exclude()", + "url": "https://github.com/hapijs/statehood/issues/3" + }, + { + "id": 42156453, + "labels": ["bug"], + "number": 2, + "title": "Remove support for comma separator", + "url": "https://github.com/hapijs/statehood/issues/2" + } + ], "number": 2, - "title": "Remove support for comma separator", - "url": "https://github.com/hapijs/statehood/issues/2" - } - ], - "number": 2, - "url": "https://github.com/hapijs/statehood/milestone/2", - "version": "1.2.0" - }, - { - "date": "2014-09-07T22:33:45Z", - "id": 781427, - "issues": [ - { - "id": 42154127, - "labels": ["feature"], + "url": "https://github.com/hapijs/statehood/milestone/2", + "version": "1.2.0" + }, + { + "date": "2014-09-07T22:33:45Z", + "id": 781427, + "issues": [ + { + "id": 42154127, + "labels": ["feature"], + "number": 1, + "title": "Add list of cookie names", + "url": "https://github.com/hapijs/statehood/issues/1" + } + ], "number": 1, - "title": "Add list of cookie names", - "url": "https://github.com/hapijs/statehood/issues/1" - } - ], - "number": 1, - "url": "https://github.com/hapijs/statehood/milestone/1", - "version": "1.1.0" - } + "url": "https://github.com/hapijs/statehood/milestone/1", + "version": "1.1.0" + } ] diff --git a/generated/modules/statehood/info.json b/generated/modules/statehood/info.json index 8080e8bb..003c6753 100644 --- a/generated/modules/statehood/info.json +++ b/generated/modules/statehood/info.json @@ -1,22 +1,22 @@ { - "api": false, - "forks": 26, - "isPlugin": false, - "link": "https://github.com/hapijs/statehood", - "name": "statehood", - "package": "@hapi/statehood", - "slogan": "HTTP State Management Utilities.", - "sloganHtml": "HTTP State Management Utilities.", - "stars": 21, - "updated": "2025-11-06T09:32:35Z", - "versions": [ - { - "branch": "v8.2.1", - "license": "BSD", - "name": "8.2.1", - "node": ">= 16" - } - ], - "versionsArray": ["8.2.1"], - "latestVersion": "8.x.x" + "api": false, + "forks": 26, + "isPlugin": false, + "latestVersion": "8.x.x", + "link": "https://github.com/hapijs/statehood", + "name": "statehood", + "package": "@hapi/statehood", + "slogan": "HTTP State Management Utilities.", + "sloganHtml": "HTTP State Management Utilities.", + "stars": 21, + "updated": "2025-11-06T09:32:35Z", + "versions": [ + { + "branch": "v8.2.1", + "license": "BSD", + "name": "8.2.1", + "node": ">= 16" + } + ], + "versionsArray": ["8.2.1"] } diff --git a/generated/modules/subtext/changelog.json b/generated/modules/subtext/changelog.json index 9a3aa225..f3739d6b 100644 --- a/generated/modules/subtext/changelog.json +++ b/generated/modules/subtext/changelog.json @@ -1,991 +1,1007 @@ [ - { - "date": "2026-04-02T08:19:32Z", - "id": 15394847, - "issues": [ - { - "id": 4192742670, - "labels": ["dependency"], - "number": 105, - "title": "chore: bump deps", - "url": "https://github.com/hapijs/subtext/pull/105" - } - ], - "number": 58, - "url": "https://github.com/hapijs/subtext/milestone/58", - "version": "8.1.2" - }, - { - "date": "2025-08-06T10:02:02Z", - "id": 13436611, - "issues": [ - { - "id": 3293529945, - "labels": ["test"], - "number": 104, - "title": "Fix cleanup test on windows", - "url": "https://github.com/hapijs/subtext/pull/104" - }, - { - "id": 3289219536, - "labels": ["bug"], - "number": 102, - "title": "Fix late write error on aborted streams", - "url": "https://github.com/hapijs/subtext/pull/102" - } - ], - "number": 57, - "url": "https://github.com/hapijs/subtext/milestone/57", - "version": "8.1.1" - }, - { - "date": "2023-02-14T15:18:38Z", - "id": 9043389, - "issues": [ - { - "id": 1584346337, - "labels": ["security", "bug", "feature"], - "number": 99, - "title": "Support multipart payload maxParts, clean-up files on error", - "url": "https://github.com/hapijs/subtext/issues/99" - } - ], - "number": 55, - "url": "https://github.com/hapijs/subtext/milestone/55", - "version": "8.1.0" - }, - { - "date": "2023-02-14T15:13:34Z", - "id": 8031750, - "issues": [ - { - "id": 1551773819, - "labels": [], - "number": 98, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/subtext/pull/98" - } - ], - "number": 54, - "url": "https://github.com/hapijs/subtext/milestone/54", - "version": "8.0.1" - }, - { - "date": "2022-06-20T20:14:00Z", - "id": 8031748, - "issues": [ - { - "id": 1253159893, - "labels": ["breaking changes", "dependency"], - "number": 97, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/subtext/pull/97" - } - ], - "number": 53, - "url": "https://github.com/hapijs/subtext/milestone/53", - "version": "8.0.0" - }, - { - "date": "2023-02-14T15:18:39Z", - "id": 9043390, - "issues": [], - "number": 56, - "url": "https://github.com/hapijs/subtext/milestone/56", - "version": "7.1.0" - }, - { - "date": "2022-06-20T20:13:59Z", - "id": 5103590, - "issues": [ - { - "id": 1253040923, - "labels": ["bug"], - "number": 96, - "title": "Fix stream error propagation for node v16+", - "url": "https://github.com/hapijs/subtext/pull/96" - }, - { - "id": 1084177193, - "labels": [], - "number": 94, - "title": "add dispatcher and use shared config", - "url": "https://github.com/hapijs/subtext/pull/94" - }, - { - "id": 709596891, - "labels": [], - "number": 87, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/subtext/pull/87" - }, - { - "id": 660358865, - "labels": ["test"], - "number": 84, - "title": "Test on node 14", - "url": "https://github.com/hapijs/subtext/pull/84" - } - ], - "number": 52, - "url": "https://github.com/hapijs/subtext/milestone/52", - "version": "7.0.4" - }, - { - "date": "2020-02-13T19:12:44Z", - "id": 5103483, - "issues": [ - { - "id": 564888549, - "labels": ["bug"], - "number": 83, - "title": "Allow options.multipart to be true", - "url": "https://github.com/hapijs/subtext/issues/83" - } - ], - "number": 49, - "url": "https://github.com/hapijs/subtext/milestone/49", - "version": "7.0.3" - }, - { - "date": "2020-02-13T18:20:46Z", - "id": 5010081, - "issues": [ - { - "id": 564816827, - "labels": ["test", "dependency"], - "number": 80, - "title": "Add tests for deps changes", - "url": "https://github.com/hapijs/subtext/issues/80" - } - ], - "number": 48, - "url": "https://github.com/hapijs/subtext/milestone/48", - "version": "7.0.2" - }, - { - "date": "2020-01-16T10:13:43Z", - "id": 4987901, - "issues": [ - { - "id": 550239874, - "labels": ["dependency"], - "number": 79, - "title": "Update hoek", - "url": "https://github.com/hapijs/subtext/pull/79" - } - ], - "number": 47, - "url": "https://github.com/hapijs/subtext/milestone/47", - "version": "7.0.1" - }, - { - "date": "2020-01-09T00:26:33Z", - "id": 4987900, - "issues": [ - { - "id": 547178567, - "labels": ["breaking changes", "dependency"], - "number": 78, - "title": "Only node 12", - "url": "https://github.com/hapijs/subtext/issues/78" - } - ], - "number": 46, - "url": "https://github.com/hapijs/subtext/milestone/46", - "version": "7.0.0" - }, - { - "date": "2020-02-13T18:20:43Z", - "id": 4658142, - "issues": [ - { - "id": 564830758, - "labels": ["test", "dependency", "lts"], - "number": 82, - "title": "Add tests", - "url": "https://github.com/hapijs/subtext/issues/82" - } - ], - "number": 44, - "url": "https://github.com/hapijs/subtext/milestone/44", - "version": "6.1.3" - }, - { - "date": "2019-09-13T19:24:35Z", - "id": 4442015, - "issues": [ - { - "id": 493480795, - "labels": ["bug"], - "number": 72, - "title": "Fix maxBytes in file output", - "url": "https://github.com/hapijs/subtext/issues/72" - } - ], - "number": 43, - "url": "https://github.com/hapijs/subtext/milestone/43", - "version": "6.1.2" - }, - { - "date": "2019-06-26T06:18:38Z", - "id": 4194609, - "issues": [ - { - "id": 460780432, - "labels": ["dependency"], - "number": 70, - "title": "Update deps", - "url": "https://github.com/hapijs/subtext/issues/70" - } - ], - "number": 42, - "url": "https://github.com/hapijs/subtext/milestone/42", - "version": "6.1.1" - }, - { - "date": "2019-04-02T18:18:02Z", - "id": 4019147, - "issues": [ - { - "id": 428359265, - "labels": ["dependency"], - "number": 69, - "title": "Change module namespace", - "url": "https://github.com/hapijs/subtext/issues/69" - } - ], - "number": 39, - "url": "https://github.com/hapijs/subtext/milestone/39", - "version": "6.1.0" - }, - { - "date": "2019-01-31T19:38:22Z", - "id": 3792292, - "issues": [ - { - "id": 405113623, - "labels": ["security", "bug"], - "number": 66, - "title": "Protect against JSON.parse() prototype poisoning", - "url": "https://github.com/hapijs/subtext/issues/66" - } - ], - "number": 37, - "url": "https://github.com/hapijs/subtext/milestone/37", - "version": "6.0.12" - }, - { - "date": "2018-11-03T00:38:56Z", - "id": 3791362, - "issues": [ - { - "id": 377003348, - "labels": ["non issue"], - "number": 63, - "title": "Remove engines", - "url": "https://github.com/hapijs/subtext/issues/63" - } - ], - "number": 36, - "url": "https://github.com/hapijs/subtext/milestone/36", - "version": "6.0.11" - }, - { - "date": "2018-11-02T17:51:11Z", - "id": 3788929, - "issues": [ - { - "id": 376908625, - "labels": ["bug"], - "number": 62, - "title": "Only include file headers on multipart", - "url": "https://github.com/hapijs/subtext/issues/62" - } - ], - "number": 35, - "url": "https://github.com/hapijs/subtext/milestone/35", - "version": "6.0.10" - }, - { - "date": "2018-11-01T19:24:28Z", - "id": 3786531, - "issues": [ - { - "id": 376534623, - "labels": ["dependency"], - "number": 61, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/subtext/issues/61" - } - ], - "number": 34, - "url": "https://github.com/hapijs/subtext/milestone/34", - "version": "6.0.9" - }, - { - "date": "2018-10-31T21:00:02Z", - "id": 2886902, - "issues": [ - { - "id": 376157618, - "labels": ["bug"], - "number": 60, - "title": "Handle PromiseRejectionHandledWarning", - "url": "https://github.com/hapijs/subtext/issues/60" - }, - { - "id": 375809360, - "labels": ["non issue"], + { + "date": "2026-05-06T10:28:10Z", + "id": 15814787, + "issues": [ + { + "id": 4390568761, + "labels": ["dependency"], + "number": 106, + "title": "chore: bump dependencies", + "url": "https://github.com/hapijs/subtext/pull/106" + } + ], + "number": 59, + "url": "https://github.com/hapijs/subtext/milestone/59", + "version": "8.1.3" + }, + { + "date": "2026-04-02T08:19:32Z", + "id": 15394847, + "issues": [ + { + "id": 4192742670, + "labels": ["dependency"], + "number": 105, + "title": "chore: bump deps", + "url": "https://github.com/hapijs/subtext/pull/105" + } + ], "number": 58, - "title": "Cleanup", - "url": "https://github.com/hapijs/subtext/issues/58" - } - ], - "number": 33, - "url": "https://github.com/hapijs/subtext/milestone/33", - "version": "6.0.8" - }, - { - "date": "2017-11-03T20:19:27Z", - "id": 2885384, - "issues": [ - { - "id": 271107029, - "labels": ["feature"], - "number": 56, - "title": "Cleaner throw", - "url": "https://github.com/hapijs/subtext/issues/56" - } - ], - "number": 32, - "url": "https://github.com/hapijs/subtext/milestone/32", - "version": "6.0.7" - }, - { - "date": "2017-11-03T08:46:14Z", - "id": 2856592, - "issues": [ - { - "id": 270909004, - "labels": ["dependency"], + "url": "https://github.com/hapijs/subtext/milestone/58", + "version": "8.1.2" + }, + { + "date": "2025-08-06T10:02:02Z", + "id": 13436611, + "issues": [ + { + "id": 3293529945, + "labels": ["test"], + "number": 104, + "title": "Fix cleanup test on windows", + "url": "https://github.com/hapijs/subtext/pull/104" + }, + { + "id": 3289219536, + "labels": ["bug"], + "number": 102, + "title": "Fix late write error on aborted streams", + "url": "https://github.com/hapijs/subtext/pull/102" + } + ], + "number": 57, + "url": "https://github.com/hapijs/subtext/milestone/57", + "version": "8.1.1" + }, + { + "date": "2023-02-14T15:18:38Z", + "id": 9043389, + "issues": [ + { + "id": 1584346337, + "labels": ["security", "bug", "feature"], + "number": 99, + "title": "Support multipart payload maxParts, clean-up files on error", + "url": "https://github.com/hapijs/subtext/issues/99" + } + ], "number": 55, - "title": "Update deps", - "url": "https://github.com/hapijs/subtext/issues/55" - } - ], - "number": 31, - "url": "https://github.com/hapijs/subtext/milestone/31", - "version": "6.0.6" - }, - { - "date": "2017-10-22T08:46:03Z", - "id": 2852004, - "issues": [ - { - "id": 267447257, - "labels": ["dependency"], + "url": "https://github.com/hapijs/subtext/milestone/55", + "version": "8.1.0" + }, + { + "date": "2023-02-14T15:13:34Z", + "id": 8031750, + "issues": [ + { + "id": 1551773819, + "labels": [], + "number": 98, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/subtext/pull/98" + } + ], "number": 54, - "title": "Update wreck", - "url": "https://github.com/hapijs/subtext/issues/54" - } - ], - "number": 30, - "url": "https://github.com/hapijs/subtext/milestone/30", - "version": "6.0.5" - }, - { - "date": "2017-10-19T17:52:32Z", - "id": 2799427, - "issues": [ - { - "id": 266930854, - "labels": ["bug", "dependency"], + "url": "https://github.com/hapijs/subtext/milestone/54", + "version": "8.0.1" + }, + { + "date": "2022-06-20T20:14:00Z", + "id": 8031748, + "issues": [ + { + "id": 1253159893, + "labels": ["breaking changes", "dependency"], + "number": 97, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/subtext/pull/97" + } + ], "number": 53, - "title": "Update pez dependency", - "url": "https://github.com/hapijs/subtext/issues/53" - } - ], - "number": 29, - "url": "https://github.com/hapijs/subtext/milestone/29", - "version": "6.0.4" - }, - { - "date": "2017-09-28T06:29:17Z", - "id": 2799417, - "issues": [], - "number": 28, - "url": "https://github.com/hapijs/subtext/milestone/28", - "version": "6.0.3" - }, - { - "date": "2017-09-28T06:21:32Z", - "id": 2793406, - "issues": [ - { - "id": 261205093, - "labels": ["dependency"], + "url": "https://github.com/hapijs/subtext/milestone/53", + "version": "8.0.0" + }, + { + "date": "2023-02-14T15:18:39Z", + "id": 9043390, + "issues": [], + "number": 56, + "url": "https://github.com/hapijs/subtext/milestone/56", + "version": "7.1.0" + }, + { + "date": "2022-06-20T20:13:59Z", + "id": 5103590, + "issues": [ + { + "id": 1253040923, + "labels": ["bug"], + "number": 96, + "title": "Fix stream error propagation for node v16+", + "url": "https://github.com/hapijs/subtext/pull/96" + }, + { + "id": 1084177193, + "labels": [], + "number": 94, + "title": "add dispatcher and use shared config", + "url": "https://github.com/hapijs/subtext/pull/94" + }, + { + "id": 709596891, + "labels": [], + "number": 87, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/subtext/pull/87" + }, + { + "id": 660358865, + "labels": ["test"], + "number": 84, + "title": "Test on node 14", + "url": "https://github.com/hapijs/subtext/pull/84" + } + ], "number": 52, - "title": "Update deps", - "url": "https://github.com/hapijs/subtext/issues/52" - } - ], - "number": 27, - "url": "https://github.com/hapijs/subtext/milestone/27", - "version": "6.0.2" - }, - { - "date": "2017-09-26T00:28:54Z", - "id": 2775882, - "issues": [ - { - "id": 260454428, - "labels": ["dependency"], - "number": 51, - "title": "Update content", - "url": "https://github.com/hapijs/subtext/issues/51" - } - ], - "number": 26, - "url": "https://github.com/hapijs/subtext/milestone/26", - "version": "6.0.1" - }, - { - "date": "2017-09-18T22:40:20Z", - "id": 2617042, - "issues": [ - { - "id": 258642539, - "labels": ["breaking changes", "dependency"], - "number": 50, - "title": "Async interface", - "url": "https://github.com/hapijs/subtext/pull/50" - }, - { - "id": 258642231, - "labels": ["breaking changes", "feature"], + "url": "https://github.com/hapijs/subtext/milestone/52", + "version": "7.0.4" + }, + { + "date": "2020-02-13T19:12:44Z", + "id": 5103483, + "issues": [ + { + "id": 564888549, + "labels": ["bug"], + "number": 83, + "title": "Allow options.multipart to be true", + "url": "https://github.com/hapijs/subtext/issues/83" + } + ], "number": 49, - "title": "Migrate to async interface", - "url": "https://github.com/hapijs/subtext/issues/49" - } - ], - "number": 25, - "url": "https://github.com/hapijs/subtext/milestone/25", - "version": "6.0.0" - }, - { - "date": "2020-02-13T18:20:45Z", - "id": 4658177, - "issues": [ - { - "id": 564818758, - "labels": ["test", "dependency", "lts", "commercial"], - "number": 81, - "title": "Update deps", - "url": "https://github.com/hapijs/subtext/issues/81" - } - ], - "number": 45, - "url": "https://github.com/hapijs/subtext/milestone/45", - "version": "5.1.2" - }, - { - "date": "2019-09-13T19:42:13Z", - "id": 4170886, - "issues": [ - { - "id": 493487490, - "labels": ["bug", "commercial"], - "number": 73, - "title": "maxBytes file output", - "url": "https://github.com/hapijs/subtext/issues/73" - } - ], - "number": 41, - "url": "https://github.com/hapijs/subtext/milestone/41", - "version": "5.1.1" - }, - { - "date": "2019-03-25T18:53:49Z", - "id": 4170885, - "issues": [ - { - "id": 425036417, - "labels": ["lts"], - "number": 68, - "title": "Commercial version of v5 branch", - "url": "https://github.com/hapijs/subtext/issues/68" - } - ], - "number": 40, - "url": "https://github.com/hapijs/subtext/milestone/40", - "version": "5.1.0" - }, - { - "date": "2019-01-31T19:38:18Z", - "id": 4017345, - "issues": [ - { - "id": 405119135, - "labels": ["security", "bug", "lts"], - "number": 67, - "title": "Protect against JSON.parse() prototype poisoning", - "url": "https://github.com/hapijs/subtext/issues/67" - } - ], - "number": 38, - "url": "https://github.com/hapijs/subtext/milestone/38", - "version": "5.0.1" - }, - { - "date": "2017-07-02T18:35:21Z", - "id": 2617041, - "issues": [ - { - "id": 239230994, - "labels": ["bug", "breaking changes"], + "url": "https://github.com/hapijs/subtext/milestone/49", + "version": "7.0.3" + }, + { + "date": "2020-02-13T18:20:46Z", + "id": 5010081, + "issues": [ + { + "id": 564816827, + "labels": ["test", "dependency"], + "number": 80, + "title": "Add tests for deps changes", + "url": "https://github.com/hapijs/subtext/issues/80" + } + ], "number": 48, - "title": "Return 413 when payload too large.", - "url": "https://github.com/hapijs/subtext/pull/48" - } - ], - "number": 24, - "url": "https://github.com/hapijs/subtext/milestone/24", - "version": "5.0.0" - }, - { - "date": "2017-05-28T06:55:07Z", - "id": 2399858, - "issues": [ - { - "id": 231850837, - "labels": ["dependency"], + "url": "https://github.com/hapijs/subtext/milestone/48", + "version": "7.0.2" + }, + { + "date": "2020-01-16T10:13:43Z", + "id": 4987901, + "issues": [ + { + "id": 550239874, + "labels": ["dependency"], + "number": 79, + "title": "Update hoek", + "url": "https://github.com/hapijs/subtext/pull/79" + } + ], "number": 47, - "title": "Update deps.", - "url": "https://github.com/hapijs/subtext/issues/47" - } - ], - "number": 22, - "url": "https://github.com/hapijs/subtext/milestone/22", - "version": "4.4.1" - }, - { - "date": "2017-03-21T06:49:19Z", - "id": 2079331, - "issues": [ - { - "id": 215643027, - "labels": ["feature"], - "number": 45, - "title": "Allow specifying custom query string parser", - "url": "https://github.com/hapijs/subtext/issues/45" - }, - { - "id": 215641704, - "labels": ["feature"], + "url": "https://github.com/hapijs/subtext/milestone/47", + "version": "7.0.1" + }, + { + "date": "2020-01-09T00:26:33Z", + "id": 4987900, + "issues": [ + { + "id": 547178567, + "labels": ["breaking changes", "dependency"], + "number": 78, + "title": "Only node 12", + "url": "https://github.com/hapijs/subtext/issues/78" + } + ], + "number": 46, + "url": "https://github.com/hapijs/subtext/milestone/46", + "version": "7.0.0" + }, + { + "date": "2020-02-13T18:20:43Z", + "id": 4658142, + "issues": [ + { + "id": 564830758, + "labels": ["test", "dependency", "lts"], + "number": 82, + "title": "Add tests", + "url": "https://github.com/hapijs/subtext/issues/82" + } + ], "number": 44, - "title": "Retain raw payload when parsing fails", - "url": "https://github.com/hapijs/subtext/issues/44" - } - ], - "number": 21, - "url": "https://github.com/hapijs/subtext/milestone/21", - "version": "4.4.0" - }, - { - "date": "2016-10-19T08:50:16Z", - "id": 1964237, - "issues": [ - { - "id": 183875943, - "labels": ["feature"], - "number": 41, - "title": "Support multipart override", - "url": "https://github.com/hapijs/subtext/pull/41" - }, - { - "id": 183875891, - "labels": ["feature"], - "number": 40, - "title": "Support multipart override output", - "url": "https://github.com/hapijs/subtext/issues/40" - } - ], - "number": 19, - "url": "https://github.com/hapijs/subtext/milestone/19", - "version": "4.3.0" - }, - { - "date": "2016-10-19T06:30:37Z", - "id": 2079043, - "issues": [ - { - "id": 179428066, - "labels": ["dependency"], + "url": "https://github.com/hapijs/subtext/milestone/44", + "version": "6.1.3" + }, + { + "date": "2019-09-13T19:24:35Z", + "id": 4442015, + "issues": [ + { + "id": 493480795, + "labels": ["bug"], + "number": 72, + "title": "Fix maxBytes in file output", + "url": "https://github.com/hapijs/subtext/issues/72" + } + ], + "number": 43, + "url": "https://github.com/hapijs/subtext/milestone/43", + "version": "6.1.2" + }, + { + "date": "2019-06-26T06:18:38Z", + "id": 4194609, + "issues": [ + { + "id": 460780432, + "labels": ["dependency"], + "number": 70, + "title": "Update deps", + "url": "https://github.com/hapijs/subtext/issues/70" + } + ], + "number": 42, + "url": "https://github.com/hapijs/subtext/milestone/42", + "version": "6.1.1" + }, + { + "date": "2019-04-02T18:18:02Z", + "id": 4019147, + "issues": [ + { + "id": 428359265, + "labels": ["dependency"], + "number": 69, + "title": "Change module namespace", + "url": "https://github.com/hapijs/subtext/issues/69" + } + ], + "number": 39, + "url": "https://github.com/hapijs/subtext/milestone/39", + "version": "6.1.0" + }, + { + "date": "2019-01-31T19:38:22Z", + "id": 3792292, + "issues": [ + { + "id": 405113623, + "labels": ["security", "bug"], + "number": 66, + "title": "Protect against JSON.parse() prototype poisoning", + "url": "https://github.com/hapijs/subtext/issues/66" + } + ], "number": 37, - "title": "Update dependencies", - "url": "https://github.com/hapijs/subtext/pull/37" - } - ], - "number": 20, - "url": "https://github.com/hapijs/subtext/milestone/20", - "version": "4.2.2" - }, - { - "date": "2016-08-26T02:26:10Z", - "id": 1964231, - "issues": [ - { - "id": 173355122, - "labels": ["bug"], + "url": "https://github.com/hapijs/subtext/milestone/37", + "version": "6.0.12" + }, + { + "date": "2018-11-03T00:38:56Z", + "id": 3791362, + "issues": [ + { + "id": 377003348, + "labels": ["non issue"], + "number": 63, + "title": "Remove engines", + "url": "https://github.com/hapijs/subtext/issues/63" + } + ], "number": 36, - "title": "Pass options to built-in compressions", - "url": "https://github.com/hapijs/subtext/issues/36" - } - ], - "number": 18, - "url": "https://github.com/hapijs/subtext/milestone/18", - "version": "4.2.1" - }, - { - "date": "2016-08-26T02:22:13Z", - "id": 1954405, - "issues": [ - { - "id": 173354633, - "labels": ["feature"], + "url": "https://github.com/hapijs/subtext/milestone/36", + "version": "6.0.11" + }, + { + "date": "2018-11-02T17:51:11Z", + "id": 3788929, + "issues": [ + { + "id": 376908625, + "labels": ["bug"], + "number": 62, + "title": "Only include file headers on multipart", + "url": "https://github.com/hapijs/subtext/issues/62" + } + ], "number": 35, - "title": "Support compression options", - "url": "https://github.com/hapijs/subtext/issues/35" - } - ], - "number": 17, - "url": "https://github.com/hapijs/subtext/milestone/17", - "version": "4.2.0" - }, - { - "date": "2016-08-22T06:58:06Z", - "id": 1910303, - "issues": [ - { - "id": 172381275, - "labels": ["feature"], + "url": "https://github.com/hapijs/subtext/milestone/35", + "version": "6.0.10" + }, + { + "date": "2018-11-01T19:24:28Z", + "id": 3786531, + "issues": [ + { + "id": 376534623, + "labels": ["dependency"], + "number": 61, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/subtext/issues/61" + } + ], "number": 34, - "title": "Support external decoders", - "url": "https://github.com/hapijs/subtext/issues/34" - } - ], - "number": 16, - "url": "https://github.com/hapijs/subtext/milestone/16", - "version": "4.1.0" - }, - { - "date": "2016-07-28T19:25:13Z", - "id": 1910302, - "issues": [ - { - "id": 168175766, - "labels": ["dependency"], + "url": "https://github.com/hapijs/subtext/milestone/34", + "version": "6.0.9" + }, + { + "date": "2018-10-31T21:00:02Z", + "id": 2886902, + "issues": [ + { + "id": 376157618, + "labels": ["bug"], + "number": 60, + "title": "Handle PromiseRejectionHandledWarning", + "url": "https://github.com/hapijs/subtext/issues/60" + }, + { + "id": 375809360, + "labels": ["non issue"], + "number": 58, + "title": "Cleanup", + "url": "https://github.com/hapijs/subtext/issues/58" + } + ], "number": 33, - "title": "Update deps", - "url": "https://github.com/hapijs/subtext/issues/33" - } - ], - "number": 15, - "url": "https://github.com/hapijs/subtext/milestone/15", - "version": "4.0.5" - }, - { - "date": "2016-07-28T19:23:28Z", - "id": 1760313, - "issues": [ - { - "id": 156101024, - "labels": ["dependency"], + "url": "https://github.com/hapijs/subtext/milestone/33", + "version": "6.0.8" + }, + { + "date": "2017-11-03T20:19:27Z", + "id": 2885384, + "issues": [ + { + "id": 271107029, + "labels": ["feature"], + "number": 56, + "title": "Cleaner throw", + "url": "https://github.com/hapijs/subtext/issues/56" + } + ], + "number": 32, + "url": "https://github.com/hapijs/subtext/milestone/32", + "version": "6.0.7" + }, + { + "date": "2017-11-03T08:46:14Z", + "id": 2856592, + "issues": [ + { + "id": 270909004, + "labels": ["dependency"], + "number": 55, + "title": "Update deps", + "url": "https://github.com/hapijs/subtext/issues/55" + } + ], + "number": 31, + "url": "https://github.com/hapijs/subtext/milestone/31", + "version": "6.0.6" + }, + { + "date": "2017-10-22T08:46:03Z", + "id": 2852004, + "issues": [ + { + "id": 267447257, + "labels": ["dependency"], + "number": 54, + "title": "Update wreck", + "url": "https://github.com/hapijs/subtext/issues/54" + } + ], + "number": 30, + "url": "https://github.com/hapijs/subtext/milestone/30", + "version": "6.0.5" + }, + { + "date": "2017-10-19T17:52:32Z", + "id": 2799427, + "issues": [ + { + "id": 266930854, + "labels": ["bug", "dependency"], + "number": 53, + "title": "Update pez dependency", + "url": "https://github.com/hapijs/subtext/issues/53" + } + ], "number": 29, - "title": "update to code v3", - "url": "https://github.com/hapijs/subtext/pull/29" - } - ], - "number": 14, - "url": "https://github.com/hapijs/subtext/milestone/14", - "version": "4.0.4" - }, - { - "date": "2016-05-11T15:05:46Z", - "id": 1753861, - "issues": [ - { - "id": 154266737, - "labels": ["dependency"], + "url": "https://github.com/hapijs/subtext/milestone/29", + "version": "6.0.4" + }, + { + "date": "2017-09-28T06:29:17Z", + "id": 2799417, + "issues": [], "number": 28, - "title": "update form-data dependency to 0.2.x", - "url": "https://github.com/hapijs/subtext/issues/28" - } - ], - "number": 13, - "url": "https://github.com/hapijs/subtext/milestone/13", - "version": "4.0.3" - }, - { - "date": "2016-05-08T20:15:49Z", - "id": 1687571, - "issues": [ - { - "id": 151346105, - "labels": ["dependency"], + "url": "https://github.com/hapijs/subtext/milestone/28", + "version": "6.0.3" + }, + { + "date": "2017-09-28T06:21:32Z", + "id": 2793406, + "issues": [ + { + "id": 261205093, + "labels": ["dependency"], + "number": 52, + "title": "Update deps", + "url": "https://github.com/hapijs/subtext/issues/52" + } + ], "number": 27, - "title": "testing-node-6", - "url": "https://github.com/hapijs/subtext/pull/27" - } - ], - "number": 12, - "url": "https://github.com/hapijs/subtext/milestone/12", - "version": "4.0.2" - }, - { - "date": "2016-04-06T15:12:01Z", - "id": 1471887, - "issues": [ - { - "id": 145376831, - "labels": ["bug"], + "url": "https://github.com/hapijs/subtext/milestone/27", + "version": "6.0.2" + }, + { + "date": "2017-09-26T00:28:54Z", + "id": 2775882, + "issues": [ + { + "id": 260454428, + "labels": ["dependency"], + "number": 51, + "title": "Update content", + "url": "https://github.com/hapijs/subtext/issues/51" + } + ], "number": 26, - "title": "Return error for multipart file exceeding maxBytes", - "url": "https://github.com/hapijs/subtext/pull/26" - } - ], - "number": 11, - "url": "https://github.com/hapijs/subtext/milestone/11", - "version": "4.0.1" - }, - { - "date": "2015-12-22T21:14:23Z", - "id": 1411659, - "issues": [ - { - "id": 123548049, - "labels": ["breaking changes", "dependency"], + "url": "https://github.com/hapijs/subtext/milestone/26", + "version": "6.0.1" + }, + { + "date": "2017-09-18T22:40:20Z", + "id": 2617042, + "issues": [ + { + "id": 258642539, + "labels": ["breaking changes", "dependency"], + "number": 50, + "title": "Async interface", + "url": "https://github.com/hapijs/subtext/pull/50" + }, + { + "id": 258642231, + "labels": ["breaking changes", "feature"], + "number": 49, + "title": "Migrate to async interface", + "url": "https://github.com/hapijs/subtext/issues/49" + } + ], "number": 25, - "title": "Remove qs support. Closes #24", - "url": "https://github.com/hapijs/subtext/pull/25" - }, - { - "id": 123540060, - "labels": ["breaking changes", "dependency"], + "url": "https://github.com/hapijs/subtext/milestone/25", + "version": "6.0.0" + }, + { + "date": "2020-02-13T18:20:45Z", + "id": 4658177, + "issues": [ + { + "id": 564818758, + "labels": ["test", "dependency", "lts", "commercial"], + "number": 81, + "title": "Update deps", + "url": "https://github.com/hapijs/subtext/issues/81" + } + ], + "number": 45, + "url": "https://github.com/hapijs/subtext/milestone/45", + "version": "5.1.2" + }, + { + "date": "2019-09-13T19:42:13Z", + "id": 4170886, + "issues": [ + { + "id": 493487490, + "labels": ["bug", "commercial"], + "number": 73, + "title": "maxBytes file output", + "url": "https://github.com/hapijs/subtext/issues/73" + } + ], + "number": 41, + "url": "https://github.com/hapijs/subtext/milestone/41", + "version": "5.1.1" + }, + { + "date": "2019-03-25T18:53:49Z", + "id": 4170885, + "issues": [ + { + "id": 425036417, + "labels": ["lts"], + "number": 68, + "title": "Commercial version of v5 branch", + "url": "https://github.com/hapijs/subtext/issues/68" + } + ], + "number": 40, + "url": "https://github.com/hapijs/subtext/milestone/40", + "version": "5.1.0" + }, + { + "date": "2019-01-31T19:38:18Z", + "id": 4017345, + "issues": [ + { + "id": 405119135, + "labels": ["security", "bug", "lts"], + "number": 67, + "title": "Protect against JSON.parse() prototype poisoning", + "url": "https://github.com/hapijs/subtext/issues/67" + } + ], + "number": 38, + "url": "https://github.com/hapijs/subtext/milestone/38", + "version": "5.0.1" + }, + { + "date": "2017-07-02T18:35:21Z", + "id": 2617041, + "issues": [ + { + "id": 239230994, + "labels": ["bug", "breaking changes"], + "number": 48, + "title": "Return 413 when payload too large.", + "url": "https://github.com/hapijs/subtext/pull/48" + } + ], "number": 24, - "title": "Remove qs dependency", - "url": "https://github.com/hapijs/subtext/issues/24" - } - ], - "number": 10, - "url": "https://github.com/hapijs/subtext/milestone/10", - "version": "4.0.0" - }, - { - "date": "2015-11-14T14:01:42Z", - "id": 1390399, - "issues": [ - { - "id": 116925209, - "labels": ["bug"], - "number": 23, - "title": "Fix timeouts for multipart payloads", - "url": "https://github.com/hapijs/subtext/pull/23" - }, - { - "id": 109715540, - "labels": ["bug"], - "number": 19, - "title": "timeout for payload not working.", - "url": "https://github.com/hapijs/subtext/issues/19" - } - ], - "number": 9, - "url": "https://github.com/hapijs/subtext/milestone/9", - "version": "3.0.1" - }, - { - "date": "2015-11-03T06:12:07Z", - "id": 1385020, - "issues": [ - { - "id": 114736075, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/subtext/milestone/24", + "version": "5.0.0" + }, + { + "date": "2017-05-28T06:55:07Z", + "id": 2399858, + "issues": [ + { + "id": 231850837, + "labels": ["dependency"], + "number": 47, + "title": "Update deps.", + "url": "https://github.com/hapijs/subtext/issues/47" + } + ], "number": 22, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/subtext/issues/22" - } - ], - "number": 8, - "url": "https://github.com/hapijs/subtext/milestone/8", - "version": "3.0.0" - }, - { - "date": "2015-10-30T10:37:25Z", - "id": 1385016, - "issues": [ - { - "id": 113969883, - "labels": ["dependency"], + "url": "https://github.com/hapijs/subtext/milestone/22", + "version": "4.4.1" + }, + { + "date": "2017-03-21T06:49:19Z", + "id": 2079331, + "issues": [ + { + "id": 215643027, + "labels": ["feature"], + "number": 45, + "title": "Allow specifying custom query string parser", + "url": "https://github.com/hapijs/subtext/issues/45" + }, + { + "id": 215641704, + "labels": ["feature"], + "number": 44, + "title": "Retain raw payload when parsing fails", + "url": "https://github.com/hapijs/subtext/issues/44" + } + ], "number": 21, - "title": "Missing dependency qs@4.x.x?", - "url": "https://github.com/hapijs/subtext/issues/21" - }, - { - "id": 113947692, - "labels": ["release notes"], + "url": "https://github.com/hapijs/subtext/milestone/21", + "version": "4.4.0" + }, + { + "date": "2016-10-19T08:50:16Z", + "id": 1964237, + "issues": [ + { + "id": 183875943, + "labels": ["feature"], + "number": 41, + "title": "Support multipart override", + "url": "https://github.com/hapijs/subtext/pull/41" + }, + { + "id": 183875891, + "labels": ["feature"], + "number": 40, + "title": "Support multipart override output", + "url": "https://github.com/hapijs/subtext/issues/40" + } + ], + "number": 19, + "url": "https://github.com/hapijs/subtext/milestone/19", + "version": "4.3.0" + }, + { + "date": "2016-10-19T06:30:37Z", + "id": 2079043, + "issues": [ + { + "id": 179428066, + "labels": ["dependency"], + "number": 37, + "title": "Update dependencies", + "url": "https://github.com/hapijs/subtext/pull/37" + } + ], "number": 20, - "title": "2.0.2 tag", - "url": "https://github.com/hapijs/subtext/issues/20" - } - ], - "number": 7, - "url": "https://github.com/hapijs/subtext/milestone/7", - "version": "2.0.2" - }, - { - "date": "2015-10-30T10:35:00Z", - "id": 1250749, - "issues": [ - { - "id": 109098069, - "labels": ["dependency"], + "url": "https://github.com/hapijs/subtext/milestone/20", + "version": "4.2.2" + }, + { + "date": "2016-08-26T02:26:10Z", + "id": 1964231, + "issues": [ + { + "id": 173355122, + "labels": ["bug"], + "number": 36, + "title": "Pass options to built-in compressions", + "url": "https://github.com/hapijs/subtext/issues/36" + } + ], "number": 18, - "title": "upgrade to lab 6 and cleanup", - "url": "https://github.com/hapijs/subtext/pull/18" - }, - { - "id": 106863853, - "labels": ["test"], + "url": "https://github.com/hapijs/subtext/milestone/18", + "version": "4.2.1" + }, + { + "date": "2016-08-26T02:22:13Z", + "id": 1954405, + "issues": [ + { + "id": 173354633, + "labels": ["feature"], + "number": 35, + "title": "Support compression options", + "url": "https://github.com/hapijs/subtext/issues/35" + } + ], "number": 17, - "title": "testing different file sizes to get full code coverage", - "url": "https://github.com/hapijs/subtext/pull/17" - }, - { - "id": 105531905, - "labels": ["test"], + "url": "https://github.com/hapijs/subtext/milestone/17", + "version": "4.2.0" + }, + { + "date": "2016-08-22T06:58:06Z", + "id": 1910303, + "issues": [ + { + "id": 172381275, + "labels": ["feature"], + "number": 34, + "title": "Support external decoders", + "url": "https://github.com/hapijs/subtext/issues/34" + } + ], "number": 16, - "title": "Test coverage timing issue", - "url": "https://github.com/hapijs/subtext/issues/16" - }, - { - "id": 104399846, - "labels": ["documentation"], + "url": "https://github.com/hapijs/subtext/milestone/16", + "version": "4.1.0" + }, + { + "date": "2016-07-28T19:25:13Z", + "id": 1910302, + "issues": [ + { + "id": 168175766, + "labels": ["dependency"], + "number": 33, + "title": "Update deps", + "url": "https://github.com/hapijs/subtext/issues/33" + } + ], "number": 15, - "title": "Move API docs to its own page", - "url": "https://github.com/hapijs/subtext/pull/15" - }, - { - "id": 104399735, - "labels": ["documentation"], + "url": "https://github.com/hapijs/subtext/milestone/15", + "version": "4.0.5" + }, + { + "date": "2016-07-28T19:23:28Z", + "id": 1760313, + "issues": [ + { + "id": 156101024, + "labels": ["dependency"], + "number": 29, + "title": "update to code v3", + "url": "https://github.com/hapijs/subtext/pull/29" + } + ], "number": 14, - "title": "Move API docs to their own page", - "url": "https://github.com/hapijs/subtext/issues/14" - }, - { - "id": 103015024, - "labels": ["documentation"], + "url": "https://github.com/hapijs/subtext/milestone/14", + "version": "4.0.4" + }, + { + "date": "2016-05-11T15:05:46Z", + "id": 1753861, + "issues": [ + { + "id": 154266737, + "labels": ["dependency"], + "number": 28, + "title": "update form-data dependency to 0.2.x", + "url": "https://github.com/hapijs/subtext/issues/28" + } + ], "number": 13, - "title": "Update README with example and docs", - "url": "https://github.com/hapijs/subtext/pull/13" - } - ], - "number": 6, - "url": "https://github.com/hapijs/subtext/milestone/6", - "version": "2.0.1" - }, - { - "date": "2015-08-11T21:40:48Z", - "id": 1192821, - "issues": [ - { - "id": 100417815, - "labels": ["feature"], + "url": "https://github.com/hapijs/subtext/milestone/13", + "version": "4.0.3" + }, + { + "date": "2016-05-08T20:15:49Z", + "id": 1687571, + "issues": [ + { + "id": 151346105, + "labels": ["dependency"], + "number": 27, + "title": "testing-node-6", + "url": "https://github.com/hapijs/subtext/pull/27" + } + ], "number": 12, - "title": "Default mime type option", - "url": "https://github.com/hapijs/subtext/issues/12" - }, - { - "id": 100414961, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/subtext/milestone/12", + "version": "4.0.2" + }, + { + "date": "2016-04-06T15:12:01Z", + "id": 1471887, + "issues": [ + { + "id": 145376831, + "labels": ["bug"], + "number": 26, + "title": "Return error for multipart file exceeding maxBytes", + "url": "https://github.com/hapijs/subtext/pull/26" + } + ], "number": 11, - "title": "Change empty representations", - "url": "https://github.com/hapijs/subtext/issues/11" - }, - { - "id": 100414547, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/subtext/milestone/11", + "version": "4.0.1" + }, + { + "date": "2015-12-22T21:14:23Z", + "id": 1411659, + "issues": [ + { + "id": 123548049, + "labels": ["breaking changes", "dependency"], + "number": 25, + "title": "Remove qs support. Closes #24", + "url": "https://github.com/hapijs/subtext/pull/25" + }, + { + "id": 123540060, + "labels": ["breaking changes", "dependency"], + "number": 24, + "title": "Remove qs dependency", + "url": "https://github.com/hapijs/subtext/issues/24" + } + ], "number": 10, - "title": "Change default mime type to application/octet-stream", - "url": "https://github.com/hapijs/subtext/issues/10" - } - ], - "number": 5, - "url": "https://github.com/hapijs/subtext/milestone/5", - "version": "2.0.0" - }, - { - "date": "2015-07-03T22:40:29Z", - "id": 1188303, - "issues": [ - { - "id": 56414570, - "labels": ["bug", "dependency"], - "number": 5, - "title": "Error for payloads with content-encoding that fail maxBytes test", - "url": "https://github.com/hapijs/subtext/issues/5" - } - ], - "number": 4, - "url": "https://github.com/hapijs/subtext/milestone/4", - "version": "1.1.1" - }, - { - "date": "2015-07-01T04:06:22Z", - "id": 857048, - "issues": [ - { - "id": 88056557, - "labels": ["bug"], + "url": "https://github.com/hapijs/subtext/milestone/10", + "version": "4.0.0" + }, + { + "date": "2015-11-14T14:01:42Z", + "id": 1390399, + "issues": [ + { + "id": 116925209, + "labels": ["bug"], + "number": 23, + "title": "Fix timeouts for multipart payloads", + "url": "https://github.com/hapijs/subtext/pull/23" + }, + { + "id": 109715540, + "labels": ["bug"], + "number": 19, + "title": "timeout for payload not working.", + "url": "https://github.com/hapijs/subtext/issues/19" + } + ], "number": 9, - "title": "Don't catch synchronous handler errors", - "url": "https://github.com/hapijs/subtext/pull/9" - }, - { - "id": 64018925, - "labels": ["feature"], + "url": "https://github.com/hapijs/subtext/milestone/9", + "version": "3.0.1" + }, + { + "date": "2015-11-03T06:12:07Z", + "id": 1385020, + "issues": [ + { + "id": 114736075, + "labels": ["breaking changes"], + "number": 22, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/subtext/issues/22" + } + ], + "number": 8, + "url": "https://github.com/hapijs/subtext/milestone/8", + "version": "3.0.0" + }, + { + "date": "2015-10-30T10:37:25Z", + "id": 1385016, + "issues": [ + { + "id": 113969883, + "labels": ["dependency"], + "number": 21, + "title": "Missing dependency qs@4.x.x?", + "url": "https://github.com/hapijs/subtext/issues/21" + }, + { + "id": 113947692, + "labels": ["release notes"], + "number": 20, + "title": "2.0.2 tag", + "url": "https://github.com/hapijs/subtext/issues/20" + } + ], "number": 7, - "title": "adding the ability to pass qs options like arrayLimit", - "url": "https://github.com/hapijs/subtext/pull/7" - } - ], - "number": 3, - "url": "https://github.com/hapijs/subtext/milestone/3", - "version": "1.1.0" - }, - { - "date": "2014-11-07T08:20:06Z", - "id": 812000, - "issues": [ - { - "id": 48058530, - "labels": ["bug"], + "url": "https://github.com/hapijs/subtext/milestone/7", + "version": "2.0.2" + }, + { + "date": "2015-10-30T10:35:00Z", + "id": 1250749, + "issues": [ + { + "id": 109098069, + "labels": ["dependency"], + "number": 18, + "title": "upgrade to lab 6 and cleanup", + "url": "https://github.com/hapijs/subtext/pull/18" + }, + { + "id": 106863853, + "labels": ["test"], + "number": 17, + "title": "testing different file sizes to get full code coverage", + "url": "https://github.com/hapijs/subtext/pull/17" + }, + { + "id": 105531905, + "labels": ["test"], + "number": 16, + "title": "Test coverage timing issue", + "url": "https://github.com/hapijs/subtext/issues/16" + }, + { + "id": 104399846, + "labels": ["documentation"], + "number": 15, + "title": "Move API docs to its own page", + "url": "https://github.com/hapijs/subtext/pull/15" + }, + { + "id": 104399735, + "labels": ["documentation"], + "number": 14, + "title": "Move API docs to their own page", + "url": "https://github.com/hapijs/subtext/issues/14" + }, + { + "id": 103015024, + "labels": ["documentation"], + "number": 13, + "title": "Update README with example and docs", + "url": "https://github.com/hapijs/subtext/pull/13" + } + ], + "number": 6, + "url": "https://github.com/hapijs/subtext/milestone/6", + "version": "2.0.1" + }, + { + "date": "2015-08-11T21:40:48Z", + "id": 1192821, + "issues": [ + { + "id": 100417815, + "labels": ["feature"], + "number": 12, + "title": "Default mime type option", + "url": "https://github.com/hapijs/subtext/issues/12" + }, + { + "id": 100414961, + "labels": ["breaking changes"], + "number": 11, + "title": "Change empty representations", + "url": "https://github.com/hapijs/subtext/issues/11" + }, + { + "id": 100414547, + "labels": ["breaking changes"], + "number": 10, + "title": "Change default mime type to application/octet-stream", + "url": "https://github.com/hapijs/subtext/issues/10" + } + ], + "number": 5, + "url": "https://github.com/hapijs/subtext/milestone/5", + "version": "2.0.0" + }, + { + "date": "2015-07-03T22:40:29Z", + "id": 1188303, + "issues": [ + { + "id": 56414570, + "labels": ["bug", "dependency"], + "number": 5, + "title": "Error for payloads with content-encoding that fail maxBytes test", + "url": "https://github.com/hapijs/subtext/issues/5" + } + ], + "number": 4, + "url": "https://github.com/hapijs/subtext/milestone/4", + "version": "1.1.1" + }, + { + "date": "2015-07-01T04:06:22Z", + "id": 857048, + "issues": [ + { + "id": 88056557, + "labels": ["bug"], + "number": 9, + "title": "Don't catch synchronous handler errors", + "url": "https://github.com/hapijs/subtext/pull/9" + }, + { + "id": 64018925, + "labels": ["feature"], + "number": 7, + "title": "adding the ability to pass qs options like arrayLimit", + "url": "https://github.com/hapijs/subtext/pull/7" + } + ], + "number": 3, + "url": "https://github.com/hapijs/subtext/milestone/3", + "version": "1.1.0" + }, + { + "date": "2014-11-07T08:20:06Z", + "id": 812000, + "issues": [ + { + "id": 48058530, + "labels": ["bug"], + "number": 1, + "title": "Files left behind when request aborts", + "url": "https://github.com/hapijs/subtext/issues/1" + } + ], + "number": 2, + "url": "https://github.com/hapijs/subtext/milestone/2", + "version": "1.0.2" + }, + { + "date": "2014-10-02T21:44:05Z", + "id": 811766, + "issues": [], "number": 1, - "title": "Files left behind when request aborts", - "url": "https://github.com/hapijs/subtext/issues/1" - } - ], - "number": 2, - "url": "https://github.com/hapijs/subtext/milestone/2", - "version": "1.0.2" - }, - { - "date": "2014-10-02T21:44:05Z", - "id": 811766, - "issues": [], - "number": 1, - "url": "https://github.com/hapijs/subtext/milestone/1", - "version": "1.0.1" - } + "url": "https://github.com/hapijs/subtext/milestone/1", + "version": "1.0.1" + } ] diff --git a/generated/modules/subtext/info.json b/generated/modules/subtext/info.json index 11f76098..c755af8f 100644 --- a/generated/modules/subtext/info.json +++ b/generated/modules/subtext/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 26, - "isPlugin": false, - "link": "https://github.com/hapijs/subtext", - "name": "subtext", - "package": "@hapi/subtext", - "slogan": "HTTP payload parser.", - "sloganHtml": "HTTP payload parser.", - "stars": 24, - "updated": "2026-04-02T08:19:58Z", - "versions": [ - { - "branch": "v8.1.2", - "license": "BSD", - "name": "8.1.2", - "node": ">= 16" - } - ], - "versionsArray": ["8.1.2"], - "latestVersion": "8.x.x" + "api": true, + "forks": 26, + "isPlugin": false, + "latestVersion": "8.x.x", + "link": "https://github.com/hapijs/subtext", + "name": "subtext", + "package": "@hapi/subtext", + "slogan": "HTTP payload parser.", + "sloganHtml": "HTTP payload parser.", + "stars": 24, + "updated": "2026-05-06T10:24:33Z", + "versions": [ + { + "branch": "v8.1.3", + "license": "BSD", + "name": "8.1.3", + "node": ">= 16" + } + ], + "versionsArray": ["8.1.3"] } diff --git a/generated/modules/teamwork/changelog.json b/generated/modules/teamwork/changelog.json index ba0eaef5..4c6973b8 100644 --- a/generated/modules/teamwork/changelog.json +++ b/generated/modules/teamwork/changelog.json @@ -1,363 +1,363 @@ [ - { - "date": "2025-08-21T15:05:34Z", - "id": 7953220, - "issues": [ - { - "id": 3339344151, - "labels": ["bug"], - "number": 39, - "title": "Handle non-integer and empty meetings", - "url": "https://github.com/hapijs/teamwork/pull/39" - }, - { - "id": 3338315379, - "labels": ["bug"], - "number": 38, - "title": "Properly handle multiple iterators for Events", - "url": "https://github.com/hapijs/teamwork/pull/38" - }, - { - "id": 3337340434, - "labels": ["bug"], - "number": 37, - "title": "Fix regroup() to work after team error", - "url": "https://github.com/hapijs/teamwork/pull/37" - }, - { - "id": 3330888322, - "labels": ["bug"], - "number": 36, - "title": "Regroup should return the work output", - "url": "https://github.com/hapijs/teamwork/issues/36" - } - ], - "number": 21, - "url": "https://github.com/hapijs/teamwork/milestone/21", - "version": "6.0.1" - }, - { - "date": "2022-05-07T01:05:19Z", - "id": 7953219, - "issues": [ - { - "id": 1227417223, - "labels": ["breaking changes", "dependency"], - "number": 34, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/teamwork/pull/34" - } - ], - "number": 20, - "url": "https://github.com/hapijs/teamwork/milestone/20", - "version": "6.0.0" - }, - { - "date": "2022-04-13T11:29:46Z", - "id": 5392640, - "issues": [ - { - "id": 1175345197, - "labels": ["bug"], - "number": 33, - "title": "Fix memory leaks on attend for infinite teamwork instance", - "url": "https://github.com/hapijs/teamwork/pull/33" - }, - { - "id": 709597279, - "labels": [], - "number": 28, - "title": "upgrade lab to v24 and devDependency of typescript", - "url": "https://github.com/hapijs/teamwork/pull/28" - } - ], - "number": 18, - "url": "https://github.com/hapijs/teamwork/milestone/18", - "version": "5.1.1" - }, - { - "date": "2020-05-07T04:40:03Z", - "id": 5225830, - "issues": [ - { - "id": 586295054, - "labels": ["feature"], - "number": 26, - "title": "Add strict mode", - "url": "https://github.com/hapijs/teamwork/pull/26" - } - ], - "number": 17, - "url": "https://github.com/hapijs/teamwork/milestone/17", - "version": "5.1.0" - }, - { - "date": "2020-03-23T01:10:32Z", - "id": 4973187, - "issues": [ - { - "id": 585862127, - "labels": ["breaking changes", "types"], - "number": 25, - "title": "Move Options to Team.Options", - "url": "https://github.com/hapijs/teamwork/issues/25" - }, - { - "id": 585861971, - "labels": ["feature"], - "number": 24, - "title": "Add events iterator", - "url": "https://github.com/hapijs/teamwork/issues/24" - } - ], - "number": 16, - "url": "https://github.com/hapijs/teamwork/milestone/16", - "version": "5.0.0" - }, - { - "date": "2020-01-04T23:17:35Z", - "id": 4973186, - "issues": [ - { - "id": 545343771, - "labels": ["breaking changes"], + { + "date": "2025-08-21T15:05:34Z", + "id": 7953220, + "issues": [ + { + "id": 3339344151, + "labels": ["bug"], + "number": 39, + "title": "Handle non-integer and empty meetings", + "url": "https://github.com/hapijs/teamwork/pull/39" + }, + { + "id": 3338315379, + "labels": ["bug"], + "number": 38, + "title": "Properly handle multiple iterators for Events", + "url": "https://github.com/hapijs/teamwork/pull/38" + }, + { + "id": 3337340434, + "labels": ["bug"], + "number": 37, + "title": "Fix regroup() to work after team error", + "url": "https://github.com/hapijs/teamwork/pull/37" + }, + { + "id": 3330888322, + "labels": ["bug"], + "number": 36, + "title": "Regroup should return the work output", + "url": "https://github.com/hapijs/teamwork/issues/36" + } + ], + "number": 21, + "url": "https://github.com/hapijs/teamwork/milestone/21", + "version": "6.0.1" + }, + { + "date": "2022-05-07T01:05:19Z", + "id": 7953219, + "issues": [ + { + "id": 1227417223, + "labels": ["breaking changes", "dependency"], + "number": 34, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/teamwork/pull/34" + } + ], "number": 20, - "title": "Change module to export Team instead of default class", - "url": "https://github.com/hapijs/teamwork/issues/20" - }, - { - "id": 545342020, - "labels": ["breaking changes", "dependency"], - "number": 19, - "title": "Only node 12", - "url": "https://github.com/hapijs/teamwork/issues/19" - }, - { - "id": 528392315, - "labels": ["bug"], + "url": "https://github.com/hapijs/teamwork/milestone/20", + "version": "6.0.0" + }, + { + "date": "2022-04-13T11:29:46Z", + "id": 5392640, + "issues": [ + { + "id": 1175345197, + "labels": ["bug"], + "number": 33, + "title": "Fix memory leaks on attend for infinite teamwork instance", + "url": "https://github.com/hapijs/teamwork/pull/33" + }, + { + "id": 709597279, + "labels": [], + "number": 28, + "title": "upgrade lab to v24 and devDependency of typescript", + "url": "https://github.com/hapijs/teamwork/pull/28" + } + ], "number": 18, - "title": "Initialize all properties in constructor", - "url": "https://github.com/hapijs/teamwork/issues/18" - } - ], - "number": 15, - "url": "https://github.com/hapijs/teamwork/milestone/15", - "version": "4.0.0" - }, - { - "date": "2020-07-16T23:48:10Z", - "id": 4320086, - "issues": [], - "number": 14, - "url": "https://github.com/hapijs/teamwork/milestone/14", - "version": "3.3.2" - }, - { - "date": "2019-05-16T08:13:48Z", - "id": 4191064, - "issues": [ - { - "id": 444813872, - "labels": ["dependency"], + "url": "https://github.com/hapijs/teamwork/milestone/18", + "version": "5.1.1" + }, + { + "date": "2020-05-07T04:40:03Z", + "id": 5225830, + "issues": [ + { + "id": 586295054, + "labels": ["feature"], + "number": 26, + "title": "Add strict mode", + "url": "https://github.com/hapijs/teamwork/pull/26" + } + ], + "number": 17, + "url": "https://github.com/hapijs/teamwork/milestone/17", + "version": "5.1.0" + }, + { + "date": "2020-03-23T01:10:32Z", + "id": 4973187, + "issues": [ + { + "id": 585862127, + "labels": ["breaking changes", "types"], + "number": 25, + "title": "Move Options to Team.Options", + "url": "https://github.com/hapijs/teamwork/issues/25" + }, + { + "id": 585861971, + "labels": ["feature"], + "number": 24, + "title": "Add events iterator", + "url": "https://github.com/hapijs/teamwork/issues/24" + } + ], + "number": 16, + "url": "https://github.com/hapijs/teamwork/milestone/16", + "version": "5.0.0" + }, + { + "date": "2020-01-04T23:17:35Z", + "id": 4973186, + "issues": [ + { + "id": 545343771, + "labels": ["breaking changes"], + "number": 20, + "title": "Change module to export Team instead of default class", + "url": "https://github.com/hapijs/teamwork/issues/20" + }, + { + "id": 545342020, + "labels": ["breaking changes", "dependency"], + "number": 19, + "title": "Only node 12", + "url": "https://github.com/hapijs/teamwork/issues/19" + }, + { + "id": 528392315, + "labels": ["bug"], + "number": 18, + "title": "Initialize all properties in constructor", + "url": "https://github.com/hapijs/teamwork/issues/18" + } + ], "number": 15, - "title": "Update deps", - "url": "https://github.com/hapijs/teamwork/issues/15" - } - ], - "number": 13, - "url": "https://github.com/hapijs/teamwork/milestone/13", - "version": "3.3.1" - }, - { - "date": "2019-04-01T19:50:50Z", - "id": 4174490, - "issues": [ - { - "id": 427881157, - "labels": ["dependency"], + "url": "https://github.com/hapijs/teamwork/milestone/15", + "version": "4.0.0" + }, + { + "date": "2020-07-16T23:48:10Z", + "id": 4320086, + "issues": [], + "number": 14, + "url": "https://github.com/hapijs/teamwork/milestone/14", + "version": "3.3.2" + }, + { + "date": "2019-05-16T08:13:48Z", + "id": 4191064, + "issues": [ + { + "id": 444813872, + "labels": ["dependency"], + "number": 15, + "title": "Update deps", + "url": "https://github.com/hapijs/teamwork/issues/15" + } + ], "number": 13, - "title": "Change module namespace", - "url": "https://github.com/hapijs/teamwork/issues/13" - } - ], - "number": 12, - "url": "https://github.com/hapijs/teamwork/milestone/12", - "version": "3.3.0" - }, - { - "date": "2019-03-26T17:59:27Z", - "id": 4135251, - "issues": [ - { - "id": 423522083, - "labels": ["types"], + "url": "https://github.com/hapijs/teamwork/milestone/13", + "version": "3.3.1" + }, + { + "date": "2019-04-01T19:50:50Z", + "id": 4174490, + "issues": [ + { + "id": 427881157, + "labels": ["dependency"], + "number": 13, + "title": "Change module namespace", + "url": "https://github.com/hapijs/teamwork/issues/13" + } + ], "number": 12, - "title": "Add TypeScript definitions", - "url": "https://github.com/hapijs/teamwork/pull/12" - } - ], - "number": 11, - "url": "https://github.com/hapijs/teamwork/milestone/11", - "version": "3.2.0" - }, - { - "date": "2019-03-13T00:08:53Z", - "id": 3792578, - "issues": [ - { - "id": 420259436, - "labels": ["feature"], + "url": "https://github.com/hapijs/teamwork/milestone/12", + "version": "3.3.0" + }, + { + "date": "2019-03-26T17:59:27Z", + "id": 4135251, + "issues": [ + { + "id": 423522083, + "labels": ["types"], + "number": 12, + "title": "Add TypeScript definitions", + "url": "https://github.com/hapijs/teamwork/pull/12" + } + ], "number": 11, - "title": "Support regroup()", - "url": "https://github.com/hapijs/teamwork/issues/11" - } - ], - "number": 10, - "url": "https://github.com/hapijs/teamwork/milestone/10", - "version": "3.1.0" - }, - { - "date": "2018-11-03T07:45:33Z", - "id": 3792339, - "issues": [ - { - "id": 377032631, - "labels": ["non issue"], + "url": "https://github.com/hapijs/teamwork/milestone/11", + "version": "3.2.0" + }, + { + "date": "2019-03-13T00:08:53Z", + "id": 3792578, + "issues": [ + { + "id": 420259436, + "labels": ["feature"], + "number": 11, + "title": "Support regroup()", + "url": "https://github.com/hapijs/teamwork/issues/11" + } + ], + "number": 10, + "url": "https://github.com/hapijs/teamwork/milestone/10", + "version": "3.1.0" + }, + { + "date": "2018-11-03T07:45:33Z", + "id": 3792339, + "issues": [ + { + "id": 377032631, + "labels": ["non issue"], + "number": 9, + "title": "Relocate to hapi org", + "url": "https://github.com/hapijs/teamwork/issues/9" + } + ], "number": 9, - "title": "Relocate to hapi org", - "url": "https://github.com/hapijs/teamwork/issues/9" - } - ], - "number": 9, - "url": "https://github.com/hapijs/teamwork/milestone/9", - "version": "3.0.3" - }, - { - "date": "2018-11-03T00:48:39Z", - "id": 2866593, - "issues": [ - { - "id": 377007685, - "labels": ["non issue"], + "url": "https://github.com/hapijs/teamwork/milestone/9", + "version": "3.0.3" + }, + { + "date": "2018-11-03T00:48:39Z", + "id": 2866593, + "issues": [ + { + "id": 377007685, + "labels": ["non issue"], + "number": 8, + "title": "Remove engines", + "url": "https://github.com/hapijs/teamwork/issues/8" + } + ], "number": 8, - "title": "Remove engines", - "url": "https://github.com/hapijs/teamwork/issues/8" - } - ], - "number": 8, - "url": "https://github.com/hapijs/teamwork/milestone/8", - "version": "3.0.2" - }, - { - "date": "2018-11-03T00:47:55Z", - "id": 2866592, - "issues": [ - { - "id": 268642588, - "labels": ["feature", "breaking changes"], + "url": "https://github.com/hapijs/teamwork/milestone/8", + "version": "3.0.2" + }, + { + "date": "2018-11-03T00:47:55Z", + "id": 2866592, + "issues": [ + { + "id": 268642588, + "labels": ["feature", "breaking changes"], + "number": 7, + "title": "Remove Team", + "url": "https://github.com/hapijs/teamwork/issues/7" + } + ], "number": 7, - "title": "Remove Team", - "url": "https://github.com/hapijs/teamwork/issues/7" - } - ], - "number": 7, - "url": "https://github.com/hapijs/teamwork/milestone/7", - "version": "3.0.1" - }, - { - "date": "2017-10-26T06:23:44Z", - "id": 2787210, - "issues": [ - { - "id": 268622464, - "labels": ["feature", "breaking changes"], + "url": "https://github.com/hapijs/teamwork/milestone/7", + "version": "3.0.1" + }, + { + "date": "2017-10-26T06:23:44Z", + "id": 2787210, + "issues": [ + { + "id": 268622464, + "labels": ["feature", "breaking changes"], + "number": 6, + "title": "Remove members and add notes support", + "url": "https://github.com/hapijs/teamwork/issues/6" + } + ], "number": 6, - "title": "Remove members and add notes support", - "url": "https://github.com/hapijs/teamwork/issues/6" - } - ], - "number": 6, - "url": "https://github.com/hapijs/teamwork/milestone/6", - "version": "3.0.0" - }, - { - "date": "2017-09-23T22:11:31Z", - "id": 2787209, - "issues": [ - { - "id": 260041969, - "labels": ["feature"], + "url": "https://github.com/hapijs/teamwork/milestone/6", + "version": "3.0.0" + }, + { + "date": "2017-09-23T22:11:31Z", + "id": 2787209, + "issues": [ + { + "id": 260041969, + "labels": ["feature"], + "number": 5, + "title": "Add options", + "url": "https://github.com/hapijs/teamwork/issues/5" + } + ], "number": 5, - "title": "Add options", - "url": "https://github.com/hapijs/teamwork/issues/5" - } - ], - "number": 5, - "url": "https://github.com/hapijs/teamwork/milestone/5", - "version": "2.1.0" - }, - { - "date": "2017-09-23T22:07:08Z", - "id": 2167961, - "issues": [ - { - "id": 260041781, - "labels": ["feature", "breaking changes"], + "url": "https://github.com/hapijs/teamwork/milestone/5", + "version": "2.1.0" + }, + { + "date": "2017-09-23T22:07:08Z", + "id": 2167961, + "issues": [ + { + "id": 260041781, + "labels": ["feature", "breaking changes"], + "number": 4, + "title": "Migrate to async/await interface", + "url": "https://github.com/hapijs/teamwork/issues/4" + } + ], "number": 4, - "title": "Migrate to async/await interface", - "url": "https://github.com/hapijs/teamwork/issues/4" - } - ], - "number": 4, - "url": "https://github.com/hapijs/teamwork/milestone/4", - "version": "2.0.0" - }, - { - "date": "2016-12-01T06:01:25Z", - "id": 1910692, - "issues": [ - { - "id": 192761114, - "labels": ["dependency"], + "url": "https://github.com/hapijs/teamwork/milestone/4", + "version": "2.0.0" + }, + { + "date": "2016-12-01T06:01:25Z", + "id": 1910692, + "issues": [ + { + "id": 192761114, + "labels": ["dependency"], + "number": 3, + "title": "Update deps", + "url": "https://github.com/hapijs/teamwork/issues/3" + } + ], "number": 3, - "title": "Update deps", - "url": "https://github.com/hapijs/teamwork/issues/3" - } - ], - "number": 3, - "url": "https://github.com/hapijs/teamwork/milestone/3", - "version": "1.1.2" - }, - { - "date": "2016-07-28T23:10:26Z", - "id": 1393155, - "issues": [ - { - "id": 168217551, - "labels": ["dependency"], + "url": "https://github.com/hapijs/teamwork/milestone/3", + "version": "1.1.2" + }, + { + "date": "2016-07-28T23:10:26Z", + "id": 1393155, + "issues": [ + { + "id": 168217551, + "labels": ["dependency"], + "number": 2, + "title": "Update deps", + "url": "https://github.com/hapijs/teamwork/issues/2" + } + ], "number": 2, - "title": "Update deps", - "url": "https://github.com/hapijs/teamwork/issues/2" - } - ], - "number": 2, - "url": "https://github.com/hapijs/teamwork/milestone/2", - "version": "1.1.1" - }, - { - "date": "2015-11-04T08:14:34Z", - "id": 1393117, - "issues": [ - { - "id": 114993676, - "labels": ["feature"], + "url": "https://github.com/hapijs/teamwork/milestone/2", + "version": "1.1.1" + }, + { + "date": "2015-11-04T08:14:34Z", + "id": 1393117, + "issues": [ + { + "id": 114993676, + "labels": ["feature"], + "number": 1, + "title": "Add meetings()", + "url": "https://github.com/hapijs/teamwork/issues/1" + } + ], "number": 1, - "title": "Add meetings()", - "url": "https://github.com/hapijs/teamwork/issues/1" - } - ], - "number": 1, - "url": "https://github.com/hapijs/teamwork/milestone/1", - "version": "1.1.0" - } + "url": "https://github.com/hapijs/teamwork/milestone/1", + "version": "1.1.0" + } ] diff --git a/generated/modules/teamwork/info.json b/generated/modules/teamwork/info.json index 81445a16..0d9218dc 100644 --- a/generated/modules/teamwork/info.json +++ b/generated/modules/teamwork/info.json @@ -1,22 +1,22 @@ { - "api": false, - "forks": 13, - "isPlugin": false, - "link": "https://github.com/hapijs/teamwork", - "name": "teamwork", - "package": "@hapi/teamwork", - "slogan": "Wait for multiple callbacks", - "sloganHtml": "Wait for multiple callbacks", - "stars": 14, - "updated": "2025-08-21T15:04:16Z", - "versions": [ - { - "branch": "v6.0.1", - "license": "BSD", - "name": "6.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.1"], - "latestVersion": "6.x.x" + "api": false, + "forks": 13, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/teamwork", + "name": "teamwork", + "package": "@hapi/teamwork", + "slogan": "Wait for multiple callbacks", + "sloganHtml": "Wait for multiple callbacks", + "stars": 14, + "updated": "2025-08-21T15:04:16Z", + "versions": [ + { + "branch": "v6.0.1", + "license": "BSD", + "name": "6.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.1"] } diff --git a/generated/modules/topo/changelog.json b/generated/modules/topo/changelog.json index 63fc9c06..5809fab1 100644 --- a/generated/modules/topo/changelog.json +++ b/generated/modules/topo/changelog.json @@ -1,502 +1,502 @@ [ - { - "date": "2023-02-11T18:39:18Z", - "id": 7933522, - "issues": [ - { - "id": 1551763339, - "labels": [], - "number": 70, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/topo/pull/70" - } - ], - "number": 32, - "url": "https://github.com/hapijs/topo/milestone/32", - "version": "6.0.1" - }, - { - "date": "2023-02-11T18:38:17Z", - "id": 7933521, - "issues": [ - { - "id": 1222424260, - "labels": ["dependency", "breaking changes"], - "number": 69, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/topo/pull/69" - } - ], - "number": 31, - "url": "https://github.com/hapijs/topo/milestone/31", - "version": "6.0.0" - }, - { - "date": "2021-06-28T21:54:35Z", - "id": 6896824, - "issues": [ - { - "id": 931027686, - "labels": ["feature"], - "number": 66, - "title": "Support manual sorting (performance)", - "url": "https://github.com/hapijs/topo/pull/66" - }, - { - "id": 709597599, - "labels": [], - "number": 64, - "title": "upgrade lab to v24 and devDependency of typescript", - "url": "https://github.com/hapijs/topo/pull/64" - } - ], - "number": 29, - "url": "https://github.com/hapijs/topo/milestone/29", - "version": "5.1.0" - }, - { - "date": "2020-01-04T09:03:46Z", - "id": 4972536, - "issues": [ - { - "id": 545261286, - "labels": ["dependency", "breaking changes"], - "number": 61, - "title": "Only node 12", - "url": "https://github.com/hapijs/topo/issues/61" - } - ], - "number": 27, - "url": "https://github.com/hapijs/topo/milestone/27", - "version": "5.0.0" - }, - { - "date": "2019-10-11T21:01:33Z", - "id": 4724612, - "issues": [ - { - "id": 504722666, - "labels": ["bug", "dependency"], - "number": 57, - "title": "Adjust hoek to `^8.3.x`", - "url": "https://github.com/hapijs/topo/pull/57" - } - ], - "number": 23, - "url": "https://github.com/hapijs/topo/milestone/23", - "version": "4.0.1" - }, - { - "date": "2019-10-06T04:14:54Z", - "id": 4724611, - "issues": [ - { - "id": 503048209, - "labels": ["breaking changes"], - "number": 55, - "title": "Move default export to Sorter", - "url": "https://github.com/hapijs/topo/issues/55" - }, - { - "id": 503048144, - "labels": ["dependency", "breaking changes"], - "number": 54, - "title": "Drop node 8", - "url": "https://github.com/hapijs/topo/issues/54" - } - ], - "number": 22, - "url": "https://github.com/hapijs/topo/milestone/22", - "version": "4.0.0" - }, - { - "date": "2019-10-11T21:01:31Z", - "id": 4724618, - "issues": [ - { - "id": 506055401, - "labels": ["bug", "dependency"], - "number": 58, - "title": "Update hoek dep", - "url": "https://github.com/hapijs/topo/issues/58" - } - ], - "number": 24, - "url": "https://github.com/hapijs/topo/milestone/24", - "version": "3.1.6" - }, - { - "date": "2019-10-06T04:13:19Z", - "id": 4675625, - "issues": [ - { - "id": 503048260, - "labels": ["bug", "types"], - "number": 56, - "title": "Remove types", - "url": "https://github.com/hapijs/topo/issues/56" - } - ], - "number": 21, - "url": "https://github.com/hapijs/topo/milestone/21", - "version": "3.1.5" - }, - { - "date": "2019-09-19T22:17:36Z", - "id": 4556619, - "issues": [ - { - "id": 487394016, - "labels": ["types"], - "number": 46, - "title": "Added TS declarations", - "url": "https://github.com/hapijs/topo/pull/46" - } - ], - "number": 20, - "url": "https://github.com/hapijs/topo/milestone/20", - "version": "3.1.4" - }, - { - "date": "2019-08-07T21:54:45Z", - "id": 4444145, - "issues": [ - { - "id": 478156648, - "labels": ["dependency"], - "number": 43, - "title": "Direct hoek method require", - "url": "https://github.com/hapijs/topo/issues/43" - } - ], - "number": 19, - "url": "https://github.com/hapijs/topo/milestone/19", - "version": "3.1.3" - }, - { - "date": "2019-06-26T18:51:16Z", - "id": 4184499, - "issues": [ - { - "id": 461127334, - "labels": ["dependency"], - "number": 42, - "title": "Update deps", - "url": "https://github.com/hapijs/topo/issues/42" - } - ], - "number": 18, - "url": "https://github.com/hapijs/topo/milestone/18", - "version": "3.1.2" - }, - { - "date": "2019-03-29T22:38:28Z", - "id": 4184256, - "issues": [ - { - "id": 427202809, - "labels": ["dependency"], - "number": 41, - "title": "Update deps", - "url": "https://github.com/hapijs/topo/issues/41" - } - ], - "number": 17, - "url": "https://github.com/hapijs/topo/milestone/17", - "version": "3.1.1" - }, - { - "date": "2019-03-29T20:02:17Z", - "id": 3792293, - "issues": [ - { - "id": 427155448, - "labels": ["non issue"], - "number": 40, - "title": "Change module namespace", - "url": "https://github.com/hapijs/topo/issues/40" - } - ], - "number": 14, - "url": "https://github.com/hapijs/topo/milestone/14", - "version": "3.1.0" - }, - { - "date": "2018-11-03T00:39:46Z", - "id": 3788934, - "issues": [ - { - "id": 377003424, - "labels": ["non issue"], - "number": 35, - "title": "Remove engines", - "url": "https://github.com/hapijs/topo/issues/35" - } - ], - "number": 13, - "url": "https://github.com/hapijs/topo/milestone/13", - "version": "3.0.3" - }, - { - "date": "2018-11-01T19:26:29Z", - "id": 3786771, - "issues": [ - { - "id": 376535118, - "labels": ["dependency"], - "number": 33, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/topo/issues/33" - } - ], - "number": 12, - "url": "https://github.com/hapijs/topo/milestone/12", - "version": "3.0.2" - }, - { - "date": "2018-10-31T23:52:08Z", - "id": 2794180, - "issues": [ - { - "id": 376202435, - "labels": ["non issue"], + { + "date": "2023-02-11T18:39:18Z", + "id": 7933522, + "issues": [ + { + "id": 1551763339, + "labels": [], + "number": 70, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/topo/pull/70" + } + ], + "number": 32, + "url": "https://github.com/hapijs/topo/milestone/32", + "version": "6.0.1" + }, + { + "date": "2023-02-11T18:38:17Z", + "id": 7933521, + "issues": [ + { + "id": 1222424260, + "labels": ["dependency", "breaking changes"], + "number": 69, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/topo/pull/69" + } + ], "number": 31, - "title": "Cleanup", - "url": "https://github.com/hapijs/topo/issues/31" - }, - { - "id": 347253231, - "labels": [], - "number": 30, - "title": "Update implementation to use classes. Update license and travis.", - "url": "https://github.com/hapijs/topo/pull/30" - } - ], - "number": 11, - "url": "https://github.com/hapijs/topo/milestone/11", - "version": "3.0.1" - }, - { - "date": "2017-09-26T09:01:28Z", - "id": 2794179, - "issues": [ - { - "id": 260545467, - "labels": ["breaking changes"], - "number": 28, - "title": "Node 8", - "url": "https://github.com/hapijs/topo/issues/28" - } - ], - "number": 10, - "url": "https://github.com/hapijs/topo/milestone/10", - "version": "3.0.0" - }, - { - "date": "2019-03-22T06:44:53Z", - "id": 4162845, - "issues": [ - { - "id": 424066166, - "labels": ["lts"], - "number": 39, - "title": "Commercial version of v2 branch", - "url": "https://github.com/hapijs/topo/issues/39" - } - ], - "number": 15, - "url": "https://github.com/hapijs/topo/milestone/15", - "version": "2.1.0" - }, - { - "date": "2017-09-26T09:00:44Z", - "id": 1955971, - "issues": [ - { - "id": 192190040, - "labels": ["feature"], - "number": 26, - "title": "Cleanup sort routine, clarify usage of seq vs index", - "url": "https://github.com/hapijs/topo/pull/26" - } - ], - "number": 9, - "url": "https://github.com/hapijs/topo/milestone/9", - "version": "2.0.3" - }, - { - "date": "2016-07-17T18:46:24Z", - "id": 1777544, - "issues": [ - { - "id": 165935653, - "labels": ["bug"], - "number": 25, - "title": "Ensure groups can be named after props of Object.prototype", - "url": "https://github.com/hapijs/topo/pull/25" - }, - { - "id": 165791581, - "labels": ["bug"], + "url": "https://github.com/hapijs/topo/milestone/31", + "version": "6.0.0" + }, + { + "date": "2021-06-28T21:54:35Z", + "id": 6896824, + "issues": [ + { + "id": 931027686, + "labels": ["feature"], + "number": 66, + "title": "Support manual sorting (performance)", + "url": "https://github.com/hapijs/topo/pull/66" + }, + { + "id": 709597599, + "labels": [], + "number": 64, + "title": "upgrade lab to v24 and devDependency of typescript", + "url": "https://github.com/hapijs/topo/pull/64" + } + ], + "number": 29, + "url": "https://github.com/hapijs/topo/milestone/29", + "version": "5.1.0" + }, + { + "date": "2020-01-04T09:03:46Z", + "id": 4972536, + "issues": [ + { + "id": 545261286, + "labels": ["dependency", "breaking changes"], + "number": 61, + "title": "Only node 12", + "url": "https://github.com/hapijs/topo/issues/61" + } + ], + "number": 27, + "url": "https://github.com/hapijs/topo/milestone/27", + "version": "5.0.0" + }, + { + "date": "2019-10-11T21:01:33Z", + "id": 4724612, + "issues": [ + { + "id": 504722666, + "labels": ["bug", "dependency"], + "number": 57, + "title": "Adjust hoek to `^8.3.x`", + "url": "https://github.com/hapijs/topo/pull/57" + } + ], "number": 23, - "title": "A problem with group names that are also property names of Object.prototype", - "url": "https://github.com/hapijs/topo/issues/23" - }, - { - "id": 158922115, - "labels": ["feature", "dependency"], + "url": "https://github.com/hapijs/topo/milestone/23", + "version": "4.0.1" + }, + { + "date": "2019-10-06T04:14:54Z", + "id": 4724611, + "issues": [ + { + "id": 503048209, + "labels": ["breaking changes"], + "number": 55, + "title": "Move default export to Sorter", + "url": "https://github.com/hapijs/topo/issues/55" + }, + { + "id": 503048144, + "labels": ["dependency", "breaking changes"], + "number": 54, + "title": "Drop node 8", + "url": "https://github.com/hapijs/topo/issues/54" + } + ], "number": 22, - "title": "Add .npmignore, update code to v3", - "url": "https://github.com/hapijs/topo/issues/22" - } - ], - "number": 8, - "url": "https://github.com/hapijs/topo/milestone/8", - "version": "2.0.2" - }, - { - "date": "2016-05-19T20:13:32Z", - "id": 1387569, - "issues": [ - { - "id": 155821651, - "labels": ["dependency", "test", "documentation"], + "url": "https://github.com/hapijs/topo/milestone/22", + "version": "4.0.0" + }, + { + "date": "2019-10-11T21:01:31Z", + "id": 4724618, + "issues": [ + { + "id": 506055401, + "labels": ["bug", "dependency"], + "number": 58, + "title": "Update hoek dep", + "url": "https://github.com/hapijs/topo/issues/58" + } + ], + "number": 24, + "url": "https://github.com/hapijs/topo/milestone/24", + "version": "3.1.6" + }, + { + "date": "2019-10-06T04:13:19Z", + "id": 4675625, + "issues": [ + { + "id": 503048260, + "labels": ["bug", "types"], + "number": 56, + "title": "Remove types", + "url": "https://github.com/hapijs/topo/issues/56" + } + ], "number": 21, - "title": "Test on node v6, update dependencies", - "url": "https://github.com/hapijs/topo/pull/21" - } - ], - "number": 7, - "url": "https://github.com/hapijs/topo/milestone/7", - "version": "2.0.1" - }, - { - "date": "2015-11-01T20:11:30Z", - "id": 1337345, - "issues": [ - { - "id": 114489912, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/topo/milestone/21", + "version": "3.1.5" + }, + { + "date": "2019-09-19T22:17:36Z", + "id": 4556619, + "issues": [ + { + "id": 487394016, + "labels": ["types"], + "number": 46, + "title": "Added TS declarations", + "url": "https://github.com/hapijs/topo/pull/46" + } + ], + "number": 20, + "url": "https://github.com/hapijs/topo/milestone/20", + "version": "3.1.4" + }, + { + "date": "2019-08-07T21:54:45Z", + "id": 4444145, + "issues": [ + { + "id": 478156648, + "labels": ["dependency"], + "number": 43, + "title": "Direct hoek method require", + "url": "https://github.com/hapijs/topo/issues/43" + } + ], "number": 19, - "title": "es6. Closes #18", - "url": "https://github.com/hapijs/topo/pull/19" - }, - { - "id": 114489234, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/topo/milestone/19", + "version": "3.1.3" + }, + { + "date": "2019-06-26T18:51:16Z", + "id": 4184499, + "issues": [ + { + "id": 461127334, + "labels": ["dependency"], + "number": 42, + "title": "Update deps", + "url": "https://github.com/hapijs/topo/issues/42" + } + ], "number": 18, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/topo/issues/18" - } - ], - "number": 6, - "url": "https://github.com/hapijs/topo/milestone/6", - "version": "2.0.0" - }, - { - "date": "2015-10-05T03:51:40Z", - "id": 1337322, - "issues": [ - { - "id": 109726331, - "labels": ["dependency", "test"], + "url": "https://github.com/hapijs/topo/milestone/18", + "version": "3.1.2" + }, + { + "date": "2019-03-29T22:38:28Z", + "id": 4184256, + "issues": [ + { + "id": 427202809, + "labels": ["dependency"], + "number": 41, + "title": "Update deps", + "url": "https://github.com/hapijs/topo/issues/41" + } + ], "number": 17, - "title": "Lab v6 and travis node versions", - "url": "https://github.com/hapijs/topo/pull/17" - }, - { - "id": 109724642, - "labels": ["dependency", "test"], - "number": 16, - "title": "Update to lab v6", - "url": "https://github.com/hapijs/topo/issues/16" - }, - { - "id": 109711928, - "labels": ["feature"], - "number": 15, - "title": "merge() support. Closes #14", - "url": "https://github.com/hapijs/topo/pull/15" - }, - { - "id": 109711916, - "labels": ["feature"], + "url": "https://github.com/hapijs/topo/milestone/17", + "version": "3.1.1" + }, + { + "date": "2019-03-29T20:02:17Z", + "id": 3792293, + "issues": [ + { + "id": 427155448, + "labels": ["non issue"], + "number": 40, + "title": "Change module namespace", + "url": "https://github.com/hapijs/topo/issues/40" + } + ], "number": 14, - "title": "Add merge() support", - "url": "https://github.com/hapijs/topo/issues/14" - } - ], - "number": 5, - "url": "https://github.com/hapijs/topo/milestone/5", - "version": "1.1.0" - }, - { - "date": "2015-07-29T17:49:24Z", - "id": 814581, - "issues": [ - { - "id": 97855108, - "labels": ["feature", "documentation"], + "url": "https://github.com/hapijs/topo/milestone/14", + "version": "3.1.0" + }, + { + "date": "2018-11-03T00:39:46Z", + "id": 3788934, + "issues": [ + { + "id": 377003424, + "labels": ["non issue"], + "number": 35, + "title": "Remove engines", + "url": "https://github.com/hapijs/topo/issues/35" + } + ], + "number": 13, + "url": "https://github.com/hapijs/topo/milestone/13", + "version": "3.0.3" + }, + { + "date": "2018-11-01T19:26:29Z", + "id": 3786771, + "issues": [ + { + "id": 376535118, + "labels": ["dependency"], + "number": 33, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/topo/issues/33" + } + ], + "number": 12, + "url": "https://github.com/hapijs/topo/milestone/12", + "version": "3.0.2" + }, + { + "date": "2018-10-31T23:52:08Z", + "id": 2794180, + "issues": [ + { + "id": 376202435, + "labels": ["non issue"], + "number": 31, + "title": "Cleanup", + "url": "https://github.com/hapijs/topo/issues/31" + }, + { + "id": 347253231, + "labels": [], + "number": 30, + "title": "Update implementation to use classes. Update license and travis.", + "url": "https://github.com/hapijs/topo/pull/30" + } + ], + "number": 11, + "url": "https://github.com/hapijs/topo/milestone/11", + "version": "3.0.1" + }, + { + "date": "2017-09-26T09:01:28Z", + "id": 2794179, + "issues": [ + { + "id": 260545467, + "labels": ["breaking changes"], + "number": 28, + "title": "Node 8", + "url": "https://github.com/hapijs/topo/issues/28" + } + ], "number": 10, - "title": "Linting and repo style updates.", - "url": "https://github.com/hapijs/topo/pull/10" - }, - { - "id": 96689375, - "labels": ["bug"], + "url": "https://github.com/hapijs/topo/milestone/10", + "version": "3.0.0" + }, + { + "date": "2019-03-22T06:44:53Z", + "id": 4162845, + "issues": [ + { + "id": 424066166, + "labels": ["lts"], + "number": 39, + "title": "Commercial version of v2 branch", + "url": "https://github.com/hapijs/topo/issues/39" + } + ], + "number": 15, + "url": "https://github.com/hapijs/topo/milestone/15", + "version": "2.1.0" + }, + { + "date": "2017-09-26T09:00:44Z", + "id": 1955971, + "issues": [ + { + "id": 192190040, + "labels": ["feature"], + "number": 26, + "title": "Cleanup sort routine, clarify usage of seq vs index", + "url": "https://github.com/hapijs/topo/pull/26" + } + ], "number": 9, - "title": "`before` option as array misbehaves", - "url": "https://github.com/hapijs/topo/issues/9" - }, - { - "id": 94536289, - "labels": ["bug"], + "url": "https://github.com/hapijs/topo/milestone/9", + "version": "2.0.3" + }, + { + "date": "2016-07-17T18:46:24Z", + "id": 1777544, + "issues": [ + { + "id": 165935653, + "labels": ["bug"], + "number": 25, + "title": "Ensure groups can be named after props of Object.prototype", + "url": "https://github.com/hapijs/topo/pull/25" + }, + { + "id": 165791581, + "labels": ["bug"], + "number": 23, + "title": "A problem with group names that are also property names of Object.prototype", + "url": "https://github.com/hapijs/topo/issues/23" + }, + { + "id": 158922115, + "labels": ["feature", "dependency"], + "number": 22, + "title": "Add .npmignore, update code to v3", + "url": "https://github.com/hapijs/topo/issues/22" + } + ], + "number": 8, + "url": "https://github.com/hapijs/topo/milestone/8", + "version": "2.0.2" + }, + { + "date": "2016-05-19T20:13:32Z", + "id": 1387569, + "issues": [ + { + "id": 155821651, + "labels": ["dependency", "test", "documentation"], + "number": 21, + "title": "Test on node v6, update dependencies", + "url": "https://github.com/hapijs/topo/pull/21" + } + ], "number": 7, - "title": "Fix bug with usage of `before` as array.", - "url": "https://github.com/hapijs/topo/pull/7" - }, - { - "id": 59513103, - "labels": ["dependency", "test"], + "url": "https://github.com/hapijs/topo/milestone/7", + "version": "2.0.1" + }, + { + "date": "2015-11-01T20:11:30Z", + "id": 1337345, + "issues": [ + { + "id": 114489912, + "labels": ["breaking changes"], + "number": 19, + "title": "es6. Closes #18", + "url": "https://github.com/hapijs/topo/pull/19" + }, + { + "id": 114489234, + "labels": ["breaking changes"], + "number": 18, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/topo/issues/18" + } + ], "number": 6, - "title": "Update to Lab 5.x.x and Code 1.x.x", - "url": "https://github.com/hapijs/topo/pull/6" - } - ], - "number": 3, - "url": "https://github.com/hapijs/topo/milestone/3", - "version": "1.0.3" - }, - { - "date": "2014-10-06T06:13:43Z", - "id": 740874, - "issues": [ - { - "id": 44950795, - "labels": ["dependency"], - "number": 4, - "title": "lab 4.0", - "url": "https://github.com/hapijs/topo/issues/4" - } - ], - "number": 2, - "url": "https://github.com/hapijs/topo/milestone/2", - "version": "1.0.2" - }, - { - "date": "2014-08-03T06:54:38Z", - "id": 740873, - "issues": [ - { - "id": 34671209, - "labels": [], + "url": "https://github.com/hapijs/topo/milestone/6", + "version": "2.0.0" + }, + { + "date": "2015-10-05T03:51:40Z", + "id": 1337322, + "issues": [ + { + "id": 109726331, + "labels": ["dependency", "test"], + "number": 17, + "title": "Lab v6 and travis node versions", + "url": "https://github.com/hapijs/topo/pull/17" + }, + { + "id": 109724642, + "labels": ["dependency", "test"], + "number": 16, + "title": "Update to lab v6", + "url": "https://github.com/hapijs/topo/issues/16" + }, + { + "id": 109711928, + "labels": ["feature"], + "number": 15, + "title": "merge() support. Closes #14", + "url": "https://github.com/hapijs/topo/pull/15" + }, + { + "id": 109711916, + "labels": ["feature"], + "number": 14, + "title": "Add merge() support", + "url": "https://github.com/hapijs/topo/issues/14" + } + ], + "number": 5, + "url": "https://github.com/hapijs/topo/milestone/5", + "version": "1.1.0" + }, + { + "date": "2015-07-29T17:49:24Z", + "id": 814581, + "issues": [ + { + "id": 97855108, + "labels": ["feature", "documentation"], + "number": 10, + "title": "Linting and repo style updates.", + "url": "https://github.com/hapijs/topo/pull/10" + }, + { + "id": 96689375, + "labels": ["bug"], + "number": 9, + "title": "`before` option as array misbehaves", + "url": "https://github.com/hapijs/topo/issues/9" + }, + { + "id": 94536289, + "labels": ["bug"], + "number": 7, + "title": "Fix bug with usage of `before` as array.", + "url": "https://github.com/hapijs/topo/pull/7" + }, + { + "id": 59513103, + "labels": ["dependency", "test"], + "number": 6, + "title": "Update to Lab 5.x.x and Code 1.x.x", + "url": "https://github.com/hapijs/topo/pull/6" + } + ], + "number": 3, + "url": "https://github.com/hapijs/topo/milestone/3", + "version": "1.0.3" + }, + { + "date": "2014-10-06T06:13:43Z", + "id": 740874, + "issues": [ + { + "id": 44950795, + "labels": ["dependency"], + "number": 4, + "title": "lab 4.0", + "url": "https://github.com/hapijs/topo/issues/4" + } + ], + "number": 2, + "url": "https://github.com/hapijs/topo/milestone/2", + "version": "1.0.2" + }, + { + "date": "2014-08-03T06:54:38Z", + "id": 740873, + "issues": [ + { + "id": 34671209, + "labels": [], + "number": 1, + "title": "Don't die when user adds enumerable properties to Array.prototype", + "url": "https://github.com/hapijs/topo/pull/1" + } + ], "number": 1, - "title": "Don't die when user adds enumerable properties to Array.prototype", - "url": "https://github.com/hapijs/topo/pull/1" - } - ], - "number": 1, - "url": "https://github.com/hapijs/topo/milestone/1", - "version": "1.0.1" - } + "url": "https://github.com/hapijs/topo/milestone/1", + "version": "1.0.1" + } ] diff --git a/generated/modules/topo/info.json b/generated/modules/topo/info.json index 182b759a..dd087d0a 100644 --- a/generated/modules/topo/info.json +++ b/generated/modules/topo/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 26, - "isPlugin": false, - "link": "https://github.com/hapijs/topo", - "name": "topo", - "package": "@hapi/topo", - "slogan": "Topological sorting with grouping support.", - "sloganHtml": "Topological sorting with grouping support.", - "stars": 108, - "updated": "2024-10-23T15:22:31Z", - "versions": [ - { - "branch": "v6.0.2", - "license": "BSD", - "name": "6.0.2", - "node": ">= 16" - } - ], - "versionsArray": ["6.0.2"], - "latestVersion": "6.x.x" + "api": true, + "forks": 26, + "isPlugin": false, + "latestVersion": "6.x.x", + "link": "https://github.com/hapijs/topo", + "name": "topo", + "package": "@hapi/topo", + "slogan": "Topological sorting with grouping support.", + "sloganHtml": "Topological sorting with grouping support.", + "stars": 109, + "updated": "2024-10-23T15:22:31Z", + "versions": [ + { + "branch": "v6.0.2", + "license": "BSD", + "name": "6.0.2", + "node": ">= 16" + } + ], + "versionsArray": ["6.0.2"] } diff --git a/generated/modules/vise/changelog.json b/generated/modules/vise/changelog.json index e98af363..f69e0d27 100644 --- a/generated/modules/vise/changelog.json +++ b/generated/modules/vise/changelog.json @@ -1,208 +1,208 @@ [ - { - "date": "2023-02-11T17:58:10Z", - "id": 7956808, - "issues": [ - { - "id": 1551766581, - "labels": ["dependency"], - "number": 30, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/vise/pull/30" - } - ], - "number": 15, - "url": "https://github.com/hapijs/vise/milestone/15", - "version": "5.0.1" - }, - { - "date": "2022-05-23T03:59:44Z", - "id": 7956807, - "issues": [ - { - "id": 1229172028, - "labels": ["breaking changes", "dependency"], - "number": 29, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/vise/pull/29" - } - ], - "number": 14, - "url": "https://github.com/hapijs/vise/milestone/14", - "version": "5.0.0" - }, - { - "date": "2020-01-05T06:33:19Z", - "id": 4973411, - "issues": [ - { - "id": 545378957, - "labels": ["breaking changes", "dependency"], - "number": 20, - "title": "Only node 12", - "url": "https://github.com/hapijs/vise/issues/20" - } - ], - "number": 12, - "url": "https://github.com/hapijs/vise/milestone/12", - "version": "4.0.0" - }, - { - "date": "2019-08-15T00:57:28Z", - "id": 4194587, - "issues": [ - { - "id": 480895784, - "labels": ["dependency"], - "number": 18, - "title": "Update deps", - "url": "https://github.com/hapijs/vise/issues/18" - } - ], - "number": 10, - "url": "https://github.com/hapijs/vise/milestone/10", - "version": "3.1.1" - }, - { - "date": "2019-04-02T17:43:33Z", - "id": 3792294, - "issues": [ - { - "id": 428355742, - "labels": ["dependency"], - "number": 16, - "title": "Change module namespace", - "url": "https://github.com/hapijs/vise/issues/16" - } - ], - "number": 7, - "url": "https://github.com/hapijs/vise/milestone/7", - "version": "3.1.0" - }, - { - "date": "2018-11-03T00:40:42Z", - "id": 3788946, - "issues": [ - { - "id": 377003469, - "labels": ["non issue"], - "number": 13, - "title": "Remove engines", - "url": "https://github.com/hapijs/vise/issues/13" - } - ], - "number": 6, - "url": "https://github.com/hapijs/vise/milestone/6", - "version": "3.0.2" - }, - { - "date": "2018-11-01T19:31:13Z", - "id": 2794130, - "issues": [ - { - "id": 376536765, - "labels": ["dependency"], + { + "date": "2023-02-11T17:58:10Z", + "id": 7956808, + "issues": [ + { + "id": 1551766581, + "labels": ["dependency"], + "number": 30, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/vise/pull/30" + } + ], + "number": 15, + "url": "https://github.com/hapijs/vise/milestone/15", + "version": "5.0.1" + }, + { + "date": "2022-05-23T03:59:44Z", + "id": 7956807, + "issues": [ + { + "id": 1229172028, + "labels": ["breaking changes", "dependency"], + "number": 29, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/vise/pull/29" + } + ], + "number": 14, + "url": "https://github.com/hapijs/vise/milestone/14", + "version": "5.0.0" + }, + { + "date": "2020-01-05T06:33:19Z", + "id": 4973411, + "issues": [ + { + "id": 545378957, + "labels": ["breaking changes", "dependency"], + "number": 20, + "title": "Only node 12", + "url": "https://github.com/hapijs/vise/issues/20" + } + ], "number": 12, - "title": "Update deps", - "url": "https://github.com/hapijs/vise/issues/12" - } - ], - "number": 5, - "url": "https://github.com/hapijs/vise/milestone/5", - "version": "3.0.1" - }, - { - "date": "2018-11-01T19:30:44Z", - "id": 1910382, - "issues": [ - { - "id": 260540399, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/vise/milestone/12", + "version": "4.0.0" + }, + { + "date": "2019-08-15T00:57:28Z", + "id": 4194587, + "issues": [ + { + "id": 480895784, + "labels": ["dependency"], + "number": 18, + "title": "Update deps", + "url": "https://github.com/hapijs/vise/issues/18" + } + ], "number": 10, - "title": "Node 8", - "url": "https://github.com/hapijs/vise/issues/10" - } - ], - "number": 4, - "url": "https://github.com/hapijs/vise/milestone/4", - "version": "3.0.0" - }, - { - "date": "2019-03-25T18:35:09Z", - "id": 4171037, - "issues": [ - { - "id": 425052999, - "labels": ["lts"], - "number": 15, - "title": "Commercial version of v2 branch", - "url": "https://github.com/hapijs/vise/issues/15" - } - ], - "number": 8, - "url": "https://github.com/hapijs/vise/milestone/8", - "version": "2.1.0" - }, - { - "date": "2016-07-28T19:46:31Z", - "id": 1750059, - "issues": [ - { - "id": 168180255, - "labels": ["dependency"], - "number": 9, - "title": "Update deps", - "url": "https://github.com/hapijs/vise/issues/9" - } - ], - "number": 3, - "url": "https://github.com/hapijs/vise/milestone/3", - "version": "2.0.2" - }, - { - "date": "2016-05-05T17:02:07Z", - "id": 1390424, - "issues": [ - { - "id": 152696702, - "labels": ["test", "dependency"], + "url": "https://github.com/hapijs/vise/milestone/10", + "version": "3.1.1" + }, + { + "date": "2019-04-02T17:43:33Z", + "id": 3792294, + "issues": [ + { + "id": 428355742, + "labels": ["dependency"], + "number": 16, + "title": "Change module namespace", + "url": "https://github.com/hapijs/vise/issues/16" + } + ], "number": 7, - "title": "Fix linting and update node/lab versions", - "url": "https://github.com/hapijs/vise/pull/7" - } - ], - "number": 2, - "url": "https://github.com/hapijs/vise/milestone/2", - "version": "2.0.1" - }, - { - "date": "2015-11-03T04:12:25Z", - "id": 811746, - "issues": [ - { - "id": 114738449, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/vise/milestone/7", + "version": "3.1.0" + }, + { + "date": "2018-11-03T00:40:42Z", + "id": 3788946, + "issues": [ + { + "id": 377003469, + "labels": ["non issue"], + "number": 13, + "title": "Remove engines", + "url": "https://github.com/hapijs/vise/issues/13" + } + ], + "number": 6, + "url": "https://github.com/hapijs/vise/milestone/6", + "version": "3.0.2" + }, + { + "date": "2018-11-01T19:31:13Z", + "id": 2794130, + "issues": [ + { + "id": 376536765, + "labels": ["dependency"], + "number": 12, + "title": "Update deps", + "url": "https://github.com/hapijs/vise/issues/12" + } + ], "number": 5, - "title": "ES6 style changes and node v4", - "url": "https://github.com/hapijs/vise/issues/5" - }, - { - "id": 59528632, - "labels": ["test", "dependency"], + "url": "https://github.com/hapijs/vise/milestone/5", + "version": "3.0.1" + }, + { + "date": "2018-11-01T19:30:44Z", + "id": 1910382, + "issues": [ + { + "id": 260540399, + "labels": ["breaking changes"], + "number": 10, + "title": "Node 8", + "url": "https://github.com/hapijs/vise/issues/10" + } + ], "number": 4, - "title": "Update to Lab 5.x.x and Code 1.x.x", - "url": "https://github.com/hapijs/vise/pull/4" - }, - { - "id": 58949434, - "labels": ["test"], + "url": "https://github.com/hapijs/vise/milestone/4", + "version": "3.0.0" + }, + { + "date": "2019-03-25T18:35:09Z", + "id": 4171037, + "issues": [ + { + "id": 425052999, + "labels": ["lts"], + "number": 15, + "title": "Commercial version of v2 branch", + "url": "https://github.com/hapijs/vise/issues/15" + } + ], + "number": 8, + "url": "https://github.com/hapijs/vise/milestone/8", + "version": "2.1.0" + }, + { + "date": "2016-07-28T19:46:31Z", + "id": 1750059, + "issues": [ + { + "id": 168180255, + "labels": ["dependency"], + "number": 9, + "title": "Update deps", + "url": "https://github.com/hapijs/vise/issues/9" + } + ], "number": 3, - "title": "Update .travis.yml", - "url": "https://github.com/hapijs/vise/pull/3" - } - ], - "number": 1, - "url": "https://github.com/hapijs/vise/milestone/1", - "version": "2.0.0" - } + "url": "https://github.com/hapijs/vise/milestone/3", + "version": "2.0.2" + }, + { + "date": "2016-05-05T17:02:07Z", + "id": 1390424, + "issues": [ + { + "id": 152696702, + "labels": ["test", "dependency"], + "number": 7, + "title": "Fix linting and update node/lab versions", + "url": "https://github.com/hapijs/vise/pull/7" + } + ], + "number": 2, + "url": "https://github.com/hapijs/vise/milestone/2", + "version": "2.0.1" + }, + { + "date": "2015-11-03T04:12:25Z", + "id": 811746, + "issues": [ + { + "id": 114738449, + "labels": ["breaking changes"], + "number": 5, + "title": "ES6 style changes and node v4", + "url": "https://github.com/hapijs/vise/issues/5" + }, + { + "id": 59528632, + "labels": ["test", "dependency"], + "number": 4, + "title": "Update to Lab 5.x.x and Code 1.x.x", + "url": "https://github.com/hapijs/vise/pull/4" + }, + { + "id": 58949434, + "labels": ["test"], + "number": 3, + "title": "Update .travis.yml", + "url": "https://github.com/hapijs/vise/pull/3" + } + ], + "number": 1, + "url": "https://github.com/hapijs/vise/milestone/1", + "version": "2.0.0" + } ] diff --git a/generated/modules/vise/info.json b/generated/modules/vise/info.json index 16d1daab..0d9e887f 100644 --- a/generated/modules/vise/info.json +++ b/generated/modules/vise/info.json @@ -1,22 +1,22 @@ { - "api": false, - "forks": 12, - "isPlugin": false, - "link": "https://github.com/hapijs/vise", - "name": "vise", - "package": "@hapi/vise", - "slogan": "Treat multiple buffers as one.", - "sloganHtml": "Treat multiple buffers as one.", - "stars": 7, - "updated": "2024-10-23T15:41:23Z", - "versions": [ - { - "branch": "v5.0.1", - "license": "BSD", - "name": "5.0.1", - "node": ">= 16" - } - ], - "versionsArray": ["5.0.1"], - "latestVersion": "5.x.x" + "api": false, + "forks": 12, + "isPlugin": false, + "latestVersion": "5.x.x", + "link": "https://github.com/hapijs/vise", + "name": "vise", + "package": "@hapi/vise", + "slogan": "Treat multiple buffers as one.", + "sloganHtml": "Treat multiple buffers as one.", + "stars": 7, + "updated": "2024-10-23T15:41:23Z", + "versions": [ + { + "branch": "v5.0.1", + "license": "BSD", + "name": "5.0.1", + "node": ">= 16" + } + ], + "versionsArray": ["5.0.1"] } diff --git a/generated/modules/vision/changelog.json b/generated/modules/vision/changelog.json index 82a83ba4..6a5cd49e 100644 --- a/generated/modules/vision/changelog.json +++ b/generated/modules/vision/changelog.json @@ -1,795 +1,795 @@ [ - { - "date": "2023-08-04T13:48:45Z", - "id": 9742713, - "issues": [ - { - "id": 1836739907, - "labels": ["types"], - "number": 217, - "title": "fix: correct exported types", - "url": "https://github.com/hapijs/vision/pull/217" - }, - { - "id": 1752347701, - "labels": ["support"], - "number": 216, - "title": "7.0.2 typing inaccuracies ", - "url": "https://github.com/hapijs/vision/issues/216" - }, - { - "id": 1729050161, - "labels": ["types"], - "number": 214, - "title": "feat: 🎸 add types from DT", - "url": "https://github.com/hapijs/vision/pull/214" - } - ], - "number": 39, - "url": "https://github.com/hapijs/vision/milestone/39", - "version": "7.0.3" - }, - { - "date": "2023-06-09T15:34:48Z", - "id": 9519879, - "issues": [ - { - "id": 1750083788, - "labels": ["types"], - "number": 215, - "title": "chore: add typings from DT", - "url": "https://github.com/hapijs/vision/pull/215" - } - ], - "number": 38, - "url": "https://github.com/hapijs/vision/milestone/38", - "version": "7.0.2" - }, - { - "date": "2023-02-11T19:23:19Z", - "id": 8189851, - "issues": [ - { - "id": 1551774549, - "labels": [], - "number": 213, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/vision/pull/213" - } - ], - "number": 37, - "url": "https://github.com/hapijs/vision/milestone/37", - "version": "7.0.1" - }, - { - "date": "2022-07-17T21:09:16Z", - "id": 8189850, - "issues": [ - { - "id": 1302867647, - "labels": ["breaking changes", "dependency"], - "number": 211, - "title": "Support node v18 and hapi v21, drop node v12 and hapi v18/19", - "url": "https://github.com/hapijs/vision/pull/211" - } - ], - "number": 36, - "url": "https://github.com/hapijs/vision/milestone/36", - "version": "7.0.0" - }, - { - "date": "2021-05-25T08:09:16Z", - "id": 5864356, - "issues": [ - { - "id": 772627354, - "labels": ["feature"], - "number": 205, - "title": "Bring back old async support PR", - "url": "https://github.com/hapijs/vision/pull/205" - }, - { - "id": 709598525, - "labels": [], - "number": 202, - "title": "upgrade lab to v24", - "url": "https://github.com/hapijs/vision/pull/202" - }, - { - "id": 698110586, - "labels": [], - "number": 201, - "title": "update handlebars dependency", - "url": "https://github.com/hapijs/vision/pull/201" - }, - { - "id": 406130373, - "labels": ["feature"], - "number": 177, - "title": "Async support", - "url": "https://github.com/hapijs/vision/issues/177" - } - ], - "number": 34, - "url": "https://github.com/hapijs/vision/milestone/34", - "version": "6.1.0" - }, - { - "date": "2020-09-10T15:47:49Z", - "id": 4987904, - "issues": [], - "number": 33, - "url": "https://github.com/hapijs/vision/milestone/33", - "version": "6.0.1" - }, - { - "date": "2020-01-10T07:29:42Z", - "id": 4987903, - "issues": [ - { - "id": 547912161, - "labels": ["breaking changes"], - "number": 192, - "title": "Change plugin name to @hapi/vision", - "url": "https://github.com/hapijs/vision/issues/192" - }, - { - "id": 547911967, - "labels": ["breaking changes"], - "number": 191, - "title": "Drop hapi 17", - "url": "https://github.com/hapijs/vision/issues/191" - }, - { - "id": 547179583, - "labels": ["breaking changes", "dependency"], - "number": 190, - "title": "Only node 12", - "url": "https://github.com/hapijs/vision/issues/190" - } - ], - "number": 32, - "url": "https://github.com/hapijs/vision/milestone/32", - "version": "6.0.0" - }, - { - "date": "2019-09-12T23:40:47Z", - "id": 4574307, - "issues": [ - { - "id": 493075029, - "labels": ["dependency"], - "number": 186, - "title": "Update joi", - "url": "https://github.com/hapijs/vision/issues/186" - } - ], - "number": 30, - "url": "https://github.com/hapijs/vision/milestone/30", - "version": "5.5.4" - }, - { - "date": "2019-08-15T00:50:30Z", - "id": 4219013, - "issues": [ - { - "id": 480895562, - "labels": ["dependency"], - "number": 185, - "title": "Update deps", - "url": "https://github.com/hapijs/vision/issues/185" - } - ], - "number": 29, - "url": "https://github.com/hapijs/vision/milestone/29", - "version": "5.5.3" - }, - { - "date": "2019-04-10T22:17:29Z", - "id": 4212652, - "issues": [ - { - "id": 431740594, - "labels": ["bug"], - "number": 182, - "title": "Override package name", - "url": "https://github.com/hapijs/vision/issues/182" - } - ], - "number": 28, - "url": "https://github.com/hapijs/vision/milestone/28", - "version": "5.5.2" - }, - { - "date": "2019-04-09T06:48:46Z", - "id": 4212381, - "issues": [ - { - "id": 430795225, - "labels": ["test"], - "number": 181, - "title": "Windows tests", - "url": "https://github.com/hapijs/vision/issues/181" - } - ], - "number": 27, - "url": "https://github.com/hapijs/vision/milestone/27", - "version": "5.5.1" - }, - { - "date": "2019-04-09T04:19:48Z", - "id": 3903716, - "issues": [ - { - "id": 430757958, - "labels": ["dependency"], - "number": 180, - "title": "Change module namespace", - "url": "https://github.com/hapijs/vision/issues/180" - }, - { - "id": 356717970, - "labels": ["bug", "breaking changes"], - "number": 165, - "title": "Log errors instead of console.warn()", - "url": "https://github.com/hapijs/vision/issues/165" - } - ], - "number": 26, - "url": "https://github.com/hapijs/vision/milestone/26", - "version": "5.5.0" - }, - { - "date": "2018-12-15T18:00:05Z", - "id": 3802324, - "issues": [], - "number": 25, - "url": "https://github.com/hapijs/vision/milestone/25", - "version": "5.4.4" - }, - { - "date": "2018-11-07T07:39:19Z", - "id": 3788953, - "issues": [ - { - "id": 378172366, - "labels": ["dependency"], - "number": 169, - "title": "Use new requirements config", - "url": "https://github.com/hapijs/vision/issues/169" - } - ], - "number": 24, - "url": "https://github.com/hapijs/vision/milestone/24", - "version": "5.4.3" - }, - { - "date": "2018-11-01T19:33:18Z", - "id": 3787288, - "issues": [ - { - "id": 376537509, - "labels": ["dependency"], - "number": 168, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/vision/issues/168" - } - ], - "number": 23, - "url": "https://github.com/hapijs/vision/milestone/23", - "version": "5.4.2" - }, - { - "date": "2018-11-01T05:56:08Z", - "id": 3604358, - "issues": [ - { - "id": 376203939, - "labels": ["non issue"], - "number": 167, - "title": "Cleanup", - "url": "https://github.com/hapijs/vision/issues/167" - } - ], - "number": 22, - "url": "https://github.com/hapijs/vision/milestone/22", - "version": "5.4.1" - }, - { - "date": "2018-08-28T15:42:49Z", - "id": 3410926, - "issues": [], - "number": 21, - "url": "https://github.com/hapijs/vision/milestone/21", - "version": "5.3.4" - }, - { - "date": "2018-06-08T13:34:58Z", - "id": 3410898, - "issues": [], - "number": 20, - "url": "https://github.com/hapijs/vision/milestone/20", - "version": "5.3.3" - }, - { - "date": "2018-06-08T13:19:25Z", - "id": 3003147, - "issues": [ - { - "id": 219607322, - "labels": [], - "number": 115, - "title": "`request.render` does not pass the request to the context function", - "url": "https://github.com/hapijs/vision/issues/115" - } - ], - "number": 19, - "url": "https://github.com/hapijs/vision/milestone/19", - "version": "5.3.1" - }, - { - "date": "2017-12-29T01:34:34Z", - "id": 2996438, - "issues": [ - { - "id": 275180145, - "labels": [], - "number": 135, - "title": "Pass manager options at registration time", - "url": "https://github.com/hapijs/vision/pull/135" - } - ], - "number": 18, - "url": "https://github.com/hapijs/vision/milestone/18", - "version": "5.3.0" - }, - { - "date": "2017-12-24T19:31:23Z", - "id": 2891916, - "issues": [ - { - "id": 273269322, - "labels": [], - "number": 133, - "title": "Update API to hapi v17", - "url": "https://github.com/hapijs/vision/issues/133" - }, - { - "id": 273158440, - "labels": [], - "number": 132, - "title": "Load partials and helpers before compile if isCached is false", - "url": "https://github.com/hapijs/vision/pull/132" - }, - { - "id": 271568140, - "labels": ["test", "documentation"], - "number": 130, - "title": "Update docs, tests, and examples to hapi v17", - "url": "https://github.com/hapijs/vision/issues/130" - }, - { - "id": 208997388, - "labels": ["feature"], - "number": 110, - "title": "Vision never reloads/recompiles partials", - "url": "https://github.com/hapijs/vision/issues/110" - } - ], - "number": 17, - "url": "https://github.com/hapijs/vision/milestone/17", - "version": "5.2.0" - }, - { - "date": "2017-11-06T18:06:30Z", - "id": 2886816, - "issues": [], - "number": 16, - "url": "https://github.com/hapijs/vision/milestone/16", - "version": "5.0.1" - }, - { - "date": "2017-11-03T19:48:37Z", - "id": 2162618, - "issues": [ - { - "id": 271099411, - "labels": ["dependency"], - "number": 128, - "title": "Update deps", - "url": "https://github.com/hapijs/vision/issues/128" - }, - { - "id": 259058689, - "labels": ["breaking changes", "feature", "dependency"], - "number": 124, - "title": "hapi v17", - "url": "https://github.com/hapijs/vision/pull/124" - } - ], - "number": 15, - "url": "https://github.com/hapijs/vision/milestone/15", - "version": "5.0.0" - }, - { - "date": "2016-11-29T01:36:33Z", - "id": 2162589, - "issues": [ - { - "id": 192162108, - "labels": ["dependency"], - "number": 105, - "title": "Update deps", - "url": "https://github.com/hapijs/vision/issues/105" - } - ], - "number": 14, - "url": "https://github.com/hapijs/vision/milestone/14", - "version": "4.1.1" - }, - { - "date": "2016-11-29T01:14:27Z", - "id": 1677130, - "issues": [ - { - "id": 145211361, - "labels": ["feature"], - "number": 82, - "title": "Promises", - "url": "https://github.com/hapijs/vision/pull/82" - }, - { - "id": 145175082, - "labels": ["feature"], - "number": 81, - "title": "Pass request to global context function when available", - "url": "https://github.com/hapijs/vision/pull/81" - }, - { - "id": 145059890, - "labels": ["feature"], - "number": 80, - "title": "Register rendering helpers programmatically", - "url": "https://github.com/hapijs/vision/pull/80" - }, - { - "id": 145038587, - "labels": ["feature"], - "number": 79, - "title": "Report errors when loading helpers", - "url": "https://github.com/hapijs/vision/pull/79" - }, - { - "id": 125349933, - "labels": ["feature"], - "number": 73, - "title": "Send helper parsing error to user", - "url": "https://github.com/hapijs/vision/issues/73" - }, - { - "id": 121348673, - "labels": ["feature"], - "number": 68, - "title": "Register Helpers programmatically", - "url": "https://github.com/hapijs/vision/issues/68" - }, - { - "id": 108587280, - "labels": ["feature"], - "number": 59, - "title": "Global context with request argument", - "url": "https://github.com/hapijs/vision/issues/59" - } - ], - "number": 13, - "url": "https://github.com/hapijs/vision/milestone/13", - "version": "4.1.0" - }, - { - "date": "2015-11-09T16:30:25Z", - "id": 1402486, - "issues": [ - { - "id": 115312441, - "labels": ["bug"], - "number": 67, - "title": "Issue with underscore partials and vision", - "url": "https://github.com/hapijs/vision/issues/67" - } - ], - "number": 12, - "url": "https://github.com/hapijs/vision/milestone/12", - "version": "4.0.1" - }, - { - "date": "2015-11-09T16:26:02Z", - "id": 1387567, - "issues": [ - { - "id": 114490028, - "labels": ["breaking changes", "dependency"], - "number": 66, - "title": "ES6 style changes and node v4.", - "url": "https://github.com/hapijs/vision/pull/66" - }, - { - "id": 113950960, - "labels": ["feature"], - "number": 65, - "title": "Update plugin attributes.", - "url": "https://github.com/hapijs/vision/pull/65" - }, - { - "id": 109581295, - "labels": ["feature"], - "number": 63, - "title": "Add new attributes: connections: false, once: true", - "url": "https://github.com/hapijs/vision/issues/63" - } - ], - "number": 11, - "url": "https://github.com/hapijs/vision/milestone/11", - "version": "4.0.0" - }, - { - "date": "2015-08-16T02:26:19Z", - "id": 1215858, - "issues": [ - { - "id": 100129229, - "labels": ["feature"], - "number": 40, - "title": "request.render(). Closes #39", - "url": "https://github.com/hapijs/vision/pull/40" - }, - { - "id": 100128697, - "labels": ["feature"], + { + "date": "2023-08-04T13:48:45Z", + "id": 9742713, + "issues": [ + { + "id": 1836739907, + "labels": ["types"], + "number": 217, + "title": "fix: correct exported types", + "url": "https://github.com/hapijs/vision/pull/217" + }, + { + "id": 1752347701, + "labels": ["support"], + "number": 216, + "title": "7.0.2 typing inaccuracies ", + "url": "https://github.com/hapijs/vision/issues/216" + }, + { + "id": 1729050161, + "labels": ["types"], + "number": 214, + "title": "feat: 🎸 add types from DT", + "url": "https://github.com/hapijs/vision/pull/214" + } + ], "number": 39, - "title": "Add request.render() support", - "url": "https://github.com/hapijs/vision/issues/39" - }, - { - "id": 98180041, - "labels": ["feature"], + "url": "https://github.com/hapijs/vision/milestone/39", + "version": "7.0.3" + }, + { + "date": "2023-06-09T15:34:48Z", + "id": 9519879, + "issues": [ + { + "id": 1750083788, + "labels": ["types"], + "number": 215, + "title": "chore: add typings from DT", + "url": "https://github.com/hapijs/vision/pull/215" + } + ], + "number": 38, + "url": "https://github.com/hapijs/vision/milestone/38", + "version": "7.0.2" + }, + { + "date": "2023-02-11T19:23:19Z", + "id": 8189851, + "issues": [ + { + "id": 1551774549, + "labels": [], + "number": 213, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/vision/pull/213" + } + ], "number": 37, - "title": "Engine initialization.", - "url": "https://github.com/hapijs/vision/pull/37" - }, - { - "id": 94508236, - "labels": ["bug", "breaking changes"], + "url": "https://github.com/hapijs/vision/milestone/37", + "version": "7.0.1" + }, + { + "date": "2022-07-17T21:09:16Z", + "id": 8189850, + "issues": [ + { + "id": 1302867647, + "labels": ["breaking changes", "dependency"], + "number": 211, + "title": "Support node v18 and hapi v21, drop node v12 and hapi v18/19", + "url": "https://github.com/hapijs/vision/pull/211" + } + ], + "number": 36, + "url": "https://github.com/hapijs/vision/milestone/36", + "version": "7.0.0" + }, + { + "date": "2021-05-25T08:09:16Z", + "id": 5864356, + "issues": [ + { + "id": 772627354, + "labels": ["feature"], + "number": 205, + "title": "Bring back old async support PR", + "url": "https://github.com/hapijs/vision/pull/205" + }, + { + "id": 709598525, + "labels": [], + "number": 202, + "title": "upgrade lab to v24", + "url": "https://github.com/hapijs/vision/pull/202" + }, + { + "id": 698110586, + "labels": [], + "number": 201, + "title": "update handlebars dependency", + "url": "https://github.com/hapijs/vision/pull/201" + }, + { + "id": 406130373, + "labels": ["feature"], + "number": 177, + "title": "Async support", + "url": "https://github.com/hapijs/vision/issues/177" + } + ], + "number": 34, + "url": "https://github.com/hapijs/vision/milestone/34", + "version": "6.1.0" + }, + { + "date": "2020-09-10T15:47:49Z", + "id": 4987904, + "issues": [], "number": 33, - "title": "Make compilation errors available to extensions.", - "url": "https://github.com/hapijs/vision/pull/33" - }, - { - "id": 93659980, - "labels": ["documentation"], + "url": "https://github.com/hapijs/vision/milestone/33", + "version": "6.0.1" + }, + { + "date": "2020-01-10T07:29:42Z", + "id": 4987903, + "issues": [ + { + "id": 547912161, + "labels": ["breaking changes"], + "number": 192, + "title": "Change plugin name to @hapi/vision", + "url": "https://github.com/hapijs/vision/issues/192" + }, + { + "id": 547911967, + "labels": ["breaking changes"], + "number": 191, + "title": "Drop hapi 17", + "url": "https://github.com/hapijs/vision/issues/191" + }, + { + "id": 547179583, + "labels": ["breaking changes", "dependency"], + "number": 190, + "title": "Only node 12", + "url": "https://github.com/hapijs/vision/issues/190" + } + ], + "number": 32, + "url": "https://github.com/hapijs/vision/milestone/32", + "version": "6.0.0" + }, + { + "date": "2019-09-12T23:40:47Z", + "id": 4574307, + "issues": [ + { + "id": 493075029, + "labels": ["dependency"], + "number": 186, + "title": "Update joi", + "url": "https://github.com/hapijs/vision/issues/186" + } + ], "number": 30, - "title": "Style cleanup.", - "url": "https://github.com/hapijs/vision/pull/30" - }, - { - "id": 93412638, - "labels": ["dependency"], + "url": "https://github.com/hapijs/vision/milestone/30", + "version": "5.5.4" + }, + { + "date": "2019-08-15T00:50:30Z", + "id": 4219013, + "issues": [ + { + "id": 480895562, + "labels": ["dependency"], + "number": 185, + "title": "Update deps", + "url": "https://github.com/hapijs/vision/issues/185" + } + ], + "number": 29, + "url": "https://github.com/hapijs/vision/milestone/29", + "version": "5.5.3" + }, + { + "date": "2019-04-10T22:17:29Z", + "id": 4212652, + "issues": [ + { + "id": 431740594, + "labels": ["bug"], + "number": 182, + "title": "Override package name", + "url": "https://github.com/hapijs/vision/issues/182" + } + ], "number": 28, - "title": "Fix lint errors.", - "url": "https://github.com/hapijs/vision/pull/28" - }, - { - "id": 47936137, - "labels": ["bug"], - "number": 10, - "title": "Verify template and layout files exist in handler", - "url": "https://github.com/hapijs/vision/issues/10" - } - ], - "number": 9, - "url": "https://github.com/hapijs/vision/milestone/9", - "version": "3.0.0" - }, - { - "date": "2015-06-21T22:50:47Z", - "id": 898090, - "issues": [ - { - "id": 78974234, - "labels": ["dependency"], + "url": "https://github.com/hapijs/vision/milestone/28", + "version": "5.5.2" + }, + { + "date": "2019-04-09T06:48:46Z", + "id": 4212381, + "issues": [ + { + "id": 430795225, + "labels": ["test"], + "number": 181, + "title": "Windows tests", + "url": "https://github.com/hapijs/vision/issues/181" + } + ], + "number": 27, + "url": "https://github.com/hapijs/vision/milestone/27", + "version": "5.5.1" + }, + { + "date": "2019-04-09T04:19:48Z", + "id": 3903716, + "issues": [ + { + "id": 430757958, + "labels": ["dependency"], + "number": 180, + "title": "Change module namespace", + "url": "https://github.com/hapijs/vision/issues/180" + }, + { + "id": 356717970, + "labels": ["bug", "breaking changes"], + "number": 165, + "title": "Log errors instead of console.warn()", + "url": "https://github.com/hapijs/vision/issues/165" + } + ], + "number": 26, + "url": "https://github.com/hapijs/vision/milestone/26", + "version": "5.5.0" + }, + { + "date": "2018-12-15T18:00:05Z", + "id": 3802324, + "issues": [], "number": 25, - "title": "Update dependencies.", - "url": "https://github.com/hapijs/vision/pull/25" - }, - { - "id": 67964894, - "labels": ["bug"], + "url": "https://github.com/hapijs/vision/milestone/25", + "version": "5.4.4" + }, + { + "date": "2018-11-07T07:39:19Z", + "id": 3788953, + "issues": [ + { + "id": 378172366, + "labels": ["dependency"], + "number": 169, + "title": "Use new requirements config", + "url": "https://github.com/hapijs/vision/issues/169" + } + ], "number": 24, - "title": "Ensure _loaderHelpers registers actual filenames", - "url": "https://github.com/hapijs/vision/pull/24" - }, - { - "id": 58935972, - "labels": ["feature"], + "url": "https://github.com/hapijs/vision/milestone/24", + "version": "5.4.3" + }, + { + "date": "2018-11-01T19:33:18Z", + "id": 3787288, + "issues": [ + { + "id": 376537509, + "labels": ["dependency"], + "number": 168, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/vision/issues/168" + } + ], + "number": 23, + "url": "https://github.com/hapijs/vision/milestone/23", + "version": "5.4.2" + }, + { + "date": "2018-11-01T05:56:08Z", + "id": 3604358, + "issues": [ + { + "id": 376203939, + "labels": ["non issue"], + "number": 167, + "title": "Cleanup", + "url": "https://github.com/hapijs/vision/issues/167" + } + ], "number": 22, - "title": "Helpful path location checked", - "url": "https://github.com/hapijs/vision/pull/22" - } - ], - "number": 7, - "url": "https://github.com/hapijs/vision/milestone/7", - "version": "2.0.1" - }, - { - "date": "2014-12-09T22:48:53Z", - "id": 852429, - "issues": [ - { - "id": 50442771, - "labels": ["feature"], + "url": "https://github.com/hapijs/vision/milestone/22", + "version": "5.4.1" + }, + { + "date": "2018-08-28T15:42:49Z", + "id": 3410926, + "issues": [], + "number": 21, + "url": "https://github.com/hapijs/vision/milestone/21", + "version": "5.3.4" + }, + { + "date": "2018-06-08T13:34:58Z", + "id": 3410898, + "issues": [], + "number": 20, + "url": "https://github.com/hapijs/vision/milestone/20", + "version": "5.3.3" + }, + { + "date": "2018-06-08T13:19:25Z", + "id": 3003147, + "issues": [ + { + "id": 219607322, + "labels": [], + "number": 115, + "title": "`request.render` does not pass the request to the context function", + "url": "https://github.com/hapijs/vision/issues/115" + } + ], "number": 19, - "title": "Jagoda feat multiple paths", - "url": "https://github.com/hapijs/vision/pull/19" - }, - { - "id": 49288515, - "labels": ["breaking changes", "dependency"], + "url": "https://github.com/hapijs/vision/milestone/19", + "version": "5.3.1" + }, + { + "date": "2017-12-29T01:34:34Z", + "id": 2996438, + "issues": [ + { + "id": 275180145, + "labels": [], + "number": 135, + "title": "Pass manager options at registration time", + "url": "https://github.com/hapijs/vision/pull/135" + } + ], "number": 18, - "title": "Hapi8", - "url": "https://github.com/hapijs/vision/pull/18" - }, - { - "id": 48332734, - "labels": ["feature"], - "number": 15, - "title": "Support multiple paths.", - "url": "https://github.com/hapijs/vision/pull/15" - }, - { - "id": 47811790, - "labels": ["feature"], - "number": 9, - "title": "Multiple paths for views", - "url": "https://github.com/hapijs/vision/issues/9" - }, - { - "id": 47687213, - "labels": ["breaking changes"], - "number": 8, - "title": "Rename config basePath to relativeTo", - "url": "https://github.com/hapijs/vision/issues/8" - }, - { - "id": 46843419, - "labels": ["bug"], - "number": 5, - "title": "Replace all of the backslashes in partial names to correctly name deeply nested partials.", - "url": "https://github.com/hapijs/vision/pull/5" - } - ], - "number": 5, - "url": "https://github.com/hapijs/vision/milestone/5", - "version": "2.0.0" - }, - { - "date": "2014-11-18T20:21:27Z", - "id": 860632, - "issues": [ - { - "id": 48640837, - "labels": ["bug"], + "url": "https://github.com/hapijs/vision/milestone/18", + "version": "5.3.0" + }, + { + "date": "2017-12-24T19:31:23Z", + "id": 2891916, + "issues": [ + { + "id": 273269322, + "labels": [], + "number": 133, + "title": "Update API to hapi v17", + "url": "https://github.com/hapijs/vision/issues/133" + }, + { + "id": 273158440, + "labels": [], + "number": 132, + "title": "Load partials and helpers before compile if isCached is false", + "url": "https://github.com/hapijs/vision/pull/132" + }, + { + "id": 271568140, + "labels": ["test", "documentation"], + "number": 130, + "title": "Update docs, tests, and examples to hapi v17", + "url": "https://github.com/hapijs/vision/issues/130" + }, + { + "id": 208997388, + "labels": ["feature"], + "number": 110, + "title": "Vision never reloads/recompiles partials", + "url": "https://github.com/hapijs/vision/issues/110" + } + ], "number": 17, - "title": "Fix crash when no global context is supplied, no handler context is supplied, and a layout template is being used", - "url": "https://github.com/hapijs/vision/pull/17" - }, - { - "id": 48604457, - "labels": ["bug"], + "url": "https://github.com/hapijs/vision/milestone/17", + "version": "5.2.0" + }, + { + "date": "2017-11-06T18:06:30Z", + "id": 2886816, + "issues": [], "number": 16, - "title": "404 gives error ", - "url": "https://github.com/hapijs/vision/issues/16" - } - ], - "number": 6, - "url": "https://github.com/hapijs/vision/milestone/6", - "version": "1.2.2" - }, - { - "date": "2014-11-10T20:00:27Z", - "id": 852428, - "issues": [ - { - "id": 48242088, - "labels": ["bug", "breaking changes"], + "url": "https://github.com/hapijs/vision/milestone/16", + "version": "5.0.1" + }, + { + "date": "2017-11-03T19:48:37Z", + "id": 2162618, + "issues": [ + { + "id": 271099411, + "labels": ["dependency"], + "number": 128, + "title": "Update deps", + "url": "https://github.com/hapijs/vision/issues/128" + }, + { + "id": 259058689, + "labels": ["breaking changes", "feature", "dependency"], + "number": 124, + "title": "hapi v17", + "url": "https://github.com/hapijs/vision/pull/124" + } + ], + "number": 15, + "url": "https://github.com/hapijs/vision/milestone/15", + "version": "5.0.0" + }, + { + "date": "2016-11-29T01:36:33Z", + "id": 2162589, + "issues": [ + { + "id": 192162108, + "labels": ["dependency"], + "number": 105, + "title": "Update deps", + "url": "https://github.com/hapijs/vision/issues/105" + } + ], "number": 14, - "title": "Global context performs deep merge which can produce unexpected results", - "url": "https://github.com/hapijs/vision/issues/14" - }, - { - "id": 48238948, - "labels": ["bug"], + "url": "https://github.com/hapijs/vision/milestone/14", + "version": "4.1.1" + }, + { + "date": "2016-11-29T01:14:27Z", + "id": 1677130, + "issues": [ + { + "id": 145211361, + "labels": ["feature"], + "number": 82, + "title": "Promises", + "url": "https://github.com/hapijs/vision/pull/82" + }, + { + "id": 145175082, + "labels": ["feature"], + "number": 81, + "title": "Pass request to global context function when available", + "url": "https://github.com/hapijs/vision/pull/81" + }, + { + "id": 145059890, + "labels": ["feature"], + "number": 80, + "title": "Register rendering helpers programmatically", + "url": "https://github.com/hapijs/vision/pull/80" + }, + { + "id": 145038587, + "labels": ["feature"], + "number": 79, + "title": "Report errors when loading helpers", + "url": "https://github.com/hapijs/vision/pull/79" + }, + { + "id": 125349933, + "labels": ["feature"], + "number": 73, + "title": "Send helper parsing error to user", + "url": "https://github.com/hapijs/vision/issues/73" + }, + { + "id": 121348673, + "labels": ["feature"], + "number": 68, + "title": "Register Helpers programmatically", + "url": "https://github.com/hapijs/vision/issues/68" + }, + { + "id": 108587280, + "labels": ["feature"], + "number": 59, + "title": "Global context with request argument", + "url": "https://github.com/hapijs/vision/issues/59" + } + ], "number": 13, - "title": "Context is cloned every render() even when there is no global context", - "url": "https://github.com/hapijs/vision/issues/13" - }, - { - "id": 48238619, - "labels": ["bug"], + "url": "https://github.com/hapijs/vision/milestone/13", + "version": "4.1.0" + }, + { + "date": "2015-11-09T16:30:25Z", + "id": 1402486, + "issues": [ + { + "id": 115312441, + "labels": ["bug"], + "number": 67, + "title": "Issue with underscore partials and vision", + "url": "https://github.com/hapijs/vision/issues/67" + } + ], "number": 12, - "title": "Schema allows setting global context per engine but not used", - "url": "https://github.com/hapijs/vision/issues/12" - }, - { - "id": 48237600, - "labels": ["bug"], + "url": "https://github.com/hapijs/vision/milestone/12", + "version": "4.0.1" + }, + { + "date": "2015-11-09T16:26:02Z", + "id": 1387567, + "issues": [ + { + "id": 114490028, + "labels": ["breaking changes", "dependency"], + "number": 66, + "title": "ES6 style changes and node v4.", + "url": "https://github.com/hapijs/vision/pull/66" + }, + { + "id": 113950960, + "labels": ["feature"], + "number": 65, + "title": "Update plugin attributes.", + "url": "https://github.com/hapijs/vision/pull/65" + }, + { + "id": 109581295, + "labels": ["feature"], + "number": 63, + "title": "Add new attributes: connections: false, once: true", + "url": "https://github.com/hapijs/vision/issues/63" + } + ], "number": 11, - "title": "context should always be cloned shallowly", - "url": "https://github.com/hapijs/vision/issues/11" - } - ], - "number": 4, - "url": "https://github.com/hapijs/vision/milestone/4", - "version": "1.2.1" - }, - { - "date": "2014-11-04T08:04:56Z", - "id": 819123, - "issues": [ - { - "id": 47510923, - "labels": ["feature"], + "url": "https://github.com/hapijs/vision/milestone/11", + "version": "4.0.0" + }, + { + "date": "2015-08-16T02:26:19Z", + "id": 1215858, + "issues": [ + { + "id": 100129229, + "labels": ["feature"], + "number": 40, + "title": "request.render(). Closes #39", + "url": "https://github.com/hapijs/vision/pull/40" + }, + { + "id": 100128697, + "labels": ["feature"], + "number": 39, + "title": "Add request.render() support", + "url": "https://github.com/hapijs/vision/issues/39" + }, + { + "id": 98180041, + "labels": ["feature"], + "number": 37, + "title": "Engine initialization.", + "url": "https://github.com/hapijs/vision/pull/37" + }, + { + "id": 94508236, + "labels": ["bug", "breaking changes"], + "number": 33, + "title": "Make compilation errors available to extensions.", + "url": "https://github.com/hapijs/vision/pull/33" + }, + { + "id": 93659980, + "labels": ["documentation"], + "number": 30, + "title": "Style cleanup.", + "url": "https://github.com/hapijs/vision/pull/30" + }, + { + "id": 93412638, + "labels": ["dependency"], + "number": 28, + "title": "Fix lint errors.", + "url": "https://github.com/hapijs/vision/pull/28" + }, + { + "id": 47936137, + "labels": ["bug"], + "number": 10, + "title": "Verify template and layout files exist in handler", + "url": "https://github.com/hapijs/vision/issues/10" + } + ], + "number": 9, + "url": "https://github.com/hapijs/vision/milestone/9", + "version": "3.0.0" + }, + { + "date": "2015-06-21T22:50:47Z", + "id": 898090, + "issues": [ + { + "id": 78974234, + "labels": ["dependency"], + "number": 25, + "title": "Update dependencies.", + "url": "https://github.com/hapijs/vision/pull/25" + }, + { + "id": 67964894, + "labels": ["bug"], + "number": 24, + "title": "Ensure _loaderHelpers registers actual filenames", + "url": "https://github.com/hapijs/vision/pull/24" + }, + { + "id": 58935972, + "labels": ["feature"], + "number": 22, + "title": "Helpful path location checked", + "url": "https://github.com/hapijs/vision/pull/22" + } + ], "number": 7, - "title": "Clean up code styling.", - "url": "https://github.com/hapijs/vision/pull/7" - }, - { - "id": 47224567, - "labels": ["feature"], + "url": "https://github.com/hapijs/vision/milestone/7", + "version": "2.0.1" + }, + { + "date": "2014-12-09T22:48:53Z", + "id": 852429, + "issues": [ + { + "id": 50442771, + "labels": ["feature"], + "number": 19, + "title": "Jagoda feat multiple paths", + "url": "https://github.com/hapijs/vision/pull/19" + }, + { + "id": 49288515, + "labels": ["breaking changes", "dependency"], + "number": 18, + "title": "Hapi8", + "url": "https://github.com/hapijs/vision/pull/18" + }, + { + "id": 48332734, + "labels": ["feature"], + "number": 15, + "title": "Support multiple paths.", + "url": "https://github.com/hapijs/vision/pull/15" + }, + { + "id": 47811790, + "labels": ["feature"], + "number": 9, + "title": "Multiple paths for views", + "url": "https://github.com/hapijs/vision/issues/9" + }, + { + "id": 47687213, + "labels": ["breaking changes"], + "number": 8, + "title": "Rename config basePath to relativeTo", + "url": "https://github.com/hapijs/vision/issues/8" + }, + { + "id": 46843419, + "labels": ["bug"], + "number": 5, + "title": "Replace all of the backslashes in partial names to correctly name deeply nested partials.", + "url": "https://github.com/hapijs/vision/pull/5" + } + ], + "number": 5, + "url": "https://github.com/hapijs/vision/milestone/5", + "version": "2.0.0" + }, + { + "date": "2014-11-18T20:21:27Z", + "id": 860632, + "issues": [ + { + "id": 48640837, + "labels": ["bug"], + "number": 17, + "title": "Fix crash when no global context is supplied, no handler context is supplied, and a layout template is being used", + "url": "https://github.com/hapijs/vision/pull/17" + }, + { + "id": 48604457, + "labels": ["bug"], + "number": 16, + "title": "404 gives error ", + "url": "https://github.com/hapijs/vision/issues/16" + } + ], "number": 6, - "title": "Support for global view context", - "url": "https://github.com/hapijs/vision/pull/6" - }, - { - "id": 46543222, - "labels": ["feature"], + "url": "https://github.com/hapijs/vision/milestone/6", + "version": "1.2.2" + }, + { + "date": "2014-11-10T20:00:27Z", + "id": 852428, + "issues": [ + { + "id": 48242088, + "labels": ["bug", "breaking changes"], + "number": 14, + "title": "Global context performs deep merge which can produce unexpected results", + "url": "https://github.com/hapijs/vision/issues/14" + }, + { + "id": 48238948, + "labels": ["bug"], + "number": 13, + "title": "Context is cloned every render() even when there is no global context", + "url": "https://github.com/hapijs/vision/issues/13" + }, + { + "id": 48238619, + "labels": ["bug"], + "number": 12, + "title": "Schema allows setting global context per engine but not used", + "url": "https://github.com/hapijs/vision/issues/12" + }, + { + "id": 48237600, + "labels": ["bug"], + "number": 11, + "title": "context should always be cloned shallowly", + "url": "https://github.com/hapijs/vision/issues/11" + } + ], "number": 4, - "title": "Global View Context", - "url": "https://github.com/hapijs/vision/issues/4" - } - ], - "number": 3, - "url": "https://github.com/hapijs/vision/milestone/3", - "version": "1.2.0" - }, - { - "date": "2014-10-08T22:20:12Z", - "id": 819082, - "issues": [ - { - "id": 45304732, - "labels": ["feature"], + "url": "https://github.com/hapijs/vision/milestone/4", + "version": "1.2.1" + }, + { + "date": "2014-11-04T08:04:56Z", + "id": 819123, + "issues": [ + { + "id": 47510923, + "labels": ["feature"], + "number": 7, + "title": "Clean up code styling.", + "url": "https://github.com/hapijs/vision/pull/7" + }, + { + "id": 47224567, + "labels": ["feature"], + "number": 6, + "title": "Support for global view context", + "url": "https://github.com/hapijs/vision/pull/6" + }, + { + "id": 46543222, + "labels": ["feature"], + "number": 4, + "title": "Global View Context", + "url": "https://github.com/hapijs/vision/issues/4" + } + ], "number": 3, - "title": "Allow appending default handler context", - "url": "https://github.com/hapijs/vision/issues/3" - } - ], - "number": 2, - "url": "https://github.com/hapijs/vision/milestone/2", - "version": "1.1.0" - }, - { - "date": "2014-10-08T22:01:56Z", - "id": 804965, - "issues": [ - { - "id": 44306834, - "labels": ["test"], + "url": "https://github.com/hapijs/vision/milestone/3", + "version": "1.2.0" + }, + { + "date": "2014-10-08T22:20:12Z", + "id": 819082, + "issues": [ + { + "id": 45304732, + "labels": ["feature"], + "number": 3, + "title": "Allow appending default handler context", + "url": "https://github.com/hapijs/vision/issues/3" + } + ], "number": 2, - "title": "Update Tests", - "url": "https://github.com/hapijs/vision/issues/2" - } - ], - "number": 1, - "url": "https://github.com/hapijs/vision/milestone/1", - "version": "1.0.3" - } + "url": "https://github.com/hapijs/vision/milestone/2", + "version": "1.1.0" + }, + { + "date": "2014-10-08T22:01:56Z", + "id": 804965, + "issues": [ + { + "id": 44306834, + "labels": ["test"], + "number": 2, + "title": "Update Tests", + "url": "https://github.com/hapijs/vision/issues/2" + } + ], + "number": 1, + "url": "https://github.com/hapijs/vision/milestone/1", + "version": "1.0.3" + } ] diff --git a/generated/modules/vision/info.json b/generated/modules/vision/info.json index ee9a0bc0..62d771b6 100644 --- a/generated/modules/vision/info.json +++ b/generated/modules/vision/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 68, - "isPlugin": true, - "link": "https://github.com/hapijs/vision", - "name": "vision", - "package": "@hapi/vision", - "slogan": "Template rendering support for hapi.js.", - "sloganHtml": "Template rendering support for hapi.js.", - "stars": 198, - "updated": "2024-10-23T21:57:52Z", - "versions": [ - { - "branch": "v7.0.3", - "license": "BSD", - "name": "7.0.3", - "node": ">= 16" - } - ], - "versionsArray": ["7.0.3"], - "latestVersion": "7.x.x" + "api": true, + "forks": 67, + "isPlugin": true, + "latestVersion": "7.x.x", + "link": "https://github.com/hapijs/vision", + "name": "vision", + "package": "@hapi/vision", + "slogan": "Template rendering support for hapi.js.", + "sloganHtml": "Template rendering support for hapi.js.", + "stars": 198, + "updated": "2024-10-23T21:57:52Z", + "versions": [ + { + "branch": "v7.0.3", + "license": "BSD", + "name": "7.0.3", + "node": ">= 16" + } + ], + "versionsArray": ["7.0.3"] } diff --git a/generated/modules/wreck/changelog.json b/generated/modules/wreck/changelog.json index 66b89c4d..94e2585b 100644 --- a/generated/modules/wreck/changelog.json +++ b/generated/modules/wreck/changelog.json @@ -1,1973 +1,2010 @@ [ - { - "date": "2024-04-10T17:38:08Z", - "id": 10802761, - "issues": [ - { - "id": 2194361723, - "labels": ["feature"], - "number": 309, - "title": "support custom lookup function in request() ", - "url": "https://github.com/hapijs/wreck/issues/309" - }, - { - "id": 2160979394, - "labels": ["feature"], - "number": 308, - "title": "support custom lookup function in request()", - "url": "https://github.com/hapijs/wreck/pull/308" - } - ], - "number": 78, - "url": "https://github.com/hapijs/wreck/milestone/78", - "version": "18.1.0" - }, - { - "date": "2024-04-10T17:30:20Z", - "id": 10802747, - "issues": [ - { - "id": 2202487820, - "labels": ["feature"], - "number": 310, - "title": "Optimize header toLowerCasing", - "url": "https://github.com/hapijs/wreck/pull/310" - } - ], - "number": 77, - "url": "https://github.com/hapijs/wreck/milestone/77", - "version": "18.0.2" - }, - { - "date": "2023-02-11T19:15:45Z", - "id": 7953253, - "issues": [ - { - "id": 1551773090, - "labels": [], - "number": 299, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/wreck/pull/299" - } - ], - "number": 76, - "url": "https://github.com/hapijs/wreck/milestone/76", - "version": "18.0.1" - }, - { - "date": "2022-05-07T22:42:04Z", - "id": 7953252, - "issues": [ - { - "id": 1228488666, - "labels": ["breaking changes", "dependency"], - "number": 296, - "title": "Support node v18 and drop node v12", - "url": "https://github.com/hapijs/wreck/pull/296" - } - ], - "number": 75, - "url": "https://github.com/hapijs/wreck/milestone/75", - "version": "18.0.0" - }, - { - "date": "2022-05-07T01:40:01Z", - "id": 7801658, - "issues": [ - { - "id": 1176214349, - "labels": ["feature"], - "number": 295, - "title": "[CI] Cancel redirect request", - "url": "https://github.com/hapijs/wreck/pull/295" - }, - { - "id": 1161784814, - "labels": ["bug", "breaking changes", "security", "semver: patch"], - "number": 292, - "title": "strip authorization and cookie headers when redirecting to a new hostname", - "url": "https://github.com/hapijs/wreck/pull/292" - }, - { - "id": 893566566, - "labels": ["feature"], - "number": 287, - "title": "Cancel redirect request", - "url": "https://github.com/hapijs/wreck/pull/287" - } - ], - "number": 73, - "url": "https://github.com/hapijs/wreck/milestone/73", - "version": "17.2.0" - }, - { - "date": "2020-11-23T23:11:10Z", - "id": 4973134, - "issues": [ - { - "id": 743255795, - "labels": [], - "number": 283, - "title": "Create ci-module.yml", - "url": "https://github.com/hapijs/wreck/pull/283" - }, - { - "id": 732865346, - "labels": ["feature"], - "number": 281, - "title": "added IPv6 support", - "url": "https://github.com/hapijs/wreck/pull/281" - }, - { - "id": 709598869, - "labels": [], - "number": 280, - "title": "upgrade lab to v24 and devDependency of typescript", - "url": "https://github.com/hapijs/wreck/pull/280" - }, - { - "id": 615682855, - "labels": ["bug"], - "number": 276, - "title": "Unable to GET a server that listens to IPv6 address. ETIMEDOUT", - "url": "https://github.com/hapijs/wreck/issues/276" - } - ], - "number": 71, - "url": "https://github.com/hapijs/wreck/milestone/71", - "version": "17.1.0" - }, - { - "date": "2020-01-04T21:06:07Z", - "id": 4973133, - "issues": [ - { - "id": 545332332, - "labels": ["breaking changes", "dependency"], - "number": 270, - "title": "Only node 12", - "url": "https://github.com/hapijs/wreck/issues/270" - }, - { - "id": 512516871, - "labels": ["feature"], - "number": 267, - "title": "Refactor early abort detection to use the 'abort' event", - "url": "https://github.com/hapijs/wreck/pull/267" - }, - { - "id": 512476621, - "labels": ["bug"], - "number": 266, - "title": "Don't set redirected host header", - "url": "https://github.com/hapijs/wreck/pull/266" - } - ], - "number": 70, - "url": "https://github.com/hapijs/wreck/milestone/70", - "version": "17.0.0" - }, - { - "date": "2019-10-15T00:16:13Z", - "id": 4748502, - "issues": [ - { - "id": 506931588, - "labels": ["bug", "types"], - "number": 264, - "title": "Allow any readable stream in read()", - "url": "https://github.com/hapijs/wreck/issues/264" - } - ], - "number": 68, - "url": "https://github.com/hapijs/wreck/milestone/68", - "version": "16.0.1" - }, - { - "date": "2019-10-15T00:02:12Z", - "id": 4748501, - "issues": [ - { - "id": 506497591, - "labels": ["breaking changes", "types"], - "number": 263, - "title": "Add types", - "url": "https://github.com/hapijs/wreck/issues/263" - }, - { - "id": 506497075, - "labels": ["breaking changes", "dependency"], - "number": 262, - "title": "Drop node 8", - "url": "https://github.com/hapijs/wreck/issues/262" - } - ], - "number": 67, - "url": "https://github.com/hapijs/wreck/milestone/67", - "version": "16.0.0" - }, - { - "date": "2019-09-18T19:00:00Z", - "id": 4574306, - "issues": [ - { - "id": 459855076, - "labels": ["bug"], - "number": 254, - "title": "'abort' event", - "url": "https://github.com/hapijs/wreck/issues/254" - }, - { - "id": 454749237, - "labels": ["feature"], - "number": 252, - "title": "Respect uri parameter when using socketPath", - "url": "https://github.com/hapijs/wreck/pull/252" - }, - { - "id": 454052435, - "labels": ["bug"], - "number": 250, - "title": "memory leak issue", - "url": "https://github.com/hapijs/wreck/pull/250" - }, - { - "id": 437208904, - "labels": ["feature"], - "number": 248, - "title": "Change redirect method in `beforeRedirect`", - "url": "https://github.com/hapijs/wreck/issues/248" - }, - { - "id": 429894617, - "labels": ["bug", "breaking changes"], - "number": 247, - "title": "Return an empty buffer payload on text content-type rather than `null`", - "url": "https://github.com/hapijs/wreck/pull/247" - } - ], - "number": 64, - "url": "https://github.com/hapijs/wreck/milestone/64", - "version": "15.1.0" - }, - { - "date": "2019-08-15T00:45:46Z", - "id": 4233511, - "issues": [ - { - "id": 480895268, - "labels": ["dependency"], - "number": 256, - "title": "Update deps", - "url": "https://github.com/hapijs/wreck/issues/256" - } - ], - "number": 63, - "url": "https://github.com/hapijs/wreck/milestone/63", - "version": "15.0.2" - }, - { - "date": "2019-04-16T07:02:25Z", - "id": 4190276, - "issues": [ - { - "id": 428950532, - "labels": ["bug"], - "number": 246, - "title": "Explicit host header trumps host implied in url", - "url": "https://github.com/hapijs/wreck/pull/246" - }, - { - "id": 428949354, - "labels": ["bug"], - "number": 245, - "title": "An explicit host header is ignored if the request url has no implicit host", - "url": "https://github.com/hapijs/wreck/issues/245" - } - ], - "number": 62, - "url": "https://github.com/hapijs/wreck/milestone/62", - "version": "15.0.1" - }, - { - "date": "2019-04-01T15:35:32Z", - "id": 4113654, - "issues": [ - { - "id": 427774890, - "labels": ["release notes"], - "number": 244, - "title": "15.0.0 Release Notes", - "url": "https://github.com/hapijs/wreck/issues/244" - }, - { - "id": 427223915, - "labels": ["dependency"], - "number": 243, - "title": "Change module namespace", - "url": "https://github.com/hapijs/wreck/issues/243" - }, - { - "id": 426112940, - "labels": ["breaking changes"], - "number": 242, - "title": "Remove usage of deprecated url.Parse", - "url": "https://github.com/hapijs/wreck/pull/242" - }, - { - "id": 407979960, - "labels": ["feature", "breaking changes"], - "number": 235, - "title": "Introduce new preRequest event and emit request on request event", - "url": "https://github.com/hapijs/wreck/pull/235" - }, - { - "id": 274970027, - "labels": ["breaking changes"], - "number": 209, - "title": "Shouldn't request event emit request object?", - "url": "https://github.com/hapijs/wreck/issues/209" - } - ], - "number": 59, - "url": "https://github.com/hapijs/wreck/milestone/59", - "version": "15.0.0" - }, - { - "date": "2019-03-05T22:32:13Z", - "id": 4042742, - "issues": [ - { - "id": 417530907, - "labels": ["dependency"], - "number": 240, - "title": "Update eslint md dev dep", - "url": "https://github.com/hapijs/wreck/pull/240" - }, - { - "id": 415809367, - "labels": ["feature"], - "number": 239, - "title": "Whatwg url", - "url": "https://github.com/hapijs/wreck/pull/239" - }, - { - "id": 415286532, - "labels": ["feature"], - "number": 238, - "title": "Can Wreck parse urls with the WHATWG Url?", - "url": "https://github.com/hapijs/wreck/issues/238" - } - ], - "number": 58, - "url": "https://github.com/hapijs/wreck/milestone/58", - "version": "14.2.0" - }, - { - "date": "2019-02-08T20:20:41Z", - "id": 3792295, - "issues": [ - { - "id": 408309023, - "labels": ["bug", "security"], - "number": 236, - "title": "Protect against prototype poisoning", - "url": "https://github.com/hapijs/wreck/issues/236" - } - ], - "number": 57, - "url": "https://github.com/hapijs/wreck/milestone/57", - "version": "14.1.4" - }, - { - "date": "2018-11-03T00:41:45Z", - "id": 3788956, - "issues": [ - { - "id": 377003505, - "labels": ["non issue"], - "number": 231, - "title": "Remove engines", - "url": "https://github.com/hapijs/wreck/issues/231" - } - ], - "number": 56, - "url": "https://github.com/hapijs/wreck/milestone/56", - "version": "14.1.3" - }, - { - "date": "2018-11-01T19:38:31Z", - "id": 3784166, - "issues": [ - { - "id": 376538359, - "labels": ["dependency"], - "number": 230, - "title": "Update hoek v6", - "url": "https://github.com/hapijs/wreck/issues/230" - } - ], - "number": 55, - "url": "https://github.com/hapijs/wreck/milestone/55", - "version": "14.1.2" - }, - { - "date": "2018-10-31T05:49:04Z", - "id": 3587709, - "issues": [ - { - "id": 375808018, - "labels": ["non issue"], - "number": 229, - "title": "Cleanup", - "url": "https://github.com/hapijs/wreck/issues/229" - } - ], - "number": 54, - "url": "https://github.com/hapijs/wreck/milestone/54", - "version": "14.1.1" - }, - { - "date": "2018-08-21T18:24:32Z", - "id": 2886696, - "issues": [ - { - "id": 349567986, - "labels": ["bug"], - "number": 226, - "title": "Handle edge cases introduced with deferred payload piping", - "url": "https://github.com/hapijs/wreck/pull/226" - }, - { - "id": 344094439, - "labels": ["bug"], - "number": 225, - "title": "Handle stream payload errors before socket connection", - "url": "https://github.com/hapijs/wreck/pull/225" - }, - { - "id": 343955699, - "labels": ["bug"], - "number": 224, - "title": "Workaround node 10 regression", - "url": "https://github.com/hapijs/wreck/pull/224" - }, - { - "id": 343699877, - "labels": ["bug"], - "number": 223, - "title": " Defer piping of options.payload until socket connection", - "url": "https://github.com/hapijs/wreck/pull/223" - }, - { - "id": 339038173, - "labels": ["bug"], - "number": 222, - "title": "Investigate only piping the payload after a connection is established", - "url": "https://github.com/hapijs/wreck/issues/222" - }, - { - "id": 307170822, - "labels": ["bug"], - "number": 218, - "title": "Remove new Buffer usage", - "url": "https://github.com/hapijs/wreck/pull/218" - }, - { - "id": 302846364, - "labels": ["test"], - "number": 215, - "title": "test(request) correct tests to check errors for boom instance", - "url": "https://github.com/hapijs/wreck/pull/215" - } - ], - "number": 53, - "url": "https://github.com/hapijs/wreck/milestone/53", - "version": "14.1.0" - }, - { - "date": "2017-11-03T18:41:17Z", - "id": 2886695, - "issues": [ - { - "id": 271077847, - "labels": ["bug", "dependency"], - "number": 208, - "title": "Fix new Boom", - "url": "https://github.com/hapijs/wreck/issues/208" - } - ], - "number": 52, - "url": "https://github.com/hapijs/wreck/milestone/52", - "version": "14.0.2" - }, - { - "date": "2017-11-03T18:40:55Z", - "id": 2855911, - "issues": [ - { - "id": 270911717, - "labels": ["dependency"], - "number": 207, - "title": "Update deps", - "url": "https://github.com/hapijs/wreck/issues/207" - }, - { - "id": 267826222, - "labels": ["dependency"], - "number": 206, - "title": "Upgrade to lab 15", - "url": "https://github.com/hapijs/wreck/pull/206" - } - ], - "number": 51, - "url": "https://github.com/hapijs/wreck/milestone/51", - "version": "14.0.1" - }, - { - "date": "2017-10-21T16:25:23Z", - "id": 2794221, - "issues": [ - { - "id": 266925841, - "labels": ["bug", "breaking changes"], - "number": 205, - "title": "Change maxBytes error to 413", - "url": "https://github.com/hapijs/wreck/pull/205" - }, - { - "id": 261705697, - "labels": ["documentation", "dependency", "lts"], - "number": 204, - "title": "Cleanup and lint readme", - "url": "https://github.com/hapijs/wreck/pull/204" - } - ], - "number": 50, - "url": "https://github.com/hapijs/wreck/milestone/50", - "version": "14.0.0" - }, - { - "date": "2017-09-26T09:16:22Z", - "id": 2789786, - "issues": [ - { - "id": 260549752, - "labels": ["dependency"], - "number": 202, - "title": "Update deps", - "url": "https://github.com/hapijs/wreck/issues/202" - } - ], - "number": 48, - "url": "https://github.com/hapijs/wreck/milestone/48", - "version": "13.0.3" - }, - { - "date": "2017-09-25T14:52:30Z", - "id": 2775830, - "issues": [ - { - "id": 260017287, - "labels": ["bug"], - "number": 199, - "title": "Return errors for partial payload transfers", - "url": "https://github.com/hapijs/wreck/pull/199" - } - ], - "number": 47, - "url": "https://github.com/hapijs/wreck/milestone/47", - "version": "13.0.2" - }, - { - "date": "2017-09-18T22:02:39Z", - "id": 2772462, - "issues": [ - { - "id": 258635042, - "labels": ["bug"], - "number": 198, - "title": "Retain boom errors from response stream on read()", - "url": "https://github.com/hapijs/wreck/issues/198" - } - ], - "number": 46, - "url": "https://github.com/hapijs/wreck/milestone/46", - "version": "13.0.1" - }, - { - "date": "2017-09-18T00:17:55Z", - "id": 2751040, - "issues": [ - { - "id": 258283122, - "labels": ["feature", "breaking changes"], - "number": 197, - "title": "Move to use async functions", - "url": "https://github.com/hapijs/wreck/pull/197" - }, - { - "id": 258283038, - "labels": ["feature", "breaking changes"], - "number": 196, - "title": "Migrate to async/await", - "url": "https://github.com/hapijs/wreck/issues/196" - } - ], - "number": 45, - "url": "https://github.com/hapijs/wreck/milestone/45", - "version": "13.0.0" - }, - { - "date": "2019-09-18T19:05:07Z", - "id": 4162541, - "issues": [ - { - "id": 495402144, - "labels": ["bug", "commercial"], - "number": 258, - "title": "Backport #250 ", - "url": "https://github.com/hapijs/wreck/issues/258" - } - ], - "number": 61, - "url": "https://github.com/hapijs/wreck/milestone/61", - "version": "12.6.1" - }, - { - "date": "2019-03-22T01:16:26Z", - "id": 4162540, - "issues": [ - { - "id": 424006398, - "labels": ["lts"], - "number": 241, - "title": "Commercial version of v12 branch", - "url": "https://github.com/hapijs/wreck/issues/241" - } - ], - "number": 60, - "url": "https://github.com/hapijs/wreck/milestone/60", - "version": "12.6.0" - }, - { - "date": "2017-09-25T15:38:09Z", - "id": 2789903, - "issues": [ - { - "id": 260321611, - "labels": ["bug"], - "number": 201, - "title": "Return errors for partial payload transfers", - "url": "https://github.com/hapijs/wreck/issues/201" - }, - { - "id": 260319255, - "labels": ["lts"], - "number": 200, - "title": "version 12.5.1", - "url": "https://github.com/hapijs/wreck/pull/200" - } - ], - "number": 49, - "url": "https://github.com/hapijs/wreck/milestone/49", - "version": "12.5.1" - }, - { - "date": "2017-09-07T16:27:31Z", - "id": 2738747, - "issues": [ - { - "id": 255992932, - "labels": ["feature"], - "number": 195, - "title": "closes #194 - support for a list of TLS ciphers", - "url": "https://github.com/hapijs/wreck/pull/195" - }, - { - "id": 255992626, - "labels": ["feature"], - "number": 194, - "title": "Add support for specifying the TLS ciphers list", - "url": "https://github.com/hapijs/wreck/issues/194" - } - ], - "number": 44, - "url": "https://github.com/hapijs/wreck/milestone/44", - "version": "12.5.0" - }, - { - "date": "2017-09-01T15:01:21Z", - "id": 2737532, - "issues": [ - { - "id": 254525160, - "labels": ["feature"], - "number": 193, - "title": "Add onRequest to request options", - "url": "https://github.com/hapijs/wreck/pull/193" - } - ], - "number": 43, - "url": "https://github.com/hapijs/wreck/milestone/43", - "version": "12.4.0" - }, - { - "date": "2017-09-01T02:56:08Z", - "id": 2694861, - "issues": [ - { - "id": 254041386, - "labels": ["feature"], - "number": 192, - "title": "Add a gunzipping option", - "url": "https://github.com/hapijs/wreck/pull/192" - }, - { - "id": 250448892, - "labels": ["feature"], - "number": 190, - "title": "Add \"strict\" json option", - "url": "https://github.com/hapijs/wreck/pull/190" - }, - { - "id": 240119805, - "labels": ["bug"], - "number": 186, - "title": "Add \"strict\" json option", - "url": "https://github.com/hapijs/wreck/issues/186" - } - ], - "number": 42, - "url": "https://github.com/hapijs/wreck/milestone/42", - "version": "12.3.0" - }, - { - "date": "2017-08-10T17:14:15Z", - "id": 2546822, - "issues": [ - { - "id": 249104370, - "labels": ["bug"], - "number": 189, - "title": "Fix possible content-type header duplication", - "url": "https://github.com/hapijs/wreck/pull/189" - }, - { - "id": 249101695, - "labels": ["bug"], - "number": 188, - "title": "Possible `content-type` header duplication", - "url": "https://github.com/hapijs/wreck/issues/188" - }, - { - "id": 235711877, - "labels": ["dependency", "lts"], - "number": 184, - "title": "Upgrade lab", - "url": "https://github.com/hapijs/wreck/pull/184" - } - ], - "number": 41, - "url": "https://github.com/hapijs/wreck/milestone/41", - "version": "12.2.3" - }, - { - "date": "2017-05-28T09:05:06Z", - "id": 2546765, - "issues": [ - { - "id": 231856083, - "labels": ["test"], - "number": 183, - "title": "Fix tests for node 7.10.0", - "url": "https://github.com/hapijs/wreck/issues/183" - } - ], - "number": 40, - "url": "https://github.com/hapijs/wreck/milestone/40", - "version": "12.2.2" - }, - { - "date": "2017-05-28T07:02:09Z", - "id": 2507315, - "issues": [ - { - "id": 231851138, - "labels": ["dependency"], - "number": 182, - "title": "Update deps.", - "url": "https://github.com/hapijs/wreck/issues/182" - } - ], - "number": 39, - "url": "https://github.com/hapijs/wreck/milestone/39", - "version": "12.2.1" - }, - { - "date": "2017-05-08T14:47:54Z", - "id": 2467382, - "issues": [ - { - "id": 224033953, - "labels": ["feature"], - "number": 177, - "title": "fix(json): allow numbers in mime fixes #176", - "url": "https://github.com/hapijs/wreck/pull/177" - }, - { - "id": 223379884, - "labels": ["feature"], - "number": 175, - "title": "Include full response with the HTTP error", - "url": "https://github.com/hapijs/wreck/pull/175" - }, - { - "id": 222727124, - "labels": ["feature"], - "number": 173, - "title": "Return full response with the Boom HTTP error", - "url": "https://github.com/hapijs/wreck/issues/173" - }, - { - "id": 219359040, - "labels": ["documentation"], - "number": 170, - "title": "4XX is now an error", - "url": "https://github.com/hapijs/wreck/issues/170" - } - ], - "number": 38, - "url": "https://github.com/hapijs/wreck/milestone/38", - "version": "12.2.0" - }, - { - "date": "2017-04-19T18:22:23Z", - "id": 2409626, - "issues": [ - { - "id": 222817315, - "labels": ["test", "lts"], - "number": 174, - "title": "Tidy code around default agents", - "url": "https://github.com/hapijs/wreck/pull/174" - }, - { - "id": 221871544, - "labels": ["documentation"], - "number": 172, - "title": "Update README.md", - "url": "https://github.com/hapijs/wreck/pull/172" - }, - { - "id": 218710834, - "labels": ["lts"], - "number": 169, - "title": "Pass an Error object to Boom.create for #168", - "url": "https://github.com/hapijs/wreck/pull/169" - }, - { - "id": 202216312, - "labels": ["feature"], - "number": 156, - "title": "Preserve `agents` across .defaults({...})", - "url": "https://github.com/hapijs/wreck/pull/156" - } - ], - "number": 37, - "url": "https://github.com/hapijs/wreck/milestone/37", - "version": "12.1.0" - }, - { - "date": "2017-03-24T16:43:32Z", - "id": 2402263, - "issues": [ - { - "id": 216838433, - "labels": ["breaking changes", "release notes"], - "number": 165, - "title": "12.0.0 Release Notes", - "url": "https://github.com/hapijs/wreck/issues/165" - }, - { - "id": 216478516, - "labels": ["feature", "breaking changes"], - "number": 164, - "title": "Fix boom response error handling", - "url": "https://github.com/hapijs/wreck/pull/164" - }, - { - "id": 216086750, - "labels": ["bug"], - "number": 163, - "title": "Keep request on error status", - "url": "https://github.com/hapijs/wreck/pull/163" - } - ], - "number": 36, - "url": "https://github.com/hapijs/wreck/milestone/36", - "version": "12.0.0" - }, - { - "date": "2017-03-21T23:44:53Z", - "id": 1991669, - "issues": [ - { - "id": 215906221, - "labels": ["breaking changes", "release notes"], - "number": 162, - "title": "11.0.0 Release Notes", - "url": "https://github.com/hapijs/wreck/issues/162" - }, - { - "id": 215903433, - "labels": ["bug", "breaking changes"], - "number": 161, - "title": "Fix redirection method for 301, 302", - "url": "https://github.com/hapijs/wreck/pull/161" - }, - { - "id": 215899389, - "labels": ["dependency"], - "number": 160, - "title": "Update lab dep", - "url": "https://github.com/hapijs/wreck/pull/160" - }, - { - "id": 215898710, - "labels": ["documentation"], - "number": 159, - "title": "Add example https agent setting", - "url": "https://github.com/hapijs/wreck/pull/159" - }, - { - "id": 215896989, - "labels": ["feature", "breaking changes"], - "number": 158, - "title": "Wrap error response with Boom", - "url": "https://github.com/hapijs/wreck/pull/158" - }, - { - "id": 215891679, - "labels": ["feature", "breaking changes"], - "number": 157, - "title": "Change response event signature", - "url": "https://github.com/hapijs/wreck/pull/157" - }, - { - "id": 197784158, - "labels": ["dependency"], - "number": 155, - "title": "Update code dep", - "url": "https://github.com/hapijs/wreck/pull/155" - }, - { - "id": 197782504, - "labels": ["documentation", "test"], - "number": 154, - "title": "Clarify state of response in shortcuts", - "url": "https://github.com/hapijs/wreck/pull/154" - }, - { - "id": 197027538, - "labels": ["documentation"], - "number": 153, - "title": "Question about responses as readable streams", - "url": "https://github.com/hapijs/wreck/issues/153" - }, - { - "id": 163527093, - "labels": ["bug"], - "number": 138, - "title": "Redirect 302 changes method from POST to GET", - "url": "https://github.com/hapijs/wreck/issues/138" - }, - { - "id": 70724842, - "labels": ["feature", "breaking changes"], - "number": 83, - "title": "Change \"response\" Payload", - "url": "https://github.com/hapijs/wreck/issues/83" - }, - { - "id": 70273952, - "labels": ["feature", "breaking changes"], - "number": 82, - "title": "Option to convert 4xx and 5xx to errors", - "url": "https://github.com/hapijs/wreck/issues/82" - }, - { - "id": 47420553, - "labels": ["documentation"], - "number": 66, - "title": "Add certificate options for requests", - "url": "https://github.com/hapijs/wreck/issues/66" - } - ], - "number": 35, - "url": "https://github.com/hapijs/wreck/milestone/35", - "version": "11.0.0" - }, - { - "date": "2016-09-08T17:33:49Z", - "id": 1921420, - "issues": [ - { - "id": 175814117, - "labels": ["breaking changes", "release notes"], - "number": 150, - "title": "10.0.0 Release Notes", - "url": "https://github.com/hapijs/wreck/issues/150" - }, - { - "id": 175811359, - "labels": ["dependency"], - "number": 149, - "title": "Update boom and lab deps", - "url": "https://github.com/hapijs/wreck/pull/149" - }, - { - "id": 175787420, - "labels": ["bug", "breaking changes"], - "number": 148, - "title": "Refactor event propagation", - "url": "https://github.com/hapijs/wreck/pull/148" - }, - { - "id": 175787150, - "labels": ["test"], - "number": 147, - "title": "Fix tests to timeout quicker", - "url": "https://github.com/hapijs/wreck/pull/147" - } - ], - "number": 34, - "url": "https://github.com/hapijs/wreck/milestone/34", - "version": "10.0.0" - }, - { - "date": "2016-08-03T16:51:17Z", - "id": 1910394, - "issues": [ - { - "id": 169179499, - "labels": ["breaking changes", "release notes"], - "number": 144, - "title": "9.0.0 Release Notes", - "url": "https://github.com/hapijs/wreck/issues/144" - }, - { - "id": 169163414, - "labels": ["feature"], - "number": 143, - "title": "Stringify payload objects", - "url": "https://github.com/hapijs/wreck/pull/143" - }, - { - "id": 168944839, - "labels": ["bug", "breaking changes"], - "number": 142, - "title": "Fix redirect with different host on default options", - "url": "https://github.com/hapijs/wreck/pull/142" - }, - { - "id": 157064856, - "labels": ["bug"], - "number": 131, - "title": "Fail to redirect to different host", - "url": "https://github.com/hapijs/wreck/issues/131" - }, - { - "id": 124975404, - "labels": ["feature"], - "number": 113, - "title": "Suggestion: Allow json objects as payload ", - "url": "https://github.com/hapijs/wreck/issues/113" - } - ], - "number": 33, - "url": "https://github.com/hapijs/wreck/milestone/33", - "version": "9.0.0" - }, - { - "date": "2016-07-28T19:50:10Z", - "id": 1805238, - "issues": [ - { - "id": 168180765, - "labels": ["documentation"], - "number": 141, - "title": "npmignore", - "url": "https://github.com/hapijs/wreck/issues/141" - }, - { - "id": 158920782, - "labels": ["documentation"], - "number": 137, - "title": "add node version badge", - "url": "https://github.com/hapijs/wreck/pull/137" - } - ], - "number": 32, - "url": "https://github.com/hapijs/wreck/milestone/32", - "version": "8.0.1" - }, - { - "date": "2016-06-02T15:24:05Z", - "id": 1763299, - "issues": [ - { - "id": 158167476, - "labels": ["dependency"], - "number": 136, - "title": "Upgrade to code v3", - "url": "https://github.com/hapijs/wreck/pull/136" - }, - { - "id": 158085876, - "labels": ["breaking changes", "release notes"], - "number": 135, - "title": "8.0.0 Release Notes", - "url": "https://github.com/hapijs/wreck/issues/135" - }, - { - "id": 158079438, - "labels": ["feature", "breaking changes"], - "number": 134, - "title": "Expose response headers on redirect", - "url": "https://github.com/hapijs/wreck/issues/134" - }, - { - "id": 158077835, - "labels": ["feature", "breaking changes"], - "number": 133, - "title": "Redirect 303 and expose headers", - "url": "https://github.com/hapijs/wreck/pull/133" - }, - { - "id": 158076142, - "labels": ["feature"], - "number": 132, - "title": "Support 303 Redirection", - "url": "https://github.com/hapijs/wreck/issues/132" - } - ], - "number": 31, - "url": "https://github.com/hapijs/wreck/milestone/31", - "version": "8.0.0" - }, - { - "date": "2016-05-12T21:06:01Z", - "id": 1710542, - "issues": [ - { - "id": 154576494, - "labels": ["bug"], - "number": 130, - "title": "A missing callback on request still allows client requests to work", - "url": "https://github.com/hapijs/wreck/pull/130" - }, - { - "id": 153343629, - "labels": ["lts"], - "number": 129, - "title": "Use node 6 on travis", - "url": "https://github.com/hapijs/wreck/pull/129" - } - ], - "number": 30, - "url": "https://github.com/hapijs/wreck/milestone/30", - "version": "7.2.1" - }, - { - "date": "2016-04-15T19:31:41Z", - "id": 1664461, - "issues": [ - { - "id": 148747232, - "labels": ["feature"], - "number": 127, - "title": "Add global request event", - "url": "https://github.com/hapijs/wreck/pull/127" - }, - { - "id": 148746960, - "labels": ["feature"], - "number": 126, - "title": "Add `request` emit", - "url": "https://github.com/hapijs/wreck/issues/126" - }, - { - "id": 148690196, - "labels": ["feature"], - "number": 125, - "title": "Use a global event emitter for wreck events", - "url": "https://github.com/hapijs/wreck/pull/125" - } - ], - "number": 29, - "url": "https://github.com/hapijs/wreck/milestone/29", - "version": "7.2.0" - }, - { - "date": "2016-03-24T18:22:14Z", - "id": 1623939, - "issues": [ - { - "id": 142920918, - "labels": ["feature"], - "number": 123, - "title": "Add support for Unix sockets", - "url": "https://github.com/hapijs/wreck/pull/123" - } - ], - "number": 28, - "url": "https://github.com/hapijs/wreck/milestone/28", - "version": "7.1.0" - }, - { - "date": "2016-03-05T20:01:09Z", - "id": 1618395, - "issues": [ - { - "id": 138712304, - "labels": ["bug"], - "number": 121, - "title": "Content-Length header check is now case insensitive", - "url": "https://github.com/hapijs/wreck/pull/121" - }, - { - "id": 138344017, - "labels": ["bug"], - "number": 120, - "title": "lowercase the content-length header", - "url": "https://github.com/hapijs/wreck/pull/120" - } - ], - "number": 27, - "url": "https://github.com/hapijs/wreck/milestone/27", - "version": "7.0.2" - }, - { - "date": "2016-03-02T17:52:08Z", - "id": 1386877, - "issues": [ - { - "id": 137944061, - "labels": ["test", "dependency"], - "number": 119, - "title": "Update deps and fix tests", - "url": "https://github.com/hapijs/wreck/pull/119" - }, - { - "id": 137761865, - "labels": ["bug"], - "number": 118, - "title": "Add tests for defaults", - "url": "https://github.com/hapijs/wreck/pull/118" - }, - { - "id": 137759020, - "labels": ["bug"], - "number": 117, - "title": "Wreck#request's options are overridden by Defaults", - "url": "https://github.com/hapijs/wreck/issues/117" - } - ], - "number": 26, - "url": "https://github.com/hapijs/wreck/milestone/26", - "version": "7.0.1" - }, - { - "date": "2015-10-31T19:41:15Z", - "id": 1324268, - "issues": [ - { - "id": 114422836, - "labels": ["breaking changes"], - "number": 109, - "title": "ES6 style and node v4", - "url": "https://github.com/hapijs/wreck/issues/109" - } - ], - "number": 25, - "url": "https://github.com/hapijs/wreck/milestone/25", - "version": "7.0.0" - }, - { - "date": "2015-09-25T17:43:36Z", - "id": 1274847, - "issues": [ - { - "id": 107897891, - "labels": ["feature"], - "number": 108, - "title": "Add a beforeRedirect callback option", - "url": "https://github.com/hapijs/wreck/pull/108" - }, - { - "id": 106093245, - "labels": ["test"], - "number": 106, - "title": "Fix code coverage", - "url": "https://github.com/hapijs/wreck/pull/106" - }, - { - "id": 106052668, - "labels": ["test"], - "number": 105, - "title": "Workaround node issue in test", - "url": "https://github.com/hapijs/wreck/pull/105" - }, - { - "id": 105522828, - "labels": ["test"], - "number": 104, - "title": "Fails on node v4", - "url": "https://github.com/hapijs/wreck/issues/104" - } - ], - "number": 24, - "url": "https://github.com/hapijs/wreck/milestone/24", - "version": "6.3.0" - }, - { - "date": "2015-08-26T22:02:12Z", - "id": 1232381, - "issues": [ - { - "id": 103369536, - "labels": ["feature"], - "number": 102, - "title": "add 'PATCH' convenience method.", - "url": "https://github.com/hapijs/wreck/pull/102" - } - ], - "number": 23, - "url": "https://github.com/hapijs/wreck/milestone/23", - "version": "6.2.0" - }, - { - "date": "2015-07-30T02:57:44Z", - "id": 1189757, - "issues": [ - { - "id": 92833027, - "labels": ["feature"], - "number": 97, - "title": "Add a redirected callback request option", - "url": "https://github.com/hapijs/wreck/pull/97" - }, - { - "id": 88446437, - "labels": ["feature"], - "number": 91, - "title": "Can't read redirected URI", - "url": "https://github.com/hapijs/wreck/issues/91" - } - ], - "number": 22, - "url": "https://github.com/hapijs/wreck/milestone/22", - "version": "6.1.0" - }, - { - "date": "2015-07-01T21:34:41Z", - "id": 1189459, - "issues": [ - { - "id": 92489338, - "labels": ["breaking changes", "release notes"], - "number": 96, - "title": "6.0.0 Release notes", - "url": "https://github.com/hapijs/wreck/issues/96" - }, - { - "id": 92483342, - "labels": ["bug", "breaking changes"], - "number": 95, - "title": "Payload returns as a buffer. Fixes Issue #75", - "url": "https://github.com/hapijs/wreck/pull/95" - }, - { - "id": 59901071, - "labels": ["bug", "breaking changes"], - "number": 75, - "title": "Read automatically converts payload from Buffer to UTF-8 String", - "url": "https://github.com/hapijs/wreck/issues/75" - } - ], - "number": 21, - "url": "https://github.com/hapijs/wreck/milestone/21", - "version": "6.0.0" - }, - { - "date": "2015-07-01T17:44:21Z", - "id": 1172768, - "issues": [ - { - "id": 92262401, - "labels": ["bug"], - "number": 94, - "title": "Skip res.destroy() when not present. Closes #71", - "url": "https://github.com/hapijs/wreck/pull/94" - }, - { - "id": 90130466, - "labels": ["bug", "security"], - "number": 93, - "title": "Fix missing options when redirecting", - "url": "https://github.com/hapijs/wreck/pull/93" - }, - { - "id": 56383617, - "labels": ["bug"], - "number": 71, - "title": "Attempt to call `destroy()` on `Gunzip` object", - "url": "https://github.com/hapijs/wreck/issues/71" - } - ], - "number": 20, - "url": "https://github.com/hapijs/wreck/milestone/20", - "version": "5.6.1" - }, - { - "date": "2015-06-19T17:22:13Z", - "id": 1081114, - "issues": [ - { - "id": 89600746, - "labels": ["feature"], - "number": 92, - "title": "More robust baseUrl and uri merging", - "url": "https://github.com/hapijs/wreck/pull/92" - }, - { - "id": 81919895, - "labels": ["feature"], - "number": 89, - "title": "support for detecting/parsing +json suffix types i.e. application/*+json", - "url": "https://github.com/hapijs/wreck/pull/89" - }, - { - "id": 80997270, - "labels": ["non issue"], - "number": 88, - "title": "Maintenance", - "url": "https://github.com/hapijs/wreck/pull/88" - }, - { - "id": 80206515, - "labels": ["non issue"], - "number": 87, - "title": "Update license attribute", - "url": "https://github.com/hapijs/wreck/pull/87" - }, - { - "id": 79159172, - "labels": ["feature"], - "number": 86, - "title": "Add support for the `baseUrl` option", - "url": "https://github.com/hapijs/wreck/pull/86" - }, - { - "id": 78730820, - "labels": ["feature"], - "number": 85, - "title": "add support for defaults", - "url": "https://github.com/hapijs/wreck/pull/85" - } - ], - "number": 19, - "url": "https://github.com/hapijs/wreck/milestone/19", - "version": "5.6.0" - }, - { - "date": "2015-04-23T19:11:46Z", - "id": 1047707, - "issues": [ - { - "id": 69892701, - "labels": ["feature"], - "number": 81, - "title": "Added uri to event payloads.", - "url": "https://github.com/hapijs/wreck/pull/81" - } - ], - "number": 17, - "url": "https://github.com/hapijs/wreck/milestone/17", - "version": "5.5.0" - }, - { - "date": "2015-03-31T20:49:52Z", - "id": 1034497, - "issues": [ - { - "id": 65536802, - "labels": ["feature"], + { + "date": "2026-05-20T10:27:25Z", + "id": 16006393, + "issues": [ + { + "id": 4485472888, + "labels": ["bug", "security"], + "number": 313, + "title": "fix: cross-origin redirect should also remove sensitive headers", + "url": "https://github.com/hapijs/wreck/pull/313" + } + ], + "number": 80, + "url": "https://github.com/hapijs/wreck/milestone/80", + "version": "18.1.2" + }, + { + "date": "2026-05-06T09:49:00Z", + "id": 15814221, + "issues": [ + { + "id": 4390163679, + "labels": ["bug", "security"], + "number": 312, + "title": "fix: strip proxy-authorization header on redirect", + "url": "https://github.com/hapijs/wreck/pull/312" + } + ], "number": 79, - "title": "Add start time to response event", - "url": "https://github.com/hapijs/wreck/pull/79" - }, - { - "id": 65536519, - "labels": ["feature"], + "url": "https://github.com/hapijs/wreck/milestone/79", + "version": "18.1.1" + }, + { + "date": "2024-04-10T17:38:08Z", + "id": 10802761, + "issues": [ + { + "id": 2194361723, + "labels": ["feature"], + "number": 309, + "title": "support custom lookup function in request() ", + "url": "https://github.com/hapijs/wreck/issues/309" + }, + { + "id": 2160979394, + "labels": ["feature"], + "number": 308, + "title": "support custom lookup function in request()", + "url": "https://github.com/hapijs/wreck/pull/308" + } + ], "number": 78, - "title": "Add start time to response event", - "url": "https://github.com/hapijs/wreck/issues/78" - } - ], - "number": 16, - "url": "https://github.com/hapijs/wreck/milestone/16", - "version": "5.4.0" - }, - { - "date": "2015-03-23T17:03:12Z", - "id": 979061, - "issues": [ - { - "id": 61117631, - "labels": ["feature"], + "url": "https://github.com/hapijs/wreck/milestone/78", + "version": "18.1.0" + }, + { + "date": "2024-04-10T17:30:20Z", + "id": 10802747, + "issues": [ + { + "id": 2202487820, + "labels": ["feature"], + "number": 310, + "title": "Optimize header toLowerCasing", + "url": "https://github.com/hapijs/wreck/pull/310" + } + ], "number": 77, - "title": "Add event for response and logging", - "url": "https://github.com/hapijs/wreck/pull/77" - }, - { - "id": 60586038, - "labels": ["feature"], + "url": "https://github.com/hapijs/wreck/milestone/77", + "version": "18.0.2" + }, + { + "date": "2023-02-11T19:15:45Z", + "id": 7953253, + "issues": [ + { + "id": 1551773090, + "labels": [], + "number": 299, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/wreck/pull/299" + } + ], "number": 76, - "title": "Adding log support", - "url": "https://github.com/hapijs/wreck/pull/76" - }, - { - "id": 59692485, - "labels": ["feature"], - "number": 74, - "title": "implement debugging to file and console. Fixes #72", - "url": "https://github.com/hapijs/wreck/pull/74" - }, - { - "id": 58610133, - "labels": ["bug"], + "url": "https://github.com/hapijs/wreck/milestone/76", + "version": "18.0.1" + }, + { + "date": "2022-05-07T22:42:04Z", + "id": 7953252, + "issues": [ + { + "id": 1228488666, + "labels": ["breaking changes", "dependency"], + "number": 296, + "title": "Support node v18 and drop node v12", + "url": "https://github.com/hapijs/wreck/pull/296" + } + ], + "number": 75, + "url": "https://github.com/hapijs/wreck/milestone/75", + "version": "18.0.0" + }, + { + "date": "2022-05-07T01:40:01Z", + "id": 7801658, + "issues": [ + { + "id": 1176214349, + "labels": ["feature"], + "number": 295, + "title": "[CI] Cancel redirect request", + "url": "https://github.com/hapijs/wreck/pull/295" + }, + { + "id": 1161784814, + "labels": [ + "bug", + "breaking changes", + "security", + "semver: patch" + ], + "number": 292, + "title": "strip authorization and cookie headers when redirecting to a new hostname", + "url": "https://github.com/hapijs/wreck/pull/292" + }, + { + "id": 893566566, + "labels": ["feature"], + "number": 287, + "title": "Cancel redirect request", + "url": "https://github.com/hapijs/wreck/pull/287" + } + ], "number": 73, - "title": "Fix issues with node 0.12", - "url": "https://github.com/hapijs/wreck/pull/73" - }, - { - "id": 57957954, - "labels": ["feature"], - "number": 72, - "title": "Add logging to req/res details for debug mode", - "url": "https://github.com/hapijs/wreck/issues/72" - } - ], - "number": 15, - "url": "https://github.com/hapijs/wreck/milestone/15", - "version": "5.3.0" - }, - { - "date": "2015-02-13T22:17:58Z", - "id": 905130, - "issues": [ - { - "id": 53810503, - "labels": ["feature"], + "url": "https://github.com/hapijs/wreck/milestone/73", + "version": "17.2.0" + }, + { + "date": "2020-11-23T23:11:10Z", + "id": 4973134, + "issues": [ + { + "id": 743255795, + "labels": [], + "number": 283, + "title": "Create ci-module.yml", + "url": "https://github.com/hapijs/wreck/pull/283" + }, + { + "id": 732865346, + "labels": ["feature"], + "number": 281, + "title": "added IPv6 support", + "url": "https://github.com/hapijs/wreck/pull/281" + }, + { + "id": 709598869, + "labels": [], + "number": 280, + "title": "upgrade lab to v24 and devDependency of typescript", + "url": "https://github.com/hapijs/wreck/pull/280" + }, + { + "id": 615682855, + "labels": ["bug"], + "number": 276, + "title": "Unable to GET a server that listens to IPv6 address. ETIMEDOUT", + "url": "https://github.com/hapijs/wreck/issues/276" + } + ], + "number": 71, + "url": "https://github.com/hapijs/wreck/milestone/71", + "version": "17.1.0" + }, + { + "date": "2020-01-04T21:06:07Z", + "id": 4973133, + "issues": [ + { + "id": 545332332, + "labels": ["breaking changes", "dependency"], + "number": 270, + "title": "Only node 12", + "url": "https://github.com/hapijs/wreck/issues/270" + }, + { + "id": 512516871, + "labels": ["feature"], + "number": 267, + "title": "Refactor early abort detection to use the 'abort' event", + "url": "https://github.com/hapijs/wreck/pull/267" + }, + { + "id": 512476621, + "labels": ["bug"], + "number": 266, + "title": "Don't set redirected host header", + "url": "https://github.com/hapijs/wreck/pull/266" + } + ], "number": 70, - "title": "Added 'smart' and 'force' modes to json option.", - "url": "https://github.com/hapijs/wreck/pull/70" - } - ], - "number": 14, - "url": "https://github.com/hapijs/wreck/milestone/14", - "version": "5.2.0" - }, - { - "date": "2014-12-16T03:12:58Z", - "id": 779005, - "issues": [ - { - "id": 51807754, - "labels": ["bug"], - "number": 69, - "title": "Dont try to parse JSON if the statusCode is 204 (No Content)", - "url": "https://github.com/hapijs/wreck/pull/69" - }, - { - "id": 42782678, - "labels": ["feature"], + "url": "https://github.com/hapijs/wreck/milestone/70", + "version": "17.0.0" + }, + { + "date": "2019-10-15T00:16:13Z", + "id": 4748502, + "issues": [ + { + "id": 506931588, + "labels": ["bug", "types"], + "number": 264, + "title": "Allow any readable stream in read()", + "url": "https://github.com/hapijs/wreck/issues/264" + } + ], + "number": 68, + "url": "https://github.com/hapijs/wreck/milestone/68", + "version": "16.0.1" + }, + { + "date": "2019-10-15T00:02:12Z", + "id": 4748501, + "issues": [ + { + "id": 506497591, + "labels": ["breaking changes", "types"], + "number": 263, + "title": "Add types", + "url": "https://github.com/hapijs/wreck/issues/263" + }, + { + "id": 506497075, + "labels": ["breaking changes", "dependency"], + "number": 262, + "title": "Drop node 8", + "url": "https://github.com/hapijs/wreck/issues/262" + } + ], + "number": 67, + "url": "https://github.com/hapijs/wreck/milestone/67", + "version": "16.0.0" + }, + { + "date": "2019-09-18T19:00:00Z", + "id": 4574306, + "issues": [ + { + "id": 459855076, + "labels": ["bug"], + "number": 254, + "title": "'abort' event", + "url": "https://github.com/hapijs/wreck/issues/254" + }, + { + "id": 454749237, + "labels": ["feature"], + "number": 252, + "title": "Respect uri parameter when using socketPath", + "url": "https://github.com/hapijs/wreck/pull/252" + }, + { + "id": 454052435, + "labels": ["bug"], + "number": 250, + "title": "memory leak issue", + "url": "https://github.com/hapijs/wreck/pull/250" + }, + { + "id": 437208904, + "labels": ["feature"], + "number": 248, + "title": "Change redirect method in `beforeRedirect`", + "url": "https://github.com/hapijs/wreck/issues/248" + }, + { + "id": 429894617, + "labels": ["bug", "breaking changes"], + "number": 247, + "title": "Return an empty buffer payload on text content-type rather than `null`", + "url": "https://github.com/hapijs/wreck/pull/247" + } + ], + "number": 64, + "url": "https://github.com/hapijs/wreck/milestone/64", + "version": "15.1.0" + }, + { + "date": "2019-08-15T00:45:46Z", + "id": 4233511, + "issues": [ + { + "id": 480895268, + "labels": ["dependency"], + "number": 256, + "title": "Update deps", + "url": "https://github.com/hapijs/wreck/issues/256" + } + ], + "number": 63, + "url": "https://github.com/hapijs/wreck/milestone/63", + "version": "15.0.2" + }, + { + "date": "2019-04-16T07:02:25Z", + "id": 4190276, + "issues": [ + { + "id": 428950532, + "labels": ["bug"], + "number": 246, + "title": "Explicit host header trumps host implied in url", + "url": "https://github.com/hapijs/wreck/pull/246" + }, + { + "id": 428949354, + "labels": ["bug"], + "number": 245, + "title": "An explicit host header is ignored if the request url has no implicit host", + "url": "https://github.com/hapijs/wreck/issues/245" + } + ], + "number": 62, + "url": "https://github.com/hapijs/wreck/milestone/62", + "version": "15.0.1" + }, + { + "date": "2019-04-01T15:35:32Z", + "id": 4113654, + "issues": [ + { + "id": 427774890, + "labels": ["release notes"], + "number": 244, + "title": "15.0.0 Release Notes", + "url": "https://github.com/hapijs/wreck/issues/244" + }, + { + "id": 427223915, + "labels": ["dependency"], + "number": 243, + "title": "Change module namespace", + "url": "https://github.com/hapijs/wreck/issues/243" + }, + { + "id": 426112940, + "labels": ["breaking changes"], + "number": 242, + "title": "Remove usage of deprecated url.Parse", + "url": "https://github.com/hapijs/wreck/pull/242" + }, + { + "id": 407979960, + "labels": ["feature", "breaking changes"], + "number": 235, + "title": "Introduce new preRequest event and emit request on request event", + "url": "https://github.com/hapijs/wreck/pull/235" + }, + { + "id": 274970027, + "labels": ["breaking changes"], + "number": 209, + "title": "Shouldn't request event emit request object?", + "url": "https://github.com/hapijs/wreck/issues/209" + } + ], + "number": 59, + "url": "https://github.com/hapijs/wreck/milestone/59", + "version": "15.0.0" + }, + { + "date": "2019-03-05T22:32:13Z", + "id": 4042742, + "issues": [ + { + "id": 417530907, + "labels": ["dependency"], + "number": 240, + "title": "Update eslint md dev dep", + "url": "https://github.com/hapijs/wreck/pull/240" + }, + { + "id": 415809367, + "labels": ["feature"], + "number": 239, + "title": "Whatwg url", + "url": "https://github.com/hapijs/wreck/pull/239" + }, + { + "id": 415286532, + "labels": ["feature"], + "number": 238, + "title": "Can Wreck parse urls with the WHATWG Url?", + "url": "https://github.com/hapijs/wreck/issues/238" + } + ], + "number": 58, + "url": "https://github.com/hapijs/wreck/milestone/58", + "version": "14.2.0" + }, + { + "date": "2019-02-08T20:20:41Z", + "id": 3792295, + "issues": [ + { + "id": 408309023, + "labels": ["bug", "security"], + "number": 236, + "title": "Protect against prototype poisoning", + "url": "https://github.com/hapijs/wreck/issues/236" + } + ], + "number": 57, + "url": "https://github.com/hapijs/wreck/milestone/57", + "version": "14.1.4" + }, + { + "date": "2018-11-03T00:41:45Z", + "id": 3788956, + "issues": [ + { + "id": 377003505, + "labels": ["non issue"], + "number": 231, + "title": "Remove engines", + "url": "https://github.com/hapijs/wreck/issues/231" + } + ], "number": 56, - "title": "Add secureProtocol for setting SSL method version", - "url": "https://github.com/hapijs/wreck/issues/56" - }, - { - "id": 42507203, - "labels": ["feature"], + "url": "https://github.com/hapijs/wreck/milestone/56", + "version": "14.1.3" + }, + { + "date": "2018-11-01T19:38:31Z", + "id": 3784166, + "issues": [ + { + "id": 376538359, + "labels": ["dependency"], + "number": 230, + "title": "Update hoek v6", + "url": "https://github.com/hapijs/wreck/issues/230" + } + ], "number": 55, - "title": "Added ability to set secureProtocol to a value.", - "url": "https://github.com/hapijs/wreck/pull/55" - } - ], - "number": 13, - "url": "https://github.com/hapijs/wreck/milestone/13", - "version": "5.1.0" - }, - { - "date": "2014-09-04T20:35:19Z", - "id": 777425, - "issues": [ - { - "id": 41980399, - "labels": ["bug"], + "url": "https://github.com/hapijs/wreck/milestone/55", + "version": "14.1.2" + }, + { + "date": "2018-10-31T05:49:04Z", + "id": 3587709, + "issues": [ + { + "id": 375808018, + "labels": ["non issue"], + "number": 229, + "title": "Cleanup", + "url": "https://github.com/hapijs/wreck/issues/229" + } + ], + "number": 54, + "url": "https://github.com/hapijs/wreck/milestone/54", + "version": "14.1.1" + }, + { + "date": "2018-08-21T18:24:32Z", + "id": 2886696, + "issues": [ + { + "id": 349567986, + "labels": ["bug"], + "number": 226, + "title": "Handle edge cases introduced with deferred payload piping", + "url": "https://github.com/hapijs/wreck/pull/226" + }, + { + "id": 344094439, + "labels": ["bug"], + "number": 225, + "title": "Handle stream payload errors before socket connection", + "url": "https://github.com/hapijs/wreck/pull/225" + }, + { + "id": 343955699, + "labels": ["bug"], + "number": 224, + "title": "Workaround node 10 regression", + "url": "https://github.com/hapijs/wreck/pull/224" + }, + { + "id": 343699877, + "labels": ["bug"], + "number": 223, + "title": " Defer piping of options.payload until socket connection", + "url": "https://github.com/hapijs/wreck/pull/223" + }, + { + "id": 339038173, + "labels": ["bug"], + "number": 222, + "title": "Investigate only piping the payload after a connection is established", + "url": "https://github.com/hapijs/wreck/issues/222" + }, + { + "id": 307170822, + "labels": ["bug"], + "number": 218, + "title": "Remove new Buffer usage", + "url": "https://github.com/hapijs/wreck/pull/218" + }, + { + "id": 302846364, + "labels": ["test"], + "number": 215, + "title": "test(request) correct tests to check errors for boom instance", + "url": "https://github.com/hapijs/wreck/pull/215" + } + ], + "number": 53, + "url": "https://github.com/hapijs/wreck/milestone/53", + "version": "14.1.0" + }, + { + "date": "2017-11-03T18:41:17Z", + "id": 2886695, + "issues": [ + { + "id": 271077847, + "labels": ["bug", "dependency"], + "number": 208, + "title": "Fix new Boom", + "url": "https://github.com/hapijs/wreck/issues/208" + } + ], "number": 52, - "title": "Fixing leak in options.agent", - "url": "https://github.com/hapijs/wreck/pull/52" - }, - { - "id": 41979804, - "labels": ["bug"], + "url": "https://github.com/hapijs/wreck/milestone/52", + "version": "14.0.2" + }, + { + "date": "2017-11-03T18:40:55Z", + "id": 2855911, + "issues": [ + { + "id": 270911717, + "labels": ["dependency"], + "number": 207, + "title": "Update deps", + "url": "https://github.com/hapijs/wreck/issues/207" + }, + { + "id": 267826222, + "labels": ["dependency"], + "number": 206, + "title": "Upgrade to lab 15", + "url": "https://github.com/hapijs/wreck/pull/206" + } + ], "number": 51, - "title": "Shouldn't assign agent back to options.agent, it can leak", - "url": "https://github.com/hapijs/wreck/issues/51" - } - ], - "number": 12, - "url": "https://github.com/hapijs/wreck/milestone/12", - "version": "5.0.1" - }, - { - "date": "2014-09-03T20:07:38Z", - "id": 775519, - "issues": [ - { - "id": 41859776, - "labels": ["breaking changes", "release notes"], + "url": "https://github.com/hapijs/wreck/milestone/51", + "version": "14.0.1" + }, + { + "date": "2017-10-21T16:25:23Z", + "id": 2794221, + "issues": [ + { + "id": 266925841, + "labels": ["bug", "breaking changes"], + "number": 205, + "title": "Change maxBytes error to 413", + "url": "https://github.com/hapijs/wreck/pull/205" + }, + { + "id": 261705697, + "labels": ["documentation", "dependency", "lts"], + "number": 204, + "title": "Cleanup and lint readme", + "url": "https://github.com/hapijs/wreck/pull/204" + } + ], "number": 50, - "title": "5.0.0 Release Notes", - "url": "https://github.com/hapijs/wreck/issues/50" - }, - { - "id": 41838596, - "labels": ["feature"], - "number": 49, - "title": "Requests can be aborted", - "url": "https://github.com/hapijs/wreck/pull/49" - }, - { - "id": 41729429, - "labels": ["bug", "breaking changes"], + "url": "https://github.com/hapijs/wreck/milestone/50", + "version": "14.0.0" + }, + { + "date": "2017-09-26T09:16:22Z", + "id": 2789786, + "issues": [ + { + "id": 260549752, + "labels": ["dependency"], + "number": 202, + "title": "Update deps", + "url": "https://github.com/hapijs/wreck/issues/202" + } + ], + "number": 48, + "url": "https://github.com/hapijs/wreck/milestone/48", + "version": "13.0.3" + }, + { + "date": "2017-09-25T14:52:30Z", + "id": 2775830, + "issues": [ + { + "id": 260017287, + "labels": ["bug"], + "number": 199, + "title": "Return errors for partial payload transfers", + "url": "https://github.com/hapijs/wreck/pull/199" + } + ], "number": 47, - "title": "rejectUnauthorized works in node 0.10", - "url": "https://github.com/hapijs/wreck/pull/47" - }, - { - "id": 41729297, - "labels": ["bug"], + "url": "https://github.com/hapijs/wreck/milestone/47", + "version": "13.0.2" + }, + { + "date": "2017-09-18T22:02:39Z", + "id": 2772462, + "issues": [ + { + "id": 258635042, + "labels": ["bug"], + "number": 198, + "title": "Retain boom errors from response stream on read()", + "url": "https://github.com/hapijs/wreck/issues/198" + } + ], "number": 46, - "title": "rejectUnauthorized isn't honored on node 0.10", - "url": "https://github.com/hapijs/wreck/issues/46" - }, - { - "id": 41418240, - "labels": ["feature"], - "number": 40, - "title": "Allow requests to be aborted", - "url": "https://github.com/hapijs/wreck/issues/40" - } - ], - "number": 11, - "url": "https://github.com/hapijs/wreck/milestone/11", - "version": "5.0.0" - }, - { - "date": "2014-09-02T16:39:26Z", - "id": 757683, - "issues": [ - { - "id": 41536501, - "labels": ["breaking changes", "release notes"], + "url": "https://github.com/hapijs/wreck/milestone/46", + "version": "13.0.1" + }, + { + "date": "2017-09-18T00:17:55Z", + "id": 2751040, + "issues": [ + { + "id": 258283122, + "labels": ["feature", "breaking changes"], + "number": 197, + "title": "Move to use async functions", + "url": "https://github.com/hapijs/wreck/pull/197" + }, + { + "id": 258283038, + "labels": ["feature", "breaking changes"], + "number": 196, + "title": "Migrate to async/await", + "url": "https://github.com/hapijs/wreck/issues/196" + } + ], "number": 45, - "title": "4.0.0 Release Notes", - "url": "https://github.com/hapijs/wreck/issues/45" - }, - { - "id": 41535687, - "labels": ["feature"], + "url": "https://github.com/hapijs/wreck/milestone/45", + "version": "13.0.0" + }, + { + "date": "2019-09-18T19:05:07Z", + "id": 4162541, + "issues": [ + { + "id": 495402144, + "labels": ["bug", "commercial"], + "number": 258, + "title": "Backport #250 ", + "url": "https://github.com/hapijs/wreck/issues/258" + } + ], + "number": 61, + "url": "https://github.com/hapijs/wreck/milestone/61", + "version": "12.6.1" + }, + { + "date": "2019-03-22T01:16:26Z", + "id": 4162540, + "issues": [ + { + "id": 424006398, + "labels": ["lts"], + "number": 241, + "title": "Commercial version of v12 branch", + "url": "https://github.com/hapijs/wreck/issues/241" + } + ], + "number": 60, + "url": "https://github.com/hapijs/wreck/milestone/60", + "version": "12.6.0" + }, + { + "date": "2017-09-25T15:38:09Z", + "id": 2789903, + "issues": [ + { + "id": 260321611, + "labels": ["bug"], + "number": 201, + "title": "Return errors for partial payload transfers", + "url": "https://github.com/hapijs/wreck/issues/201" + }, + { + "id": 260319255, + "labels": ["lts"], + "number": 200, + "title": "version 12.5.1", + "url": "https://github.com/hapijs/wreck/pull/200" + } + ], + "number": 49, + "url": "https://github.com/hapijs/wreck/milestone/49", + "version": "12.5.1" + }, + { + "date": "2017-09-07T16:27:31Z", + "id": 2738747, + "issues": [ + { + "id": 255992932, + "labels": ["feature"], + "number": 195, + "title": "closes #194 - support for a list of TLS ciphers", + "url": "https://github.com/hapijs/wreck/pull/195" + }, + { + "id": 255992626, + "labels": ["feature"], + "number": 194, + "title": "Add support for specifying the TLS ciphers list", + "url": "https://github.com/hapijs/wreck/issues/194" + } + ], "number": 44, - "title": "Support disabling agent pooling", - "url": "https://github.com/hapijs/wreck/pull/44" - }, - { - "id": 41452282, - "labels": ["feature"], + "url": "https://github.com/hapijs/wreck/milestone/44", + "version": "12.5.0" + }, + { + "date": "2017-09-01T15:01:21Z", + "id": 2737532, + "issues": [ + { + "id": 254525160, + "labels": ["feature"], + "number": 193, + "title": "Add onRequest to request options", + "url": "https://github.com/hapijs/wreck/pull/193" + } + ], "number": 43, - "title": "Support agent = false for disabled pooling", - "url": "https://github.com/hapijs/wreck/issues/43" - }, - { - "id": 41442809, - "labels": ["feature", "breaking changes"], + "url": "https://github.com/hapijs/wreck/milestone/43", + "version": "12.4.0" + }, + { + "date": "2017-09-01T02:56:08Z", + "id": 2694861, + "issues": [ + { + "id": 254041386, + "labels": ["feature"], + "number": 192, + "title": "Add a gunzipping option", + "url": "https://github.com/hapijs/wreck/pull/192" + }, + { + "id": 250448892, + "labels": ["feature"], + "number": 190, + "title": "Add \"strict\" json option", + "url": "https://github.com/hapijs/wreck/pull/190" + }, + { + "id": 240119805, + "labels": ["bug"], + "number": 186, + "title": "Add \"strict\" json option", + "url": "https://github.com/hapijs/wreck/issues/186" + } + ], "number": 42, - "title": "Override default maxSockets to Infinity", - "url": "https://github.com/hapijs/wreck/pull/42" - }, - { - "id": 41426975, - "labels": ["feature", "breaking changes"], + "url": "https://github.com/hapijs/wreck/milestone/42", + "version": "12.3.0" + }, + { + "date": "2017-08-10T17:14:15Z", + "id": 2546822, + "issues": [ + { + "id": 249104370, + "labels": ["bug"], + "number": 189, + "title": "Fix possible content-type header duplication", + "url": "https://github.com/hapijs/wreck/pull/189" + }, + { + "id": 249101695, + "labels": ["bug"], + "number": 188, + "title": "Possible `content-type` header duplication", + "url": "https://github.com/hapijs/wreck/issues/188" + }, + { + "id": 235711877, + "labels": ["dependency", "lts"], + "number": 184, + "title": "Upgrade lab", + "url": "https://github.com/hapijs/wreck/pull/184" + } + ], "number": 41, - "title": "Default maxSockets to Infinity", - "url": "https://github.com/hapijs/wreck/issues/41" - }, - { - "id": 40514434, - "labels": ["non issue"], + "url": "https://github.com/hapijs/wreck/milestone/41", + "version": "12.2.3" + }, + { + "date": "2017-05-28T09:05:06Z", + "id": 2546765, + "issues": [ + { + "id": 231856083, + "labels": ["test"], + "number": 183, + "title": "Fix tests for node 7.10.0", + "url": "https://github.com/hapijs/wreck/issues/183" + } + ], + "number": 40, + "url": "https://github.com/hapijs/wreck/milestone/40", + "version": "12.2.2" + }, + { + "date": "2017-05-28T07:02:09Z", + "id": 2507315, + "issues": [ + { + "id": 231851138, + "labels": ["dependency"], + "number": 182, + "title": "Update deps.", + "url": "https://github.com/hapijs/wreck/issues/182" + } + ], "number": 39, - "title": "Now working on v3.0.2", - "url": "https://github.com/hapijs/wreck/pull/39" - } - ], - "number": 10, - "url": "https://github.com/hapijs/wreck/milestone/10", - "version": "4.0.0" - }, - { - "date": "2014-08-18T17:58:59Z", - "id": 748946, - "issues": [ - { - "id": 40506938, - "labels": ["feature"], + "url": "https://github.com/hapijs/wreck/milestone/39", + "version": "12.2.1" + }, + { + "date": "2017-05-08T14:47:54Z", + "id": 2467382, + "issues": [ + { + "id": 224033953, + "labels": ["feature"], + "number": 177, + "title": "fix(json): allow numbers in mime fixes #176", + "url": "https://github.com/hapijs/wreck/pull/177" + }, + { + "id": 223379884, + "labels": ["feature"], + "number": 175, + "title": "Include full response with the HTTP error", + "url": "https://github.com/hapijs/wreck/pull/175" + }, + { + "id": 222727124, + "labels": ["feature"], + "number": 173, + "title": "Return full response with the Boom HTTP error", + "url": "https://github.com/hapijs/wreck/issues/173" + }, + { + "id": 219359040, + "labels": ["documentation"], + "number": 170, + "title": "4XX is now an error", + "url": "https://github.com/hapijs/wreck/issues/170" + } + ], + "number": 38, + "url": "https://github.com/hapijs/wreck/milestone/38", + "version": "12.2.0" + }, + { + "date": "2017-04-19T18:22:23Z", + "id": 2409626, + "issues": [ + { + "id": 222817315, + "labels": ["test", "lts"], + "number": 174, + "title": "Tidy code around default agents", + "url": "https://github.com/hapijs/wreck/pull/174" + }, + { + "id": 221871544, + "labels": ["documentation"], + "number": 172, + "title": "Update README.md", + "url": "https://github.com/hapijs/wreck/pull/172" + }, + { + "id": 218710834, + "labels": ["lts"], + "number": 169, + "title": "Pass an Error object to Boom.create for #168", + "url": "https://github.com/hapijs/wreck/pull/169" + }, + { + "id": 202216312, + "labels": ["feature"], + "number": 156, + "title": "Preserve `agents` across .defaults({...})", + "url": "https://github.com/hapijs/wreck/pull/156" + } + ], "number": 37, - "title": "Adding shortcut wrapper for helping with optimization", - "url": "https://github.com/hapijs/wreck/pull/37" - }, - { - "id": 40280597, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/wreck/milestone/37", + "version": "12.1.0" + }, + { + "date": "2017-03-24T16:43:32Z", + "id": 2402263, + "issues": [ + { + "id": 216838433, + "labels": ["breaking changes", "release notes"], + "number": 165, + "title": "12.0.0 Release Notes", + "url": "https://github.com/hapijs/wreck/issues/165" + }, + { + "id": 216478516, + "labels": ["feature", "breaking changes"], + "number": 164, + "title": "Fix boom response error handling", + "url": "https://github.com/hapijs/wreck/pull/164" + }, + { + "id": 216086750, + "labels": ["bug"], + "number": 163, + "title": "Keep request on error status", + "url": "https://github.com/hapijs/wreck/pull/163" + } + ], + "number": 36, + "url": "https://github.com/hapijs/wreck/milestone/36", + "version": "12.0.0" + }, + { + "date": "2017-03-21T23:44:53Z", + "id": 1991669, + "issues": [ + { + "id": 215906221, + "labels": ["breaking changes", "release notes"], + "number": 162, + "title": "11.0.0 Release Notes", + "url": "https://github.com/hapijs/wreck/issues/162" + }, + { + "id": 215903433, + "labels": ["bug", "breaking changes"], + "number": 161, + "title": "Fix redirection method for 301, 302", + "url": "https://github.com/hapijs/wreck/pull/161" + }, + { + "id": 215899389, + "labels": ["dependency"], + "number": 160, + "title": "Update lab dep", + "url": "https://github.com/hapijs/wreck/pull/160" + }, + { + "id": 215898710, + "labels": ["documentation"], + "number": 159, + "title": "Add example https agent setting", + "url": "https://github.com/hapijs/wreck/pull/159" + }, + { + "id": 215896989, + "labels": ["feature", "breaking changes"], + "number": 158, + "title": "Wrap error response with Boom", + "url": "https://github.com/hapijs/wreck/pull/158" + }, + { + "id": 215891679, + "labels": ["feature", "breaking changes"], + "number": 157, + "title": "Change response event signature", + "url": "https://github.com/hapijs/wreck/pull/157" + }, + { + "id": 197784158, + "labels": ["dependency"], + "number": 155, + "title": "Update code dep", + "url": "https://github.com/hapijs/wreck/pull/155" + }, + { + "id": 197782504, + "labels": ["documentation", "test"], + "number": 154, + "title": "Clarify state of response in shortcuts", + "url": "https://github.com/hapijs/wreck/pull/154" + }, + { + "id": 197027538, + "labels": ["documentation"], + "number": 153, + "title": "Question about responses as readable streams", + "url": "https://github.com/hapijs/wreck/issues/153" + }, + { + "id": 163527093, + "labels": ["bug"], + "number": 138, + "title": "Redirect 302 changes method from POST to GET", + "url": "https://github.com/hapijs/wreck/issues/138" + }, + { + "id": 70724842, + "labels": ["feature", "breaking changes"], + "number": 83, + "title": "Change \"response\" Payload", + "url": "https://github.com/hapijs/wreck/issues/83" + }, + { + "id": 70273952, + "labels": ["feature", "breaking changes"], + "number": 82, + "title": "Option to convert 4xx and 5xx to errors", + "url": "https://github.com/hapijs/wreck/issues/82" + }, + { + "id": 47420553, + "labels": ["documentation"], + "number": 66, + "title": "Add certificate options for requests", + "url": "https://github.com/hapijs/wreck/issues/66" + } + ], + "number": 35, + "url": "https://github.com/hapijs/wreck/milestone/35", + "version": "11.0.0" + }, + { + "date": "2016-09-08T17:33:49Z", + "id": 1921420, + "issues": [ + { + "id": 175814117, + "labels": ["breaking changes", "release notes"], + "number": 150, + "title": "10.0.0 Release Notes", + "url": "https://github.com/hapijs/wreck/issues/150" + }, + { + "id": 175811359, + "labels": ["dependency"], + "number": 149, + "title": "Update boom and lab deps", + "url": "https://github.com/hapijs/wreck/pull/149" + }, + { + "id": 175787420, + "labels": ["bug", "breaking changes"], + "number": 148, + "title": "Refactor event propagation", + "url": "https://github.com/hapijs/wreck/pull/148" + }, + { + "id": 175787150, + "labels": ["test"], + "number": 147, + "title": "Fix tests to timeout quicker", + "url": "https://github.com/hapijs/wreck/pull/147" + } + ], + "number": 34, + "url": "https://github.com/hapijs/wreck/milestone/34", + "version": "10.0.0" + }, + { + "date": "2016-08-03T16:51:17Z", + "id": 1910394, + "issues": [ + { + "id": 169179499, + "labels": ["breaking changes", "release notes"], + "number": 144, + "title": "9.0.0 Release Notes", + "url": "https://github.com/hapijs/wreck/issues/144" + }, + { + "id": 169163414, + "labels": ["feature"], + "number": 143, + "title": "Stringify payload objects", + "url": "https://github.com/hapijs/wreck/pull/143" + }, + { + "id": 168944839, + "labels": ["bug", "breaking changes"], + "number": 142, + "title": "Fix redirect with different host on default options", + "url": "https://github.com/hapijs/wreck/pull/142" + }, + { + "id": 157064856, + "labels": ["bug"], + "number": 131, + "title": "Fail to redirect to different host", + "url": "https://github.com/hapijs/wreck/issues/131" + }, + { + "id": 124975404, + "labels": ["feature"], + "number": 113, + "title": "Suggestion: Allow json objects as payload ", + "url": "https://github.com/hapijs/wreck/issues/113" + } + ], "number": 33, - "title": "Read now requires 3 arguments", - "url": "https://github.com/hapijs/wreck/pull/33" - }, - { - "id": 40266000, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/wreck/milestone/33", + "version": "9.0.0" + }, + { + "date": "2016-07-28T19:50:10Z", + "id": 1805238, + "issues": [ + { + "id": 168180765, + "labels": ["documentation"], + "number": 141, + "title": "npmignore", + "url": "https://github.com/hapijs/wreck/issues/141" + }, + { + "id": 158920782, + "labels": ["documentation"], + "number": 137, + "title": "add node version badge", + "url": "https://github.com/hapijs/wreck/pull/137" + } + ], "number": 32, - "title": "Refactor `internals.shortcut` to have a fixed signature.", - "url": "https://github.com/hapijs/wreck/issues/32" - }, - { - "id": 40265957, - "labels": ["breaking changes"], + "url": "https://github.com/hapijs/wreck/milestone/32", + "version": "8.0.1" + }, + { + "date": "2016-06-02T15:24:05Z", + "id": 1763299, + "issues": [ + { + "id": 158167476, + "labels": ["dependency"], + "number": 136, + "title": "Upgrade to code v3", + "url": "https://github.com/hapijs/wreck/pull/136" + }, + { + "id": 158085876, + "labels": ["breaking changes", "release notes"], + "number": 135, + "title": "8.0.0 Release Notes", + "url": "https://github.com/hapijs/wreck/issues/135" + }, + { + "id": 158079438, + "labels": ["feature", "breaking changes"], + "number": 134, + "title": "Expose response headers on redirect", + "url": "https://github.com/hapijs/wreck/issues/134" + }, + { + "id": 158077835, + "labels": ["feature", "breaking changes"], + "number": 133, + "title": "Redirect 303 and expose headers", + "url": "https://github.com/hapijs/wreck/pull/133" + }, + { + "id": 158076142, + "labels": ["feature"], + "number": 132, + "title": "Support 303 Redirection", + "url": "https://github.com/hapijs/wreck/issues/132" + } + ], "number": 31, - "title": "Refactor `read` API to have a fixed signature.", - "url": "https://github.com/hapijs/wreck/issues/31" - }, - { - "id": 40194077, - "labels": ["documentation"], + "url": "https://github.com/hapijs/wreck/milestone/31", + "version": "8.0.0" + }, + { + "date": "2016-05-12T21:06:01Z", + "id": 1710542, + "issues": [ + { + "id": 154576494, + "labels": ["bug"], + "number": 130, + "title": "A missing callback on request still allows client requests to work", + "url": "https://github.com/hapijs/wreck/pull/130" + }, + { + "id": 153343629, + "labels": ["lts"], + "number": 129, + "title": "Use node 6 on travis", + "url": "https://github.com/hapijs/wreck/pull/129" + } + ], "number": 30, - "title": "Clarify optional options argument.", - "url": "https://github.com/hapijs/wreck/pull/30" - }, - { - "id": 39980074, - "labels": ["documentation"], + "url": "https://github.com/hapijs/wreck/milestone/30", + "version": "7.2.1" + }, + { + "date": "2016-04-15T19:31:41Z", + "id": 1664461, + "issues": [ + { + "id": 148747232, + "labels": ["feature"], + "number": 127, + "title": "Add global request event", + "url": "https://github.com/hapijs/wreck/pull/127" + }, + { + "id": 148746960, + "labels": ["feature"], + "number": 126, + "title": "Add `request` emit", + "url": "https://github.com/hapijs/wreck/issues/126" + }, + { + "id": 148690196, + "labels": ["feature"], + "number": 125, + "title": "Use a global event emitter for wreck events", + "url": "https://github.com/hapijs/wreck/pull/125" + } + ], + "number": 29, + "url": "https://github.com/hapijs/wreck/milestone/29", + "version": "7.2.0" + }, + { + "date": "2016-03-24T18:22:14Z", + "id": 1623939, + "issues": [ + { + "id": 142920918, + "labels": ["feature"], + "number": 123, + "title": "Add support for Unix sockets", + "url": "https://github.com/hapijs/wreck/pull/123" + } + ], "number": 28, - "title": "Nipple.request `options` are only optional if callback is omitted as well.", - "url": "https://github.com/hapijs/wreck/issues/28" - } - ], - "number": 9, - "url": "https://github.com/hapijs/wreck/milestone/9", - "version": "3.0.0" - }, - { - "date": "2014-08-10T20:38:44Z", - "id": 740877, - "issues": [ - { - "id": 39909417, - "labels": ["documentation"], + "url": "https://github.com/hapijs/wreck/milestone/28", + "version": "7.1.0" + }, + { + "date": "2016-03-05T20:01:09Z", + "id": 1618395, + "issues": [ + { + "id": 138712304, + "labels": ["bug"], + "number": 121, + "title": "Content-Length header check is now case insensitive", + "url": "https://github.com/hapijs/wreck/pull/121" + }, + { + "id": 138344017, + "labels": ["bug"], + "number": 120, + "title": "lowercase the content-length header", + "url": "https://github.com/hapijs/wreck/pull/120" + } + ], "number": 27, - "title": "Correct copypasta errors in convenience method docs.", - "url": "https://github.com/hapijs/wreck/pull/27" - }, - { - "id": 39877432, - "labels": ["documentation"], + "url": "https://github.com/hapijs/wreck/milestone/27", + "version": "7.0.2" + }, + { + "date": "2016-03-02T17:52:08Z", + "id": 1386877, + "issues": [ + { + "id": 137944061, + "labels": ["test", "dependency"], + "number": 119, + "title": "Update deps and fix tests", + "url": "https://github.com/hapijs/wreck/pull/119" + }, + { + "id": 137761865, + "labels": ["bug"], + "number": 118, + "title": "Add tests for defaults", + "url": "https://github.com/hapijs/wreck/pull/118" + }, + { + "id": 137759020, + "labels": ["bug"], + "number": 117, + "title": "Wreck#request's options are overridden by Defaults", + "url": "https://github.com/hapijs/wreck/issues/117" + } + ], "number": 26, - "title": "Document API, parameters, and helper methods.", - "url": "https://github.com/hapijs/wreck/pull/26" - }, - { - "id": 39768676, - "labels": ["test"], + "url": "https://github.com/hapijs/wreck/milestone/26", + "version": "7.0.1" + }, + { + "date": "2015-10-31T19:41:15Z", + "id": 1324268, + "issues": [ + { + "id": 114422836, + "labels": ["breaking changes"], + "number": 109, + "title": "ES6 style and node v4", + "url": "https://github.com/hapijs/wreck/issues/109" + } + ], "number": 25, - "title": "Update to use lab v4", - "url": "https://github.com/hapijs/wreck/pull/25" - }, - { - "id": 39668689, - "labels": ["feature"], + "url": "https://github.com/hapijs/wreck/milestone/25", + "version": "7.0.0" + }, + { + "date": "2015-09-25T17:43:36Z", + "id": 1274847, + "issues": [ + { + "id": 107897891, + "labels": ["feature"], + "number": 108, + "title": "Add a beforeRedirect callback option", + "url": "https://github.com/hapijs/wreck/pull/108" + }, + { + "id": 106093245, + "labels": ["test"], + "number": 106, + "title": "Fix code coverage", + "url": "https://github.com/hapijs/wreck/pull/106" + }, + { + "id": 106052668, + "labels": ["test"], + "number": 105, + "title": "Workaround node issue in test", + "url": "https://github.com/hapijs/wreck/pull/105" + }, + { + "id": 105522828, + "labels": ["test"], + "number": 104, + "title": "Fails on node v4", + "url": "https://github.com/hapijs/wreck/issues/104" + } + ], "number": 24, - "title": "Breaking out code into separate modules", - "url": "https://github.com/hapijs/wreck/pull/24" - } - ], - "number": 8, - "url": "https://github.com/hapijs/wreck/milestone/8", - "version": "2.5.5" - }, - { - "date": "2014-08-03T07:12:37Z", - "id": 679815, - "issues": [ - { - "id": 39355773, - "labels": ["bug"], + "url": "https://github.com/hapijs/wreck/milestone/24", + "version": "6.3.0" + }, + { + "date": "2015-08-26T22:02:12Z", + "id": 1232381, + "issues": [ + { + "id": 103369536, + "labels": ["feature"], + "number": 102, + "title": "add 'PATCH' convenience method.", + "url": "https://github.com/hapijs/wreck/pull/102" + } + ], "number": 23, - "title": "allow for unicode characters in string payloads, closes #20", - "url": "https://github.com/hapijs/wreck/pull/23" - }, - { - "id": 36055544, - "labels": ["bug"], + "url": "https://github.com/hapijs/wreck/milestone/23", + "version": "6.2.0" + }, + { + "date": "2015-07-30T02:57:44Z", + "id": 1189757, + "issues": [ + { + "id": 92833027, + "labels": ["feature"], + "number": 97, + "title": "Add a redirected callback request option", + "url": "https://github.com/hapijs/wreck/pull/97" + }, + { + "id": 88446437, + "labels": ["feature"], + "number": 91, + "title": "Can't read redirected URI", + "url": "https://github.com/hapijs/wreck/issues/91" + } + ], + "number": 22, + "url": "https://github.com/hapijs/wreck/milestone/22", + "version": "6.1.0" + }, + { + "date": "2015-07-01T21:34:41Z", + "id": 1189459, + "issues": [ + { + "id": 92489338, + "labels": ["breaking changes", "release notes"], + "number": 96, + "title": "6.0.0 Release notes", + "url": "https://github.com/hapijs/wreck/issues/96" + }, + { + "id": 92483342, + "labels": ["bug", "breaking changes"], + "number": 95, + "title": "Payload returns as a buffer. Fixes Issue #75", + "url": "https://github.com/hapijs/wreck/pull/95" + }, + { + "id": 59901071, + "labels": ["bug", "breaking changes"], + "number": 75, + "title": "Read automatically converts payload from Buffer to UTF-8 String", + "url": "https://github.com/hapijs/wreck/issues/75" + } + ], + "number": 21, + "url": "https://github.com/hapijs/wreck/milestone/21", + "version": "6.0.0" + }, + { + "date": "2015-07-01T17:44:21Z", + "id": 1172768, + "issues": [ + { + "id": 92262401, + "labels": ["bug"], + "number": 94, + "title": "Skip res.destroy() when not present. Closes #71", + "url": "https://github.com/hapijs/wreck/pull/94" + }, + { + "id": 90130466, + "labels": ["bug", "security"], + "number": 93, + "title": "Fix missing options when redirecting", + "url": "https://github.com/hapijs/wreck/pull/93" + }, + { + "id": 56383617, + "labels": ["bug"], + "number": 71, + "title": "Attempt to call `destroy()` on `Gunzip` object", + "url": "https://github.com/hapijs/wreck/issues/71" + } + ], "number": 20, - "title": "Usage of post", - "url": "https://github.com/hapijs/wreck/issues/20" - } - ], - "number": 7, - "url": "https://github.com/hapijs/wreck/milestone/7", - "version": "2.5.4" - }, - { - "date": "2014-06-03T22:16:22Z", - "id": 665072, - "issues": [ - { - "id": 34909752, - "labels": ["bug"], - "number": 18, - "title": "Set content-length on string or buffer payload", - "url": "https://github.com/hapijs/wreck/issues/18" - } - ], - "number": 6, - "url": "https://github.com/hapijs/wreck/milestone/6", - "version": "2.5.3" - }, - { - "date": "2014-05-20T22:24:54Z", - "id": 642996, - "issues": [ - { - "id": 32105940, - "labels": ["bug"], - "number": 13, - "title": "respect size in _read for toReadableStream", - "url": "https://github.com/hapijs/wreck/pull/13" - } - ], - "number": 5, - "url": "https://github.com/hapijs/wreck/milestone/5", - "version": "2.5.2" - }, - { - "date": "2014-04-28T20:35:46Z", - "id": 626913, - "issues": [ - { - "id": 32385186, - "labels": ["bug"], + "url": "https://github.com/hapijs/wreck/milestone/20", + "version": "5.6.1" + }, + { + "date": "2015-06-19T17:22:13Z", + "id": 1081114, + "issues": [ + { + "id": 89600746, + "labels": ["feature"], + "number": 92, + "title": "More robust baseUrl and uri merging", + "url": "https://github.com/hapijs/wreck/pull/92" + }, + { + "id": 81919895, + "labels": ["feature"], + "number": 89, + "title": "support for detecting/parsing +json suffix types i.e. application/*+json", + "url": "https://github.com/hapijs/wreck/pull/89" + }, + { + "id": 80997270, + "labels": ["non issue"], + "number": 88, + "title": "Maintenance", + "url": "https://github.com/hapijs/wreck/pull/88" + }, + { + "id": 80206515, + "labels": ["non issue"], + "number": 87, + "title": "Update license attribute", + "url": "https://github.com/hapijs/wreck/pull/87" + }, + { + "id": 79159172, + "labels": ["feature"], + "number": 86, + "title": "Add support for the `baseUrl` option", + "url": "https://github.com/hapijs/wreck/pull/86" + }, + { + "id": 78730820, + "labels": ["feature"], + "number": 85, + "title": "add support for defaults", + "url": "https://github.com/hapijs/wreck/pull/85" + } + ], + "number": 19, + "url": "https://github.com/hapijs/wreck/milestone/19", + "version": "5.6.0" + }, + { + "date": "2015-04-23T19:11:46Z", + "id": 1047707, + "issues": [ + { + "id": 69892701, + "labels": ["feature"], + "number": 81, + "title": "Added uri to event payloads.", + "url": "https://github.com/hapijs/wreck/pull/81" + } + ], + "number": 17, + "url": "https://github.com/hapijs/wreck/milestone/17", + "version": "5.5.0" + }, + { + "date": "2015-03-31T20:49:52Z", + "id": 1034497, + "issues": [ + { + "id": 65536802, + "labels": ["feature"], + "number": 79, + "title": "Add start time to response event", + "url": "https://github.com/hapijs/wreck/pull/79" + }, + { + "id": 65536519, + "labels": ["feature"], + "number": 78, + "title": "Add start time to response event", + "url": "https://github.com/hapijs/wreck/issues/78" + } + ], "number": 16, - "title": "Prevent starvation due to timeout requests", - "url": "https://github.com/hapijs/wreck/pull/16" - } - ], - "number": 4, - "url": "https://github.com/hapijs/wreck/milestone/4", - "version": "2.5.1" - }, - { - "date": "2014-04-11T04:28:17Z", - "id": 595523, - "issues": [ - { - "id": 31248447, - "labels": ["feature"], + "url": "https://github.com/hapijs/wreck/milestone/16", + "version": "5.4.0" + }, + { + "date": "2015-03-23T17:03:12Z", + "id": 979061, + "issues": [ + { + "id": 61117631, + "labels": ["feature"], + "number": 77, + "title": "Add event for response and logging", + "url": "https://github.com/hapijs/wreck/pull/77" + }, + { + "id": 60586038, + "labels": ["feature"], + "number": 76, + "title": "Adding log support", + "url": "https://github.com/hapijs/wreck/pull/76" + }, + { + "id": 59692485, + "labels": ["feature"], + "number": 74, + "title": "implement debugging to file and console. Fixes #72", + "url": "https://github.com/hapijs/wreck/pull/74" + }, + { + "id": 58610133, + "labels": ["bug"], + "number": 73, + "title": "Fix issues with node 0.12", + "url": "https://github.com/hapijs/wreck/pull/73" + }, + { + "id": 57957954, + "labels": ["feature"], + "number": 72, + "title": "Add logging to req/res details for debug mode", + "url": "https://github.com/hapijs/wreck/issues/72" + } + ], + "number": 15, + "url": "https://github.com/hapijs/wreck/milestone/15", + "version": "5.3.0" + }, + { + "date": "2015-02-13T22:17:58Z", + "id": 905130, + "issues": [ + { + "id": 53810503, + "labels": ["feature"], + "number": 70, + "title": "Added 'smart' and 'force' modes to json option.", + "url": "https://github.com/hapijs/wreck/pull/70" + } + ], + "number": 14, + "url": "https://github.com/hapijs/wreck/milestone/14", + "version": "5.2.0" + }, + { + "date": "2014-12-16T03:12:58Z", + "id": 779005, + "issues": [ + { + "id": 51807754, + "labels": ["bug"], + "number": 69, + "title": "Dont try to parse JSON if the statusCode is 204 (No Content)", + "url": "https://github.com/hapijs/wreck/pull/69" + }, + { + "id": 42782678, + "labels": ["feature"], + "number": 56, + "title": "Add secureProtocol for setting SSL method version", + "url": "https://github.com/hapijs/wreck/issues/56" + }, + { + "id": 42507203, + "labels": ["feature"], + "number": 55, + "title": "Added ability to set secureProtocol to a value.", + "url": "https://github.com/hapijs/wreck/pull/55" + } + ], + "number": 13, + "url": "https://github.com/hapijs/wreck/milestone/13", + "version": "5.1.0" + }, + { + "date": "2014-09-04T20:35:19Z", + "id": 777425, + "issues": [ + { + "id": 41980399, + "labels": ["bug"], + "number": 52, + "title": "Fixing leak in options.agent", + "url": "https://github.com/hapijs/wreck/pull/52" + }, + { + "id": 41979804, + "labels": ["bug"], + "number": 51, + "title": "Shouldn't assign agent back to options.agent, it can leak", + "url": "https://github.com/hapijs/wreck/issues/51" + } + ], + "number": 12, + "url": "https://github.com/hapijs/wreck/milestone/12", + "version": "5.0.1" + }, + { + "date": "2014-09-03T20:07:38Z", + "id": 775519, + "issues": [ + { + "id": 41859776, + "labels": ["breaking changes", "release notes"], + "number": 50, + "title": "5.0.0 Release Notes", + "url": "https://github.com/hapijs/wreck/issues/50" + }, + { + "id": 41838596, + "labels": ["feature"], + "number": 49, + "title": "Requests can be aborted", + "url": "https://github.com/hapijs/wreck/pull/49" + }, + { + "id": 41729429, + "labels": ["bug", "breaking changes"], + "number": 47, + "title": "rejectUnauthorized works in node 0.10", + "url": "https://github.com/hapijs/wreck/pull/47" + }, + { + "id": 41729297, + "labels": ["bug"], + "number": 46, + "title": "rejectUnauthorized isn't honored on node 0.10", + "url": "https://github.com/hapijs/wreck/issues/46" + }, + { + "id": 41418240, + "labels": ["feature"], + "number": 40, + "title": "Allow requests to be aborted", + "url": "https://github.com/hapijs/wreck/issues/40" + } + ], "number": 11, - "title": "Hoek version bump to 2.x.x", - "url": "https://github.com/hapijs/wreck/pull/11" - }, - { - "id": 31244381, - "labels": ["feature"], + "url": "https://github.com/hapijs/wreck/milestone/11", + "version": "5.0.0" + }, + { + "date": "2014-09-02T16:39:26Z", + "id": 757683, + "issues": [ + { + "id": 41536501, + "labels": ["breaking changes", "release notes"], + "number": 45, + "title": "4.0.0 Release Notes", + "url": "https://github.com/hapijs/wreck/issues/45" + }, + { + "id": 41535687, + "labels": ["feature"], + "number": 44, + "title": "Support disabling agent pooling", + "url": "https://github.com/hapijs/wreck/pull/44" + }, + { + "id": 41452282, + "labels": ["feature"], + "number": 43, + "title": "Support agent = false for disabled pooling", + "url": "https://github.com/hapijs/wreck/issues/43" + }, + { + "id": 41442809, + "labels": ["feature", "breaking changes"], + "number": 42, + "title": "Override default maxSockets to Infinity", + "url": "https://github.com/hapijs/wreck/pull/42" + }, + { + "id": 41426975, + "labels": ["feature", "breaking changes"], + "number": 41, + "title": "Default maxSockets to Infinity", + "url": "https://github.com/hapijs/wreck/issues/41" + }, + { + "id": 40514434, + "labels": ["non issue"], + "number": 39, + "title": "Now working on v3.0.2", + "url": "https://github.com/hapijs/wreck/pull/39" + } + ], "number": 10, - "title": "match() -> test()", - "url": "https://github.com/hapijs/wreck/pull/10" - }, - { - "id": 30903429, - "labels": ["test"], + "url": "https://github.com/hapijs/wreck/milestone/10", + "version": "4.0.0" + }, + { + "date": "2014-08-18T17:58:59Z", + "id": 748946, + "issues": [ + { + "id": 40506938, + "labels": ["feature"], + "number": 37, + "title": "Adding shortcut wrapper for helping with optimization", + "url": "https://github.com/hapijs/wreck/pull/37" + }, + { + "id": 40280597, + "labels": ["breaking changes"], + "number": 33, + "title": "Read now requires 3 arguments", + "url": "https://github.com/hapijs/wreck/pull/33" + }, + { + "id": 40266000, + "labels": ["breaking changes"], + "number": 32, + "title": "Refactor `internals.shortcut` to have a fixed signature.", + "url": "https://github.com/hapijs/wreck/issues/32" + }, + { + "id": 40265957, + "labels": ["breaking changes"], + "number": 31, + "title": "Refactor `read` API to have a fixed signature.", + "url": "https://github.com/hapijs/wreck/issues/31" + }, + { + "id": 40194077, + "labels": ["documentation"], + "number": 30, + "title": "Clarify optional options argument.", + "url": "https://github.com/hapijs/wreck/pull/30" + }, + { + "id": 39980074, + "labels": ["documentation"], + "number": 28, + "title": "Nipple.request `options` are only optional if callback is omitted as well.", + "url": "https://github.com/hapijs/wreck/issues/28" + } + ], "number": 9, - "title": "coverage to 100% with Lab v3.0", - "url": "https://github.com/hapijs/wreck/pull/9" - }, - { - "id": 30620574, - "labels": ["test"], + "url": "https://github.com/hapijs/wreck/milestone/9", + "version": "3.0.0" + }, + { + "date": "2014-08-10T20:38:44Z", + "id": 740877, + "issues": [ + { + "id": 39909417, + "labels": ["documentation"], + "number": 27, + "title": "Correct copypasta errors in convenience method docs.", + "url": "https://github.com/hapijs/wreck/pull/27" + }, + { + "id": 39877432, + "labels": ["documentation"], + "number": 26, + "title": "Document API, parameters, and helper methods.", + "url": "https://github.com/hapijs/wreck/pull/26" + }, + { + "id": 39768676, + "labels": ["test"], + "number": 25, + "title": "Update to use lab v4", + "url": "https://github.com/hapijs/wreck/pull/25" + }, + { + "id": 39668689, + "labels": ["feature"], + "number": 24, + "title": "Breaking out code into separate modules", + "url": "https://github.com/hapijs/wreck/pull/24" + } + ], "number": 8, - "title": "get code coverage to 100% under Lab v3.0", - "url": "https://github.com/hapijs/wreck/issues/8" - }, - { - "id": 29407685, - "labels": ["test"], + "url": "https://github.com/hapijs/wreck/milestone/8", + "version": "2.5.5" + }, + { + "date": "2014-08-03T07:12:37Z", + "id": 679815, + "issues": [ + { + "id": 39355773, + "labels": ["bug"], + "number": 23, + "title": "allow for unicode characters in string payloads, closes #20", + "url": "https://github.com/hapijs/wreck/pull/23" + }, + { + "id": 36055544, + "labels": ["bug"], + "number": 20, + "title": "Usage of post", + "url": "https://github.com/hapijs/wreck/issues/20" + } + ], "number": 7, - "title": "Fixed Shortcut test grouping", - "url": "https://github.com/hapijs/wreck/pull/7" - } - ], - "number": 3, - "url": "https://github.com/hapijs/wreck/milestone/3", - "version": "2.5.0" - }, - { - "date": "2014-03-12T22:07:49Z", - "id": 594631, - "issues": [ - { - "id": 29268517, - "labels": ["feature"], + "url": "https://github.com/hapijs/wreck/milestone/7", + "version": "2.5.4" + }, + { + "date": "2014-06-03T22:16:22Z", + "id": 665072, + "issues": [ + { + "id": 34909752, + "labels": ["bug"], + "number": 18, + "title": "Set content-length on string or buffer payload", + "url": "https://github.com/hapijs/wreck/issues/18" + } + ], "number": 6, - "title": "Added support for automatic JSON response parsing.", - "url": "https://github.com/hapijs/wreck/pull/6" - } - ], - "number": 2, - "url": "https://github.com/hapijs/wreck/milestone/2", - "version": "2.4.0" - }, - { - "date": "2014-03-12T16:17:11Z", - "id": 594629, - "issues": [ - { - "id": 29241944, - "labels": ["test"], + "url": "https://github.com/hapijs/wreck/milestone/6", + "version": "2.5.3" + }, + { + "date": "2014-05-20T22:24:54Z", + "id": 642996, + "issues": [ + { + "id": 32105940, + "labels": ["bug"], + "number": 13, + "title": "respect size in _read for toReadableStream", + "url": "https://github.com/hapijs/wreck/pull/13" + } + ], "number": 5, - "title": "Bring coverage back to 100% after lab fix", - "url": "https://github.com/hapijs/wreck/issues/5" - }, - { - "id": 28269054, - "labels": ["feature"], + "url": "https://github.com/hapijs/wreck/milestone/5", + "version": "2.5.2" + }, + { + "date": "2014-04-28T20:35:46Z", + "id": 626913, + "issues": [ + { + "id": 32385186, + "labels": ["bug"], + "number": 16, + "title": "Prevent starvation due to timeout requests", + "url": "https://github.com/hapijs/wreck/pull/16" + } + ], "number": 4, - "title": "maxSockets Support", - "url": "https://github.com/hapijs/wreck/pull/4" - } - ], - "number": 1, - "url": "https://github.com/hapijs/wreck/milestone/1", - "version": "2.3.0" - } + "url": "https://github.com/hapijs/wreck/milestone/4", + "version": "2.5.1" + }, + { + "date": "2014-04-11T04:28:17Z", + "id": 595523, + "issues": [ + { + "id": 31248447, + "labels": ["feature"], + "number": 11, + "title": "Hoek version bump to 2.x.x", + "url": "https://github.com/hapijs/wreck/pull/11" + }, + { + "id": 31244381, + "labels": ["feature"], + "number": 10, + "title": "match() -> test()", + "url": "https://github.com/hapijs/wreck/pull/10" + }, + { + "id": 30903429, + "labels": ["test"], + "number": 9, + "title": "coverage to 100% with Lab v3.0", + "url": "https://github.com/hapijs/wreck/pull/9" + }, + { + "id": 30620574, + "labels": ["test"], + "number": 8, + "title": "get code coverage to 100% under Lab v3.0", + "url": "https://github.com/hapijs/wreck/issues/8" + }, + { + "id": 29407685, + "labels": ["test"], + "number": 7, + "title": "Fixed Shortcut test grouping", + "url": "https://github.com/hapijs/wreck/pull/7" + } + ], + "number": 3, + "url": "https://github.com/hapijs/wreck/milestone/3", + "version": "2.5.0" + }, + { + "date": "2014-03-12T22:07:49Z", + "id": 594631, + "issues": [ + { + "id": 29268517, + "labels": ["feature"], + "number": 6, + "title": "Added support for automatic JSON response parsing.", + "url": "https://github.com/hapijs/wreck/pull/6" + } + ], + "number": 2, + "url": "https://github.com/hapijs/wreck/milestone/2", + "version": "2.4.0" + }, + { + "date": "2014-03-12T16:17:11Z", + "id": 594629, + "issues": [ + { + "id": 29241944, + "labels": ["test"], + "number": 5, + "title": "Bring coverage back to 100% after lab fix", + "url": "https://github.com/hapijs/wreck/issues/5" + }, + { + "id": 28269054, + "labels": ["feature"], + "number": 4, + "title": "maxSockets Support", + "url": "https://github.com/hapijs/wreck/pull/4" + } + ], + "number": 1, + "url": "https://github.com/hapijs/wreck/milestone/1", + "version": "2.3.0" + } ] diff --git a/generated/modules/wreck/info.json b/generated/modules/wreck/info.json index a49f00e4..4570530e 100644 --- a/generated/modules/wreck/info.json +++ b/generated/modules/wreck/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 103, - "isPlugin": false, - "link": "https://github.com/hapijs/wreck", - "name": "wreck", - "package": "@hapi/wreck", - "slogan": "HTTP client utilities.", - "sloganHtml": "HTTP client utilities.", - "stars": 378, - "updated": "2024-04-10T17:35:00Z", - "versions": [ - { - "branch": "v18.1.0", - "license": "BSD", - "name": "18.1.0", - "node": ">= 16" - } - ], - "versionsArray": ["18.1.0"], - "latestVersion": "18.x.x" + "api": true, + "forks": 102, + "isPlugin": false, + "latestVersion": "18.x.x", + "link": "https://github.com/hapijs/wreck", + "name": "wreck", + "package": "@hapi/wreck", + "slogan": "HTTP client utilities.", + "sloganHtml": "HTTP client utilities.", + "stars": 378, + "updated": "2026-05-20T10:27:17Z", + "versions": [ + { + "branch": "v18.1.2", + "license": "BSD", + "name": "18.1.2", + "node": ">= 16" + } + ], + "versionsArray": ["18.1.2"] } diff --git a/generated/modules/yar/changelog.json b/generated/modules/yar/changelog.json index 7be4898d..3b25d9f4 100644 --- a/generated/modules/yar/changelog.json +++ b/generated/modules/yar/changelog.json @@ -1,530 +1,530 @@ [ - { - "date": "2025-03-22T11:37:41Z", - "id": 12594782, - "issues": [ - { - "id": 2195741736, - "labels": ["types"], - "number": 169, - "title": "feat: 🎸 improve yar values and flash typings", - "url": "https://github.com/hapijs/yar/pull/169" - } - ], - "number": 25, - "url": "https://github.com/hapijs/yar/milestone/25", - "version": "11.0.3" - }, - { - "date": "2024-03-19T21:21:49Z", - "id": 10706042, - "issues": [ - { - "id": 2195644602, - "labels": ["types"], - "number": 168, - "title": "feat: 🎸 add types from DT", - "url": "https://github.com/hapijs/yar/pull/168" - } - ], - "number": 24, - "url": "https://github.com/hapijs/yar/milestone/24", - "version": "11.0.2" - }, - { - "date": "2023-02-11T20:19:24Z", - "id": 8358659, - "issues": [ - { - "id": 1551796985, - "labels": ["dependency"], - "number": 164, - "title": "chore: bump hoek", - "url": "https://github.com/hapijs/yar/pull/164" - } - ], - "number": 23, - "url": "https://github.com/hapijs/yar/milestone/23", - "version": "11.0.1" - }, - { - "date": "2022-08-29T03:34:50Z", - "id": 7813385, - "issues": [ - { - "id": 1307213524, - "labels": ["feature", "test", "breaking changes", "dependency"], - "number": 162, - "title": "Support hapi v21, drop hapi v19, test ESM support", - "url": "https://github.com/hapijs/yar/pull/162" - }, - { - "id": 1253213188, - "labels": [], - "number": 161, - "title": "Update deps, use null operator", - "url": "https://github.com/hapijs/yar/pull/161" - }, - { - "id": 1184179323, - "labels": ["breaking changes"], - "number": 159, - "title": "Drop support for node v12", - "url": "https://github.com/hapijs/yar/issues/159" - }, - { - "id": 1034546233, - "labels": ["breaking changes", "dependency"], - "number": 157, - "title": "Use crypto.randomUUID as default session id", - "url": "https://github.com/hapijs/yar/pull/157" - }, - { - "id": 1013820769, - "labels": ["feature", "breaking changes"], - "number": 156, - "title": "Use built-in crypto.randomUUID", - "url": "https://github.com/hapijs/yar/issues/156" - } - ], - "number": 22, - "url": "https://github.com/hapijs/yar/milestone/22", - "version": "11.0.0" - }, - { - "date": "2020-09-10T15:39:58Z", - "id": 5216416, - "issues": [ - { - "id": 684036049, - "labels": [], - "number": 148, - "title": "update to hapi v20", - "url": "https://github.com/hapijs/yar/pull/148" - }, - { - "id": 684034709, - "labels": [], - "number": 147, - "title": "migrate to new travis format", - "url": "https://github.com/hapijs/yar/pull/147" - }, - { - "id": 672203891, - "labels": [], - "number": 146, - "title": "upgrade lab and uuid dep", - "url": "https://github.com/hapijs/yar/pull/146" - }, - { - "id": 652167098, - "labels": ["documentation"], - "number": 145, - "title": "Update API.md", - "url": "https://github.com/hapijs/yar/pull/145" - } - ], - "number": 20, - "url": "https://github.com/hapijs/yar/milestone/20", - "version": "10.1.1" - }, - { - "date": "2020-03-19T06:44:43Z", - "id": 4999159, - "issues": [ - { - "id": 583977580, - "labels": ["feature"], - "number": 144, - "title": "Assign data in onPreResponse lifecycle extension with takeover", - "url": "https://github.com/hapijs/yar/issues/144" - } - ], - "number": 19, - "url": "https://github.com/hapijs/yar/milestone/19", - "version": "10.1.0" - }, - { - "date": "2020-01-13T12:37:58Z", - "id": 4574300, - "issues": [ - { - "id": 548902222, - "labels": ["breaking changes"], - "number": 141, - "title": "Change plugin name to @hapi/yar", - "url": "https://github.com/hapijs/yar/issues/141" - }, - { - "id": 548901498, - "labels": ["breaking changes", "dependency"], - "number": 140, - "title": "Require hapi 19", - "url": "https://github.com/hapijs/yar/issues/140" - }, - { - "id": 548900850, - "labels": ["breaking changes", "dependency"], - "number": 139, - "title": "Only node 12", - "url": "https://github.com/hapijs/yar/issues/139" - } - ], - "number": 18, - "url": "https://github.com/hapijs/yar/milestone/18", - "version": "10.0.0" - }, - { - "date": "2019-08-15T00:33:03Z", - "id": 4245120, - "issues": [ - { - "id": 480894704, - "labels": ["dependency"], - "number": 134, - "title": "Update dep", - "url": "https://github.com/hapijs/yar/issues/134" - } - ], - "number": 17, - "url": "https://github.com/hapijs/yar/milestone/17", - "version": "9.2.1" - }, - { - "date": "2019-04-20T04:02:28Z", - "id": 3793116, - "issues": [ - { - "id": 435353934, - "labels": ["dependency"], - "number": 131, - "title": "Change module namespace", - "url": "https://github.com/hapijs/yar/issues/131" - } - ], - "number": 16, - "url": "https://github.com/hapijs/yar/milestone/16", - "version": "9.2.0" - }, - { - "date": "2018-11-03T21:58:12Z", - "id": 3680852, - "issues": [ - { - "id": 377003662, - "labels": ["dependency"], - "number": 127, - "title": "chore: update dependencies", - "url": "https://github.com/hapijs/yar/pull/127" - }, - { - "id": 363596265, - "labels": ["feature"], - "number": 126, - "title": "Add possibility to revoke specific session on the server side", - "url": "https://github.com/hapijs/yar/pull/126" - }, - { - "id": 362993248, - "labels": ["non issue"], - "number": 125, - "title": "Minor: Deprecated use of uuid", - "url": "https://github.com/hapijs/yar/issues/125" - }, - { - "id": 361695991, - "labels": ["feature"], - "number": 123, - "title": "Delete a specific user's session ", - "url": "https://github.com/hapijs/yar/issues/123" - } - ], - "number": 15, - "url": "https://github.com/hapijs/yar/milestone/15", - "version": "9.1.0" - }, - { - "date": "2018-09-24T00:21:36Z", - "id": 3680851, - "issues": [ - { - "id": 362982579, - "labels": ["bug"], - "number": 124, - "title": "Yar doesn't handle the session cookie multiple times correctly.", - "url": "https://github.com/hapijs/yar/issues/124" - }, - { - "id": 358382909, - "labels": ["bug"], - "number": 122, - "title": "Do not cast all falsy values to null", - "url": "https://github.com/hapijs/yar/pull/122" - }, - { - "id": 356949652, - "labels": ["bug"], - "number": 121, - "title": "Falsy values are converted to null", - "url": "https://github.com/hapijs/yar/issues/121" - } - ], - "number": 14, - "url": "https://github.com/hapijs/yar/milestone/14", - "version": "9.0.2" - }, - { - "date": "2016-12-19T08:24:37Z", - "id": 2203972, - "issues": [ - { - "id": 196311545, - "labels": ["bug"], - "number": 110, - "title": "Fix `main` in package.json", - "url": "https://github.com/hapijs/yar/pull/110" - } - ], - "number": 13, - "url": "https://github.com/hapijs/yar/milestone/13", - "version": "8.1.2" - }, - { - "date": "2016-12-19T08:24:41Z", - "id": 1484079, - "issues": [ - { - "id": 124896919, - "labels": ["feature"], - "number": 90, - "title": "add a route level config option to skip yar processing", - "url": "https://github.com/hapijs/yar/pull/90" - } - ], - "number": 12, - "url": "https://github.com/hapijs/yar/milestone/12", - "version": "6.1.0" - }, - { - "date": "2016-12-19T08:24:39Z", - "id": 1480771, - "issues": [ - { - "id": 124894943, - "labels": ["feature", "breaking changes"], - "number": 89, - "title": "update yar to use request.yar instead of request.session", - "url": "https://github.com/hapijs/yar/pull/89" - }, - { - "id": 124604461, - "labels": ["dependency"], - "number": 88, - "title": "Decorate request with session key", - "url": "https://github.com/hapijs/yar/issues/88" - } - ], - "number": 11, - "url": "https://github.com/hapijs/yar/milestone/11", - "version": "6.0.0" - }, - { - "date": "2016-12-19T08:24:44Z", - "id": 1320739, - "issues": [ - { - "id": 107796213, - "labels": ["feature"], - "number": 83, - "title": "Option to skip exception on cache error", - "url": "https://github.com/hapijs/yar/pull/83" - } - ], - "number": 10, - "url": "https://github.com/hapijs/yar/milestone/10", - "version": "4.3.0" - }, - { - "date": "2016-12-19T08:24:45Z", - "id": 1298195, - "issues": [ - { - "id": 85389708, - "labels": ["feature"], - "number": 75, - "title": "Allow specification of whether to store blank sessions", - "url": "https://github.com/hapijs/yar/pull/75" - } - ], - "number": 9, - "url": "https://github.com/hapijs/yar/milestone/9", - "version": "4.2.0" - }, - { - "date": "2016-12-19T08:24:43Z", - "id": 1298174, - "issues": [ - { - "id": 105629123, - "labels": ["bug", "breaking changes"], - "number": 80, - "title": "ignore invalid cookies so we don't get 400 errors on servers, which i…", - "url": "https://github.com/hapijs/yar/pull/80" - }, - { - "id": 52550070, - "labels": ["bug", "breaking changes"], - "number": 65, - "title": "\"Invalid cookie value\" after password change, but OK after refresh!", - "url": "https://github.com/hapijs/yar/issues/65" - } - ], - "number": 8, - "url": "https://github.com/hapijs/yar/milestone/8", - "version": "4.0.0" - }, - { - "date": "2016-12-19T08:24:47Z", - "id": 1297794, - "issues": [ - { - "id": 105607496, - "labels": ["bug", "test"], - "number": 79, - "title": "Tests are failing", - "url": "https://github.com/hapijs/yar/issues/79" - } - ], - "number": 6, - "url": "https://github.com/hapijs/yar/milestone/6", - "version": "3.0.4" - }, - { - "date": "2016-12-19T08:29:46Z", - "id": 899759, - "issues": [], - "number": 5, - "url": "https://github.com/hapijs/yar/milestone/5", - "version": "3.0.2" - }, - { - "date": "2014-12-10T22:39:44Z", - "id": 883276, - "issues": [ - { - "id": 51606903, - "labels": ["dependency"], - "number": 61, - "title": "Can't install yar from npm", - "url": "https://github.com/hapijs/yar/issues/61" - }, - { - "id": 50352390, - "labels": ["breaking changes", "dependency"], - "number": 57, - "title": "hapi 8.0. Closes #56", - "url": "https://github.com/hapijs/yar/pull/57" - }, - { - "id": 50352288, - "labels": ["breaking changes", "dependency"], - "number": 56, - "title": "hapi 8.0 API", - "url": "https://github.com/hapijs/yar/issues/56" - } - ], - "number": 4, - "url": "https://github.com/hapijs/yar/milestone/4", - "version": "3.0.0" - }, - { - "date": "2014-11-28T08:42:16Z", - "id": 624731, - "issues": [ - { - "id": 44718189, - "labels": ["bug"], - "number": 52, - "title": "properly drop session during session.reset", - "url": "https://github.com/hapijs/yar/pull/52" - }, - { - "id": 37971682, - "labels": ["feature"], - "number": 46, - "title": "Hapi6", - "url": "https://github.com/hapijs/yar/pull/46" - }, - { - "id": 37488321, - "labels": ["documentation"], - "number": 45, - "title": "Update examples, examples/package.json to use Hapi 6.x", - "url": "https://github.com/hapijs/yar/pull/45" - }, - { - "id": 37481122, - "labels": ["documentation"], - "number": 44, - "title": "Updated readme to match hapi 6.x API", - "url": "https://github.com/hapijs/yar/pull/44" - }, - { - "id": 37480344, - "labels": ["feature"], - "number": 43, - "title": "Update tests / package.json to use Hapi 6.x", - "url": "https://github.com/hapijs/yar/pull/43" - }, - { - "id": 37078683, - "labels": ["bug"], - "number": 41, - "title": "errorhandling after cookie password changes", - "url": "https://github.com/hapijs/yar/issues/41" - } - ], - "number": 3, - "url": "https://github.com/hapijs/yar/milestone/3", - "version": "2.4.0" - }, - { - "date": "2014-04-09T05:24:56Z", - "id": 603531, - "issues": [ - { - "id": 31087190, - "labels": ["feature"], - "number": 32, - "title": "Upgrade to Hapi 4.x", - "url": "https://github.com/hapijs/yar/pull/32" - } - ], - "number": 2, - "url": "https://github.com/hapijs/yar/milestone/2", - "version": "2.1.0" - }, - { - "date": "2014-03-20T08:49:53Z", - "id": 603530, - "issues": [ - { - "id": 29801576, - "labels": ["breaking changes"], - "number": 29, - "title": "Replace ttl and store with cache options", - "url": "https://github.com/hapijs/yar/issues/29" - }, - { - "id": 29688039, - "labels": ["feature"], - "number": 28, - "title": "Update to hapi 3.x", - "url": "https://github.com/hapijs/yar/pull/28" - } - ], - "number": 1, - "url": "https://github.com/hapijs/yar/milestone/1", - "version": "2.0.0" - } + { + "date": "2025-03-22T11:37:41Z", + "id": 12594782, + "issues": [ + { + "id": 2195741736, + "labels": ["types"], + "number": 169, + "title": "feat: 🎸 improve yar values and flash typings", + "url": "https://github.com/hapijs/yar/pull/169" + } + ], + "number": 25, + "url": "https://github.com/hapijs/yar/milestone/25", + "version": "11.0.3" + }, + { + "date": "2024-03-19T21:21:49Z", + "id": 10706042, + "issues": [ + { + "id": 2195644602, + "labels": ["types"], + "number": 168, + "title": "feat: 🎸 add types from DT", + "url": "https://github.com/hapijs/yar/pull/168" + } + ], + "number": 24, + "url": "https://github.com/hapijs/yar/milestone/24", + "version": "11.0.2" + }, + { + "date": "2023-02-11T20:19:24Z", + "id": 8358659, + "issues": [ + { + "id": 1551796985, + "labels": ["dependency"], + "number": 164, + "title": "chore: bump hoek", + "url": "https://github.com/hapijs/yar/pull/164" + } + ], + "number": 23, + "url": "https://github.com/hapijs/yar/milestone/23", + "version": "11.0.1" + }, + { + "date": "2022-08-29T03:34:50Z", + "id": 7813385, + "issues": [ + { + "id": 1307213524, + "labels": ["feature", "test", "breaking changes", "dependency"], + "number": 162, + "title": "Support hapi v21, drop hapi v19, test ESM support", + "url": "https://github.com/hapijs/yar/pull/162" + }, + { + "id": 1253213188, + "labels": [], + "number": 161, + "title": "Update deps, use null operator", + "url": "https://github.com/hapijs/yar/pull/161" + }, + { + "id": 1184179323, + "labels": ["breaking changes"], + "number": 159, + "title": "Drop support for node v12", + "url": "https://github.com/hapijs/yar/issues/159" + }, + { + "id": 1034546233, + "labels": ["breaking changes", "dependency"], + "number": 157, + "title": "Use crypto.randomUUID as default session id", + "url": "https://github.com/hapijs/yar/pull/157" + }, + { + "id": 1013820769, + "labels": ["feature", "breaking changes"], + "number": 156, + "title": "Use built-in crypto.randomUUID", + "url": "https://github.com/hapijs/yar/issues/156" + } + ], + "number": 22, + "url": "https://github.com/hapijs/yar/milestone/22", + "version": "11.0.0" + }, + { + "date": "2020-09-10T15:39:58Z", + "id": 5216416, + "issues": [ + { + "id": 684036049, + "labels": [], + "number": 148, + "title": "update to hapi v20", + "url": "https://github.com/hapijs/yar/pull/148" + }, + { + "id": 684034709, + "labels": [], + "number": 147, + "title": "migrate to new travis format", + "url": "https://github.com/hapijs/yar/pull/147" + }, + { + "id": 672203891, + "labels": [], + "number": 146, + "title": "upgrade lab and uuid dep", + "url": "https://github.com/hapijs/yar/pull/146" + }, + { + "id": 652167098, + "labels": ["documentation"], + "number": 145, + "title": "Update API.md", + "url": "https://github.com/hapijs/yar/pull/145" + } + ], + "number": 20, + "url": "https://github.com/hapijs/yar/milestone/20", + "version": "10.1.1" + }, + { + "date": "2020-03-19T06:44:43Z", + "id": 4999159, + "issues": [ + { + "id": 583977580, + "labels": ["feature"], + "number": 144, + "title": "Assign data in onPreResponse lifecycle extension with takeover", + "url": "https://github.com/hapijs/yar/issues/144" + } + ], + "number": 19, + "url": "https://github.com/hapijs/yar/milestone/19", + "version": "10.1.0" + }, + { + "date": "2020-01-13T12:37:58Z", + "id": 4574300, + "issues": [ + { + "id": 548902222, + "labels": ["breaking changes"], + "number": 141, + "title": "Change plugin name to @hapi/yar", + "url": "https://github.com/hapijs/yar/issues/141" + }, + { + "id": 548901498, + "labels": ["breaking changes", "dependency"], + "number": 140, + "title": "Require hapi 19", + "url": "https://github.com/hapijs/yar/issues/140" + }, + { + "id": 548900850, + "labels": ["breaking changes", "dependency"], + "number": 139, + "title": "Only node 12", + "url": "https://github.com/hapijs/yar/issues/139" + } + ], + "number": 18, + "url": "https://github.com/hapijs/yar/milestone/18", + "version": "10.0.0" + }, + { + "date": "2019-08-15T00:33:03Z", + "id": 4245120, + "issues": [ + { + "id": 480894704, + "labels": ["dependency"], + "number": 134, + "title": "Update dep", + "url": "https://github.com/hapijs/yar/issues/134" + } + ], + "number": 17, + "url": "https://github.com/hapijs/yar/milestone/17", + "version": "9.2.1" + }, + { + "date": "2019-04-20T04:02:28Z", + "id": 3793116, + "issues": [ + { + "id": 435353934, + "labels": ["dependency"], + "number": 131, + "title": "Change module namespace", + "url": "https://github.com/hapijs/yar/issues/131" + } + ], + "number": 16, + "url": "https://github.com/hapijs/yar/milestone/16", + "version": "9.2.0" + }, + { + "date": "2018-11-03T21:58:12Z", + "id": 3680852, + "issues": [ + { + "id": 377003662, + "labels": ["dependency"], + "number": 127, + "title": "chore: update dependencies", + "url": "https://github.com/hapijs/yar/pull/127" + }, + { + "id": 363596265, + "labels": ["feature"], + "number": 126, + "title": "Add possibility to revoke specific session on the server side", + "url": "https://github.com/hapijs/yar/pull/126" + }, + { + "id": 362993248, + "labels": ["non issue"], + "number": 125, + "title": "Minor: Deprecated use of uuid", + "url": "https://github.com/hapijs/yar/issues/125" + }, + { + "id": 361695991, + "labels": ["feature"], + "number": 123, + "title": "Delete a specific user's session ", + "url": "https://github.com/hapijs/yar/issues/123" + } + ], + "number": 15, + "url": "https://github.com/hapijs/yar/milestone/15", + "version": "9.1.0" + }, + { + "date": "2018-09-24T00:21:36Z", + "id": 3680851, + "issues": [ + { + "id": 362982579, + "labels": ["bug"], + "number": 124, + "title": "Yar doesn't handle the session cookie multiple times correctly.", + "url": "https://github.com/hapijs/yar/issues/124" + }, + { + "id": 358382909, + "labels": ["bug"], + "number": 122, + "title": "Do not cast all falsy values to null", + "url": "https://github.com/hapijs/yar/pull/122" + }, + { + "id": 356949652, + "labels": ["bug"], + "number": 121, + "title": "Falsy values are converted to null", + "url": "https://github.com/hapijs/yar/issues/121" + } + ], + "number": 14, + "url": "https://github.com/hapijs/yar/milestone/14", + "version": "9.0.2" + }, + { + "date": "2016-12-19T08:24:37Z", + "id": 2203972, + "issues": [ + { + "id": 196311545, + "labels": ["bug"], + "number": 110, + "title": "Fix `main` in package.json", + "url": "https://github.com/hapijs/yar/pull/110" + } + ], + "number": 13, + "url": "https://github.com/hapijs/yar/milestone/13", + "version": "8.1.2" + }, + { + "date": "2016-12-19T08:24:41Z", + "id": 1484079, + "issues": [ + { + "id": 124896919, + "labels": ["feature"], + "number": 90, + "title": "add a route level config option to skip yar processing", + "url": "https://github.com/hapijs/yar/pull/90" + } + ], + "number": 12, + "url": "https://github.com/hapijs/yar/milestone/12", + "version": "6.1.0" + }, + { + "date": "2016-12-19T08:24:39Z", + "id": 1480771, + "issues": [ + { + "id": 124894943, + "labels": ["feature", "breaking changes"], + "number": 89, + "title": "update yar to use request.yar instead of request.session", + "url": "https://github.com/hapijs/yar/pull/89" + }, + { + "id": 124604461, + "labels": ["dependency"], + "number": 88, + "title": "Decorate request with session key", + "url": "https://github.com/hapijs/yar/issues/88" + } + ], + "number": 11, + "url": "https://github.com/hapijs/yar/milestone/11", + "version": "6.0.0" + }, + { + "date": "2016-12-19T08:24:44Z", + "id": 1320739, + "issues": [ + { + "id": 107796213, + "labels": ["feature"], + "number": 83, + "title": "Option to skip exception on cache error", + "url": "https://github.com/hapijs/yar/pull/83" + } + ], + "number": 10, + "url": "https://github.com/hapijs/yar/milestone/10", + "version": "4.3.0" + }, + { + "date": "2016-12-19T08:24:45Z", + "id": 1298195, + "issues": [ + { + "id": 85389708, + "labels": ["feature"], + "number": 75, + "title": "Allow specification of whether to store blank sessions", + "url": "https://github.com/hapijs/yar/pull/75" + } + ], + "number": 9, + "url": "https://github.com/hapijs/yar/milestone/9", + "version": "4.2.0" + }, + { + "date": "2016-12-19T08:24:43Z", + "id": 1298174, + "issues": [ + { + "id": 105629123, + "labels": ["bug", "breaking changes"], + "number": 80, + "title": "ignore invalid cookies so we don't get 400 errors on servers, which i…", + "url": "https://github.com/hapijs/yar/pull/80" + }, + { + "id": 52550070, + "labels": ["bug", "breaking changes"], + "number": 65, + "title": "\"Invalid cookie value\" after password change, but OK after refresh!", + "url": "https://github.com/hapijs/yar/issues/65" + } + ], + "number": 8, + "url": "https://github.com/hapijs/yar/milestone/8", + "version": "4.0.0" + }, + { + "date": "2016-12-19T08:24:47Z", + "id": 1297794, + "issues": [ + { + "id": 105607496, + "labels": ["bug", "test"], + "number": 79, + "title": "Tests are failing", + "url": "https://github.com/hapijs/yar/issues/79" + } + ], + "number": 6, + "url": "https://github.com/hapijs/yar/milestone/6", + "version": "3.0.4" + }, + { + "date": "2016-12-19T08:29:46Z", + "id": 899759, + "issues": [], + "number": 5, + "url": "https://github.com/hapijs/yar/milestone/5", + "version": "3.0.2" + }, + { + "date": "2014-12-10T22:39:44Z", + "id": 883276, + "issues": [ + { + "id": 51606903, + "labels": ["dependency"], + "number": 61, + "title": "Can't install yar from npm", + "url": "https://github.com/hapijs/yar/issues/61" + }, + { + "id": 50352390, + "labels": ["breaking changes", "dependency"], + "number": 57, + "title": "hapi 8.0. Closes #56", + "url": "https://github.com/hapijs/yar/pull/57" + }, + { + "id": 50352288, + "labels": ["breaking changes", "dependency"], + "number": 56, + "title": "hapi 8.0 API", + "url": "https://github.com/hapijs/yar/issues/56" + } + ], + "number": 4, + "url": "https://github.com/hapijs/yar/milestone/4", + "version": "3.0.0" + }, + { + "date": "2014-11-28T08:42:16Z", + "id": 624731, + "issues": [ + { + "id": 44718189, + "labels": ["bug"], + "number": 52, + "title": "properly drop session during session.reset", + "url": "https://github.com/hapijs/yar/pull/52" + }, + { + "id": 37971682, + "labels": ["feature"], + "number": 46, + "title": "Hapi6", + "url": "https://github.com/hapijs/yar/pull/46" + }, + { + "id": 37488321, + "labels": ["documentation"], + "number": 45, + "title": "Update examples, examples/package.json to use Hapi 6.x", + "url": "https://github.com/hapijs/yar/pull/45" + }, + { + "id": 37481122, + "labels": ["documentation"], + "number": 44, + "title": "Updated readme to match hapi 6.x API", + "url": "https://github.com/hapijs/yar/pull/44" + }, + { + "id": 37480344, + "labels": ["feature"], + "number": 43, + "title": "Update tests / package.json to use Hapi 6.x", + "url": "https://github.com/hapijs/yar/pull/43" + }, + { + "id": 37078683, + "labels": ["bug"], + "number": 41, + "title": "errorhandling after cookie password changes", + "url": "https://github.com/hapijs/yar/issues/41" + } + ], + "number": 3, + "url": "https://github.com/hapijs/yar/milestone/3", + "version": "2.4.0" + }, + { + "date": "2014-04-09T05:24:56Z", + "id": 603531, + "issues": [ + { + "id": 31087190, + "labels": ["feature"], + "number": 32, + "title": "Upgrade to Hapi 4.x", + "url": "https://github.com/hapijs/yar/pull/32" + } + ], + "number": 2, + "url": "https://github.com/hapijs/yar/milestone/2", + "version": "2.1.0" + }, + { + "date": "2014-03-20T08:49:53Z", + "id": 603530, + "issues": [ + { + "id": 29801576, + "labels": ["breaking changes"], + "number": 29, + "title": "Replace ttl and store with cache options", + "url": "https://github.com/hapijs/yar/issues/29" + }, + { + "id": 29688039, + "labels": ["feature"], + "number": 28, + "title": "Update to hapi 3.x", + "url": "https://github.com/hapijs/yar/pull/28" + } + ], + "number": 1, + "url": "https://github.com/hapijs/yar/milestone/1", + "version": "2.0.0" + } ] diff --git a/generated/modules/yar/info.json b/generated/modules/yar/info.json index 2e7dd166..1dd0ea92 100644 --- a/generated/modules/yar/info.json +++ b/generated/modules/yar/info.json @@ -1,22 +1,22 @@ { - "api": true, - "forks": 58, - "isPlugin": true, - "link": "https://github.com/hapijs/yar", - "name": "yar", - "package": "@hapi/yar", - "slogan": "A hapi session manager.", - "sloganHtml": "A hapi session manager.", - "stars": 133, - "updated": "2025-03-22T11:36:48Z", - "versions": [ - { - "branch": "v11.0.3", - "license": "BSD", - "name": "11.0.3", - "node": ">= 16" - } - ], - "versionsArray": ["11.0.3"], - "latestVersion": "11.x.x" + "api": true, + "forks": 58, + "isPlugin": true, + "latestVersion": "11.x.x", + "link": "https://github.com/hapijs/yar", + "name": "yar", + "package": "@hapi/yar", + "slogan": "A hapi session manager.", + "sloganHtml": "A hapi session manager.", + "stars": 133, + "updated": "2025-03-22T11:36:48Z", + "versions": [ + { + "branch": "v11.0.3", + "license": "BSD", + "name": "11.0.3", + "node": ">= 16" + } + ], + "versionsArray": ["11.0.3"] } diff --git a/oxfmt.config.ts b/oxfmt.config.ts new file mode 100644 index 00000000..df770ddf --- /dev/null +++ b/oxfmt.config.ts @@ -0,0 +1,16 @@ +import DefaultOxfmtConfig from '@hapi/oxc-plugin/oxfmt'; +import { defineConfig } from 'oxfmt'; + +import type { OxfmtConfig } from 'oxfmt'; + +export default defineConfig({ + ...DefaultOxfmtConfig, + overrides: [ + { + files: ['generated/**'], + options: { + printWidth: 80, + }, + }, + ], +}) as OxfmtConfig; diff --git a/oxlint.config.ts b/oxlint.config.ts new file mode 100644 index 00000000..2f600f80 --- /dev/null +++ b/oxlint.config.ts @@ -0,0 +1,16 @@ +import HapiRecommended from '@hapi/oxc-plugin/oxlint'; +import { defineConfig } from 'oxlint'; + +import type { OxlintConfig } from 'oxlint'; + +export default defineConfig({ + extends: [HapiRecommended], + env: { + ...HapiRecommended.env, + browser: true, + }, + globals: { + defineProps: 'readonly', + defineModel: 'readonly', + }, +}) as OxlintConfig; diff --git a/package.json b/package.json index 5add3f37..14bbea69 100644 --- a/package.json +++ b/package.json @@ -1,41 +1,42 @@ { - "name": "hapi.dev", - "version": "1.0.0", - "private": true, - "description": "The hapi.dev developer portal", - "type": "module", - "packageManager": "pnpm@10.33.0", - "repository": "git://github.com/hapijs/hapi.dev", - "scripts": { - "dev": "vitepress dev", - "fetch-data": "tsx cli/getModuleInfo.ts", - "build": "vitepress build", - "preview": "vitepress preview", - "generate": "tsx cli/getModuleInfo.ts && vitepress build", - "lint": "oxlint", - "lint:fix": "oxlint --fix", - "fmt": "oxfmt --check", - "fmt:fix": "oxfmt", - "test": "pnpm run lint && pnpm run fmt && tsc --noEmit" - }, - "license": "BSD-3-Clause", - "dependencies": { - "@vueuse/core": "^14.2.1", - "es-toolkit": "^1.45.1", - "feed": "^5.2.0", - "semver": "^7.7.4", - "vitepress-plugin-group-icons": "^1.7.3", - "vue": "^3.5.31" - }, - "devDependencies": { - "@octokit/plugin-throttling": "^11.0.3", - "@octokit/rest": "^22.0.1", - "@types/node": "^24.12.0", - "@types/semver": "^7.7.1", - "oxfmt": "^0.43.0", - "oxlint": "^1.59.0", - "tsx": "^4.21.0", - "typescript": "^6.0.2", - "vitepress": "2.0.0-alpha.17" - } + "name": "hapi.dev", + "version": "1.0.0", + "private": true, + "description": "The hapi.dev developer portal", + "license": "BSD-3-Clause", + "repository": "git://github.com/hapijs/hapi.dev", + "type": "module", + "scripts": { + "dev": "vitepress dev", + "fetch-data": "tsx cli/getModuleInfo.ts", + "build": "vitepress build", + "preview": "vitepress preview", + "generate": "tsx cli/getModuleInfo.ts && vitepress build", + "lint": "oxlint", + "lint:fix": "oxlint --fix", + "fmt": "oxfmt --check", + "fmt:fix": "oxfmt", + "test": "pnpm run lint && pnpm run fmt && tsc --noEmit" + }, + "dependencies": { + "@vueuse/core": "^14.3.0", + "es-toolkit": "^1.47.1", + "feed": "^5.2.1", + "semver": "^7.8.4", + "vitepress-plugin-group-icons": "^1.7.5", + "vue": "^3.5.38" + }, + "devDependencies": { + "@hapi/oxc-plugin": "^1.0.1", + "@octokit/plugin-throttling": "^11.0.3", + "@octokit/rest": "^22.0.1", + "@types/node": "^24.12.0", + "@types/semver": "^7.7.1", + "oxfmt": "^0.55.0", + "oxlint": "^1.70.0", + "tsx": "^4.22.4", + "typescript": "^6.0.3", + "vitepress": "2.0.0-alpha.17" + }, + "packageManager": "pnpm@10.33.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0ceb0b92..9df65f42 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,24 +9,27 @@ importers: .: dependencies: '@vueuse/core': - specifier: ^14.2.1 - version: 14.2.1(vue@3.5.32(typescript@6.0.2)) + specifier: ^14.3.0 + version: 14.3.0(vue@3.5.38(typescript@6.0.3)) es-toolkit: - specifier: ^1.45.1 - version: 1.45.1 + specifier: ^1.47.1 + version: 1.47.1 feed: - specifier: ^5.2.0 - version: 5.2.0 + specifier: ^5.2.1 + version: 5.2.1 semver: - specifier: ^7.7.4 - version: 7.7.4 + specifier: ^7.8.4 + version: 7.8.4 vitepress-plugin-group-icons: - specifier: ^1.7.3 - version: 1.7.3(vite@7.3.2(@types/node@24.12.2)(tsx@4.21.0)) + specifier: ^1.7.5 + version: 1.7.5(vite@7.3.5(@types/node@24.12.2)(tsx@4.22.4)) vue: - specifier: ^3.5.31 - version: 3.5.32(typescript@6.0.2) + specifier: ^3.5.38 + version: 3.5.38(typescript@6.0.3) devDependencies: + '@hapi/oxc-plugin': + specifier: ^1.0.1 + version: 1.0.1(oxfmt@0.55.0)(oxlint@1.70.0) '@octokit/plugin-throttling': specifier: ^11.0.3 version: 11.0.3(@octokit/core@7.0.6) @@ -40,41 +43,41 @@ importers: specifier: ^7.7.1 version: 7.7.1 oxfmt: - specifier: ^0.43.0 - version: 0.43.0 + specifier: ^0.55.0 + version: 0.55.0 oxlint: - specifier: ^1.59.0 - version: 1.59.0 + specifier: ^1.70.0 + version: 1.70.0 tsx: - specifier: ^4.21.0 - version: 4.21.0 + specifier: ^4.22.4 + version: 4.22.4 typescript: - specifier: ^6.0.2 - version: 6.0.2 + specifier: ^6.0.3 + version: 6.0.3 vitepress: specifier: 2.0.0-alpha.17 - version: 2.0.0-alpha.17(@types/node@24.12.2)(postcss@8.5.8)(tsx@4.21.0)(typescript@6.0.2) + version: 2.0.0-alpha.17(@types/node@24.12.2)(postcss@8.5.15)(tsx@4.22.4)(typescript@6.0.3) packages: '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.2': - resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + '@babel/parser@7.29.7': + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.29.0': - resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + '@babel/types@7.29.7': + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} '@docsearch/css@4.6.2': @@ -92,170 +95,333 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.27.7': resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.27.7': resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.27.7': resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.27.7': resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.27.7': resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.27.7': resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.27.7': resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.27.7': resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.27.7': resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.27.7': resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.27.7': resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.27.7': resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.27.7': resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.27.7': resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.27.7': resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.27.7': resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.27.7': resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.27.7': resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.27.7': resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.27.7': resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.27.7': resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.27.7': resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.27.7': resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.27.7': resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.27.7': resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@hapi/oxc-plugin@1.0.1': + resolution: {integrity: sha512-lgZF6H4w+778+YkguMkBLEkTo5aXJThxTwuPj+TFoD6BDOQ3HT4P9sJWoscwjjPPMHzxTUbq0pP6qjkzr5keSg==} + engines: {node: '>=22'} + peerDependencies: + oxfmt: '>=0.53.0' + oxlint: '>=1.68.0' + '@iconify-json/logos@1.2.11': resolution: {integrity: sha512-fOo4pGEatuyuCFNL+cwquYMa2Im0oJHRHV7lt/Qqs5Ode/lPImHCQcfTtPzZj7qYMPb/h8YHN3TG54uEowrjNQ==} '@iconify-json/simple-icons@1.2.76': resolution: {integrity: sha512-lLRlA8yaf+1L5VCPRvR9lynoSklsddKHEylchmZJKdj/q2xVQ1ZAEJ8SCQlv9cbgtMefnlyM98U+8Si2aoFZPA==} - '@iconify-json/vscode-icons@1.2.45': - resolution: {integrity: sha512-ow+ueibMIq79ueM1kv6cOWgHx8jfh1XJQi2RrqMHb4HLbvIBlxpy5PCMvOJXlA68R6fBAHpWQeh6uWx7VKEVsA==} + '@iconify-json/vscode-icons@1.2.58': + resolution: {integrity: sha512-ZM6O1GpImQ+n2+/dVijB4uDR1OVgfwoPgnVlKMnUxzJwExPTzuBb/Hd2iwnHj4gWbgBba9Io1qRolVJwYty50A==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@3.1.0': - resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} + '@iconify/utils@3.1.3': + resolution: {integrity: sha512-LPKOXPn/zV+zis1oOfGWogaXVpqUybF3ZS6SCZIsz8vg0ivVp9+fVqyYB7xq0aiST/VhUQYGO1qo6uoYSiEJqw==} '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} @@ -318,250 +484,254 @@ packages: '@octokit/types@16.0.0': resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==} - '@oxfmt/binding-android-arm-eabi@0.43.0': - resolution: {integrity: sha512-CgU2s+/9hHZgo0IxVxrbMPrMj+tJ6VM3mD7Mr/4oiz4FNTISLoCvRmB5nk4wAAle045RtRjd86m673jwPyb1OQ==} + '@oxfmt/binding-android-arm-eabi@0.55.0': + resolution: {integrity: sha512-+rFDOqQe5LOWgxrAJaZgLRudr6GQm0wGI6gtu7vVkrdLGjNMUSGbAlaCr8j7F2H2Er97vYQCU8WDb30onqMM1g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxfmt/binding-android-arm64@0.43.0': - resolution: {integrity: sha512-T9OfRwjA/EdYxAqbvR7TtqLv5nIrwPXuCtTwOHtS7aR9uXyn74ZYgzgTo6/ZwvTq9DY4W+DsV09hB2EXgn9EbA==} + '@oxfmt/binding-android-arm64@0.55.0': + resolution: {integrity: sha512-ctulLq8s3x8Zmvw6+iccB09TIKERAklRSmbJ10gk8mlAn05qZxoyo52dj3Hi9IJcmDSwF54fQaTVh2CbL6PInw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxfmt/binding-darwin-arm64@0.43.0': - resolution: {integrity: sha512-o3i49ZUSJWANzXMAAVY1wnqb65hn4JVzwlRQ5qfcwhRzIA8lGVaud31Q3by5ALHPrksp5QEaKCQF9aAS3TXpZA==} + '@oxfmt/binding-darwin-arm64@0.55.0': + resolution: {integrity: sha512-xDQczLH9pw/RBk1h/GH0qcGMm8hQtmtVHBNLSH3lk1gEIR09hZ4L+mJQl4VqiVAvPK9VG9PYrWWuSQLt7xTbiA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxfmt/binding-darwin-x64@0.43.0': - resolution: {integrity: sha512-vWECzzCFkb0kK6jaHjbtC5sC3adiNWtqawFCxhpvsWlzVeKmv5bNvkB4nux+o4JKWTpHCM57NDK/MeXt44txmA==} + '@oxfmt/binding-darwin-x64@0.55.0': + resolution: {integrity: sha512-JaNoFCkF2CJdGgpPSMbuO9HVyXyoNGIhMHPvp6NYAjeVKw9XEYc0HcUWJLPQa3Q69WV5wMa9m5jPMJPtbLtcRg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxfmt/binding-freebsd-x64@0.43.0': - resolution: {integrity: sha512-rgz8JpkKiI/umOf7fl9gwKyQasC8bs5SYHy6g7e4SunfLBY3+8ATcD5caIg8KLGEtKFm5ujKaH8EfjcmnhzTLg==} + '@oxfmt/binding-freebsd-x64@0.55.0': + resolution: {integrity: sha512-DNbszhpg6S2MIzax5azdHFTTBIVkR5xr8yyRZuA4yoDAwOkzIp3tmldgKZM2+VlT+hJIG0xUksA+elISzMEAfA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxfmt/binding-linux-arm-gnueabihf@0.43.0': - resolution: {integrity: sha512-nWYnF3vIFzT4OM1qL/HSf1Yuj96aBuKWSaObXHSWliwAk2rcj7AWd6Lf7jowEBQMo4wCZVnueIGw/7C4u0KTBQ==} + '@oxfmt/binding-linux-arm-gnueabihf@0.55.0': + resolution: {integrity: sha512-2snoaoRfFFyGnbOcKUK36rREBYxe/Xgz3uHbiA5zbCB/s6R4DQj4mHqYAaWWhgizCUSDxV8cE9zAZ0XleNpKGw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-musleabihf@0.43.0': - resolution: {integrity: sha512-sFg+NWJbLfupYTF4WELHAPSnLPOn1jiDZ33Z1jfDnTaA+cC3iB35x0FMMZTFdFOz3icRIArncwCcemJFGXu6TQ==} + '@oxfmt/binding-linux-arm-musleabihf@0.55.0': + resolution: {integrity: sha512-q1aktHF/WRpSK81BX1dE/9vWrS2jGw1Nax2kb4DBLGAewubCLcoNyp4Zl/NSMgbv3vUS46Z33wIQkBVYOP3PYg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm64-gnu@0.43.0': - resolution: {integrity: sha512-MelWqv68tX6wZEILDrTc9yewiGXe7im62+5x0bNXlCYFOZdA+VnYiJfAihbROsZ5fm90p9C3haFrqjj43XnlAA==} + '@oxfmt/binding-linux-arm64-gnu@0.55.0': + resolution: {integrity: sha512-VD0y36aENezl/3tsclA/4G53Cc7iV+7Uoh7gz4yvcOTaEYBtJpQsE6PKDGTtUtOvGS4kv51ybfXY/nWZejO5IA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-arm64-musl@0.43.0': - resolution: {integrity: sha512-ROaWfYh+6BSJ1Arwy5ujijTlwnZetxDxzBpDc1oBR4d7rfrPBqzeyjd5WOudowzQUgyavl2wEpzn1hw3jWcqLA==} + '@oxfmt/binding-linux-arm64-musl@0.55.0': + resolution: {integrity: sha512-r8xlKJFcsRmn0H5jZrdORae6RX9jDBrZVvOoxF+bCQtampQJClv80aZEHsv+NsLsp2KCE5ql79O7DpPVzYWpXA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxfmt/binding-linux-ppc64-gnu@0.43.0': - resolution: {integrity: sha512-PJRs/uNxmFipJJ8+SyKHh7Y7VZIKQicqrrBzvfyM5CtKi8D7yZKTwUOZV3ffxmiC2e7l1SDJpkBEOyue5NAFsg==} + '@oxfmt/binding-linux-ppc64-gnu@0.55.0': + resolution: {integrity: sha512-GRKv/HXHcwIVld/WU61rF0g0R16hl5EJ+ScKdpjevT57lnLnagj/U2YUbXf2mT+2Pg1uCzWC+mvGicPV3CDdLQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-gnu@0.43.0': - resolution: {integrity: sha512-j6biGAgzIhj+EtHXlbNumvwG7XqOIdiU4KgIWRXAEj/iUbHKukKW8eXa4MIwpQwW1YkxovduKtzEAPnjlnAhVQ==} + '@oxfmt/binding-linux-riscv64-gnu@0.55.0': + resolution: {integrity: sha512-rdv57enTiPtpSYRMKfAiEbQb0Puw5t9N7isVinDoo5qeLDScro2gznmZqSgSWbVZRzLisTeCTW8Qwgw0bOHv3A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-musl@0.43.0': - resolution: {integrity: sha512-RYWxAcslKxvy7yri24Xm9cmD0RiANaiEPs007EFG6l9h1ChM69Q5SOzACaCoz4Z9dEplnhhneeBaTWMEdpgIbA==} + '@oxfmt/binding-linux-riscv64-musl@0.55.0': + resolution: {integrity: sha512-7v1nNrlD43VY6+sYQ6efYyb3lE6QY182304PD/768ZxTjOmFd/3dQa3u/nGBUAXYdGSWOQc5N3PnS0QzUXyEIA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxfmt/binding-linux-s390x-gnu@0.43.0': - resolution: {integrity: sha512-DT6Q8zfQQy3jxpezAsBACEHNUUixKSYTwdXeXojNHe4DQOoxjPdjr3Szu6BRNjxLykZM/xMNmp9ElOIyDppwtw==} + '@oxfmt/binding-linux-s390x-gnu@0.55.0': + resolution: {integrity: sha512-f4lJLUSPOgScjFl9LiflKCTocyNRwE25JmTMbN4XQdDjoZzEHjqf3wA3VESF1/csg7i8m7+EQLbrZyYDqe10UQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-gnu@0.43.0': - resolution: {integrity: sha512-R8Yk7iYcuZORXmCfFZClqbDxRZgZ9/HEidUuBNdoX8Ptx07cMePnMVJ/woB84lFIDjh2ROHVaOP40Ds3rBXFqg==} + '@oxfmt/binding-linux-x64-gnu@0.55.0': + resolution: {integrity: sha512-MihqiPziJNoWy4MqNSV+jVA1g+07iQDjZiR0vaCaDoPgFEiJpCMsxamktzLV07cEeQsSJ04vQaU4CzCQwIvtDA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-musl@0.43.0': - resolution: {integrity: sha512-F2YYqyvnQNvi320RWZNAvsaWEHwmW3k4OwNJ1hZxRKXupY63expbBaNp6jAgvYs7y/g546vuQnGHQuCBhslhLQ==} + '@oxfmt/binding-linux-x64-musl@0.55.0': + resolution: {integrity: sha512-Yqghym7KYAVjP9MmSrNZiDeerMuoejNjo0r3ox5H3GDKk8eAfl8VyJm9i+pWCLDCTnAbcTUMMN2ZKjUYXH1v3g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxfmt/binding-openharmony-arm64@0.43.0': - resolution: {integrity: sha512-OE6TdietLXV3F6c7pNIhx/9YC1/2YFwjU9DPc/fbjxIX19hNIaP1rS0cFjCGJlGX+cVJwIKWe8Mos+LdQ1yAJw==} + '@oxfmt/binding-openharmony-arm64@0.55.0': + resolution: {integrity: sha512-s5SDvVVSbyQl1V5UU3Yl12M+XLUQ3rl5SglNqgAA2K4PXUtQhyNSS00wivONPEnNo5W01rCou8WkDNyvI/RGHg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxfmt/binding-win32-arm64-msvc@0.43.0': - resolution: {integrity: sha512-0nWK6a7pGkbdoypfVicmV9k/N1FwjPZENoqhlTU+5HhZnAhpIO3za30nEE33u6l6tuy9OVfpdXUqxUgZ+4lbZw==} + '@oxfmt/binding-win32-arm64-msvc@0.55.0': + resolution: {integrity: sha512-7p9FB5R32tw2KyyNX3wpQrR2WHwEHvMEiBlGXxeTCaRMCVNx3UtFMAUbaQ/pRNWIrEUZmYhJ6tcUH52uPTRYjQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxfmt/binding-win32-ia32-msvc@0.43.0': - resolution: {integrity: sha512-9aokTR4Ft+tRdvgN/pKzSkVy2ksc4/dCpDm9L/xFrbIw0yhLtASLbvoG/5WOTUh/BRPPnfGTsWznEqv0dlOmhA==} + '@oxfmt/binding-win32-ia32-msvc@0.55.0': + resolution: {integrity: sha512-ZYqj3fDnOT1IaVGMP5kpmkQl4F3tQIm2ZyAxvqkJYmI0xgWWak4ss4XYwv3VDfM+TWXeC9K4uQ/wW5jm/5XABA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxfmt/binding-win32-x64-msvc@0.43.0': - resolution: {integrity: sha512-4bPgdQux2ZLWn3bf2TTXXMHcJB4lenmuxrLqygPmvCJ104Yqzj1UctxSRzR31TiJ4MLaG22RK8dUsVpJtrCz5g==} + '@oxfmt/binding-win32-x64-msvc@0.55.0': + resolution: {integrity: sha512-eEYT5tivGnGbPHuOHuQpi6CGLObhh0re/5jcNQHihD2GRYkTM85dyi5a19zjP8Q00t1uqAx+/QGLUGdHeqzWyg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@oxlint/binding-android-arm-eabi@1.59.0': - resolution: {integrity: sha512-etYDw/UaEv936AQUd/CRMBVd+e+XuuU6wC+VzOv1STvsTyZenLChepLWqLtnyTTp4YMlM22ypzogDDwqYxv5cg==} + '@oxlint/binding-android-arm-eabi@1.70.0': + resolution: {integrity: sha512-zFh0P4cswmRvw6nkyb89dr18rRanuaCPAsEXsFDoQY8WdaquI8Pt4NWFjaMJg6L23cy5NeN8J9cBnREbWzZhaw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxlint/binding-android-arm64@1.59.0': - resolution: {integrity: sha512-TgLc7XVLKH2a4h8j3vn1MDjfK33i9MY60f/bKhRGWyVzbk5LCZ4X01VZG7iHrMmi5vYbAp8//Ponigx03CLsdw==} + '@oxlint/binding-android-arm64@1.70.0': + resolution: {integrity: sha512-qI8o4HZjeGiBrWv+pJv4lH0Yi2Gl/JSp/EumBUApezJprIKa5PS4nU0lQsQngtky8k+SplQIOjv6hwu0SSxeyg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxlint/binding-darwin-arm64@1.59.0': - resolution: {integrity: sha512-DXyFPf5ZKldMLloRHx/B9fsxsiTQomaw7cmEW3YIJko2HgCh+GUhp9gGYwHrqlLJPsEe3dYj9JebjX92D3j3AA==} + '@oxlint/binding-darwin-arm64@1.70.0': + resolution: {integrity: sha512-8KjgVVHI5F9nVwHCRwwA78Ty7zNKP4Wd9OeN5PSv3iu/F/u1RVXoOCgLhWqust6HmwQG6xc8c+RCyaWENy24+w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxlint/binding-darwin-x64@1.59.0': - resolution: {integrity: sha512-LgvrsdgVLX1qWqIEmNsSmMXJhpAWdtUQ0M+oR0CySwi+9IHWyOGuIL8w8+u/kbZNMyZr4WUyYB5i0+D+AKgkLg==} + '@oxlint/binding-darwin-x64@1.70.0': + resolution: {integrity: sha512-WVydssv5PSUBXFJTdNBWlmGkbNmvPGaFt/2SUT/EZRB6bq6bEOHmMlbnupZD5jmlEvi9+mZJHi8TCw15lyfSfQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxlint/binding-freebsd-x64@1.59.0': - resolution: {integrity: sha512-bOJhqX/ny4hrFuTPlyk8foSRx/vLRpxJh0jOOKN2NWW6FScXHPAA5rQbrwdQPcgGB5V8Ua51RS03fke8ssBcug==} + '@oxlint/binding-freebsd-x64@1.70.0': + resolution: {integrity: sha512-hJucmUf8OlinHNb1R7fI4Fw6WsAstOz7i8nmkWQfiHoZXtbufNm+MxiDTIMk1ggh2Ro4vLzgQ+bKvRY54MZoRA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxlint/binding-linux-arm-gnueabihf@1.59.0': - resolution: {integrity: sha512-vVUXxYMF9trXCsz4m9H6U0IjehosVHxBzVgJUxly1uz4W1PdDyicaBnpC0KRXsHYretLVe+uS9pJy8iM57Kujw==} + '@oxlint/binding-linux-arm-gnueabihf@1.70.0': + resolution: {integrity: sha512-1BnS7wbCYDSXwWzJJ+mc3NURoha6m6m6RT5c6vgAY3oz7C3OVXP+S0awo2mRq97arrJkVvO3qRQfyAHL+76xtQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm-musleabihf@1.59.0': - resolution: {integrity: sha512-TULQW8YBPGRWg5yZpFPL54HLOnJ3/HiX6VenDPi6YfxB/jlItwSMFh3/hCeSNbh+DAMaE1Py0j5MOaivHkI/9Q==} + '@oxlint/binding-linux-arm-musleabihf@1.70.0': + resolution: {integrity: sha512-yKy/UdbR55+M2yEcuiV5DCNC/gdQAjr/GioUy50QwBzSrKm8ueWADqyRLS9Xk+qjNeCYGg6A8FvUBds56ttfqg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm64-gnu@1.59.0': - resolution: {integrity: sha512-Gt54Y4eqSgYJ90xipm24xeyaPV854706o/kiT8oZvUt3VDY7qqxdqyGqchMaujd87ib+/MXvnl9WkK8Cc1BExg==} + '@oxlint/binding-linux-arm64-gnu@1.70.0': + resolution: {integrity: sha512-0A5XJ4alvmqFUFP/4oYSyaO+qLto/HrKEWTSaegiVl+HOufFngK2BjYw9x4RbwBt/du5QG6l5q1zeWiJYYG5yg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-arm64-musl@1.59.0': - resolution: {integrity: sha512-3CtsKp7NFB3OfqQzbuAecrY7GIZeiv7AD+xutU4tefVQzlfmTI7/ygWLrvkzsDEjTlMq41rYHxgsn6Yh8tybmA==} + '@oxlint/binding-linux-arm64-musl@1.70.0': + resolution: {integrity: sha512-JiylyurlB0CLSedNtx1gzv3FvfWPF1h/2Y3BJszPLNt5XQFlBsH5ke0Jle3iJb3uqu5m2e7A/DwzpuCAHdiU+A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxlint/binding-linux-ppc64-gnu@1.59.0': - resolution: {integrity: sha512-K0diOpT3ncDmOfl9I1HuvpEsAuTxkts0VYwIv/w6Xiy9CdwyPBVX88Ga9l8VlGgMrwBMnSY4xIvVlVY/fkQk7Q==} + '@oxlint/binding-linux-ppc64-gnu@1.70.0': + resolution: {integrity: sha512-J8VPG7I3/HmgaU4u8pNU2kFx2+0U+vPLS1dXFxXOaR/2TQ0f8AC7DRz0SRGRI1bfphnX2hVYTTtLuhL4nYKL+Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-gnu@1.59.0': - resolution: {integrity: sha512-xAU7+QDU6kTJJ7mJLOGgo7oOjtAtkKyFZ0Yjdb5cEo3DiCCPFLvyr08rWiQh6evZ7RiUTf+o65NY/bqttzJiQQ==} + '@oxlint/binding-linux-riscv64-gnu@1.70.0': + resolution: {integrity: sha512-N2+4lV2KLN+oXTIIIwmWDhwkrnvqf5oX7Hw0zPjk+RuIVgiBQSOlJWF7uQoFx2siEYX0ZQ5cfSbEAHm+J3t7Wg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-musl@1.59.0': - resolution: {integrity: sha512-KUmZmKlTTyauOnvUNVxK7G40sSSx0+w5l1UhaGsC6KPpOYHenx2oqJTnabmpLJicok7IC+3Y6fXAUOMyexaeJQ==} + '@oxlint/binding-linux-riscv64-musl@1.70.0': + resolution: {integrity: sha512-1e2L7cFCvx9QDzq6NPP+0tABKb5z6nWHyddWTNKprEsjO9xNrAtPowuCGpjNXxkTdsMiZ4jc8YQ5SstZd4XK6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxlint/binding-linux-s390x-gnu@1.59.0': - resolution: {integrity: sha512-4usRxC8gS0PGdkHnRmwJt/4zrQNZyk6vL0trCxwZSsAKM+OxhB8nKiR+mhjdBbl8lbMh2gc3bZpNN/ik8c4c2A==} + '@oxlint/binding-linux-s390x-gnu@1.70.0': + resolution: {integrity: sha512-Kwu/l/8GcYibCWA9m9N5pRXMIKVSsL/YbgpLzYkqDhWTiqdRfnNJ/+nqIKRKQiFbHWsdlHEhzMwruJK+qcEruA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-gnu@1.59.0': - resolution: {integrity: sha512-s/rNE2gDmbwAOOP493xk2X7M8LZfI1LJFSSW1+yanz3vuQCFPiHkx4GY+O1HuLUDtkzGlhtMrIcxxzyYLv308w==} + '@oxlint/binding-linux-x64-gnu@1.70.0': + resolution: {integrity: sha512-tap04CsHYOl0nSAQJfPNIuBxqEPB2HnhQqwaOXLg1jnp2XfRo8Fa814dA4QC4zpvTWXCjAAaCY1W5LOORkEQuQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-musl@1.59.0': - resolution: {integrity: sha512-+yYj1udJa2UvvIUmEm0IcKgc0UlPMgz0nsSTvkPL2y6n0uU5LgIHSwVu4AHhrve6j9BpVSoRksnz8c9QcvITJA==} + '@oxlint/binding-linux-x64-musl@1.70.0': + resolution: {integrity: sha512-hzJa/WgvtJpbBD9rgfy0qe+MjbxOXNUT0bfR1S6EQQzfTtBFA9xg5q8KSwRrQ2QfSS+TaP4j+4mVPQrfNc6UNg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxlint/binding-openharmony-arm64@1.59.0': - resolution: {integrity: sha512-bUplUb48LYsB3hHlQXP2ZMOenpieWoOyppLAnnAhuPag3MGPnt+7caxE3w/Vl9wpQsTA3gzLntQi9rxWrs7Xqg==} + '@oxlint/binding-openharmony-arm64@1.70.0': + resolution: {integrity: sha512-xbsaNSNzVSnaJACCUYr1HQMyY/Q/Q1LkePmHG3UvZPvGCYGNxrsZp9OmtA6ick8xH47ltRRbRrPCM1YXYcyC+A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxlint/binding-win32-arm64-msvc@1.59.0': - resolution: {integrity: sha512-/HLsLuz42rWl7h7ePdmMTpHm2HIDmPtcEMYgm5BBEHiEiuNOrzMaUpd2z7UnNni5LGN9obJy2YoAYBLXQwazrA==} + '@oxlint/binding-win32-arm64-msvc@1.70.0': + resolution: {integrity: sha512-icAEsUI7JbW1TMRdEXV83mVAInhRVQYuuAlPpxdGwJ95chNdnCzjloRW8GglT0WvzOEZSio6fnYSk2DJ2Hv7LQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxlint/binding-win32-ia32-msvc@1.59.0': - resolution: {integrity: sha512-rUPy+JnanpPwV/aJCPnxAD1fW50+XPI0VkWr7f0vEbqcdsS8NpB24Rw6RsS7SdpFv8Dw+8ugCwao5nCFbqOUSg==} + '@oxlint/binding-win32-ia32-msvc@1.70.0': + resolution: {integrity: sha512-FHMSWbVsPVs/f+Jcl04ws4JJ2wUnauyTzlpxWRG/lSO/8GpX08Fo2gQZqdA6CrRFI+zvkxl+N/KwJGWfUwYVZA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxlint/binding-win32-x64-msvc@1.59.0': - resolution: {integrity: sha512-xkE7puteDS/vUyRngLXW0t8WgdWoS/tfxXjhP/P7SMqPDx+hs44SpssO3h3qmTqECYEuXBUPzcAw5257Ka+ofA==} + '@oxlint/binding-win32-x64-msvc@1.70.0': + resolution: {integrity: sha512-ptOlKwCz7n4AKs5VweMqG6DAg677FmKOK+vBkkL9DMNgFATIQ+upqUYBTOEwRQyRAx1ncGlPlXleV2hIcm3z4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@oxlint/plugins@1.70.0': + resolution: {integrity: sha512-Ut6i0mPdferb+8YJFPaVAg95Fcqduk6fL3PlA4CX58OaPJOi8vvTAcm6iO40Krd5FFMWP+hAhIxlYEhvgvYA6w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@rolldown/pluginutils@1.0.0-rc.2': resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} @@ -757,8 +927,8 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@ungap/structured-clone@1.3.1': + resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==} '@vitejs/plugin-vue@6.0.5': resolution: {integrity: sha512-bL3AxKuQySfk1iGcBsQnoRVexTPJq0Z/ixFVM8OhVJAP6ZXXXLtM7NFKWhLl30Kg7uTBqIaPXbh+nuQCuBDedg==} @@ -767,17 +937,17 @@ packages: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 vue: ^3.2.25 - '@vue/compiler-core@3.5.32': - resolution: {integrity: sha512-4x74Tbtqnda8s/NSD6e1Dr5p1c8HdMU5RWSjMSUzb8RTcUQqevDCxVAitcLBKT+ie3o0Dl9crc/S/opJM7qBGQ==} + '@vue/compiler-core@3.5.38': + resolution: {integrity: sha512-s99aGxWYig9ErHbct27KXEGhrBYlRI6c4MwAgXErOAbX9xiW37/uMa+XUDO69zLz83dng8UUZ70CTOJrLrYrEQ==} - '@vue/compiler-dom@3.5.32': - resolution: {integrity: sha512-ybHAu70NtiEI1fvAUz3oXZqkUYEe5J98GjMDpTGl5iHb0T15wQYLR4wE3h9xfuTNA+Cm2f4czfe8B4s+CCH57Q==} + '@vue/compiler-dom@3.5.38': + resolution: {integrity: sha512-JTqp25l8aFfJYF7/KmsXZjAxJz7T+SjmTJLoXVjHtc2BrSgSiW2n9Aem/cWq1OPe68A8JL06B3eVdhlP0H4TVw==} - '@vue/compiler-sfc@3.5.32': - resolution: {integrity: sha512-8UYUYo71cP/0YHMO814TRZlPuUUw3oifHuMR7Wp9SNoRSrxRQnhMLNlCeaODNn6kNTJsjFoQ/kqIj4qGvya4Xg==} + '@vue/compiler-sfc@3.5.38': + resolution: {integrity: sha512-DuA2GiZawSEW442iw/9+Fkol8hTgb4Ke5KkhmSry65QA7YuyMbIdy8p0XZRMvNwJdgRz307W8g1CSzdvS4nuNg==} - '@vue/compiler-ssr@3.5.32': - resolution: {integrity: sha512-Gp4gTs22T3DgRotZ8aA/6m2jMR+GMztvBXUBEUOYOcST+giyGWJ4WvFd7QLHBkzTxkfOt8IELKNdpzITLbA2rw==} + '@vue/compiler-ssr@3.5.38': + resolution: {integrity: sha512-7s+W5Gc42FGxZMcuwl8H5B29T8BJPMdBT7KHFE+BbAuZ/iTEdTtv7z2XiMjiaUUw4w3ZcCEdHs36RuYJ2VA7bA==} '@vue/devtools-api@8.1.1': resolution: {integrity: sha512-bsDMJ07b3GN1puVwJb/fyFnj/U2imyswK5UQVLZwVl7O05jDrt6BHxeG5XffmOOdasOj/bOmIjxJvGPxU7pcqw==} @@ -788,28 +958,33 @@ packages: '@vue/devtools-shared@8.1.1': resolution: {integrity: sha512-+h4ttmJYl/txpxHKaoZcaKpC+pvckgLzIDiSQlaQ7kKthKh8KuwoLW2D8hPJEnqKzXOvu15UHEoGyngAXCz0EQ==} - '@vue/reactivity@3.5.32': - resolution: {integrity: sha512-/ORasxSGvZ6MN5gc+uE364SxFdJ0+WqVG0CENXaGW58TOCdrAW76WWaplDtECeS1qphvtBZtR+3/o1g1zL4xPQ==} + '@vue/reactivity@3.5.38': + resolution: {integrity: sha512-pG6LV/NDNRbKizcUjFFLAfjaL8mcv4DmR9avNcUw2gDHBzZneuS2TWCmp633ynzxz9YYKNeEPK2I8Wraqy2HUQ==} - '@vue/runtime-core@3.5.32': - resolution: {integrity: sha512-pDrXCejn4UpFDFmMd27AcJEbHaLemaE5o4pbb7sLk79SRIhc6/t34BQA7SGNgYtbMnvbF/HHOftYBgFJtUoJUQ==} + '@vue/runtime-core@3.5.38': + resolution: {integrity: sha512-iyW8WVfF1CpCXxncZY5Ei6rSd6oZr5DgEom//fUjRBRl56AXPD+s9ATvukRt77ZFTuYlnVA1bxY+dJB94tWVYw==} - '@vue/runtime-dom@3.5.32': - resolution: {integrity: sha512-1CDVv7tv/IV13V8Nip1k/aaObVbWqRlVCVezTwx3K07p7Vxossp5JU1dcPNhJk3w347gonIUT9jQOGutyJrSVQ==} + '@vue/runtime-dom@3.5.38': + resolution: {integrity: sha512-apX2wt9sdfDshS+a2xueFZLVpt0GkRJZSoPmrW/SA4yzXTznhfcMVW59gr7h4YQeY0vJhdJkk2rsIDwgfFgC5A==} - '@vue/server-renderer@3.5.32': - resolution: {integrity: sha512-IOjm2+JQwRFS7W28HNuJeXQle9KdZbODFY7hFGVtnnghF51ta20EWAZJHX+zLGtsHhaU6uC9BGPV52KVpYryMQ==} + '@vue/server-renderer@3.5.38': + resolution: {integrity: sha512-vue8vbf2QlV4quHqzwmJy6dWfmRhP1J8l4wtZg60CL6VoKqcPY2oe7may3+1d9qfpedjK5PRLFqd5k3Isj9mUw==} peerDependencies: - vue: 3.5.32 + vue: 3.5.38 - '@vue/shared@3.5.32': - resolution: {integrity: sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==} + '@vue/shared@3.5.38': + resolution: {integrity: sha512-FTW0AFZNaK5/mOqvGBwVfUlNLU38TiQn4+DQgIFUnrBBJQ1crMJ82yeGQLV5jyKFsO8yRukpbuP7x+nRbH6aug==} '@vueuse/core@14.2.1': resolution: {integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==} peerDependencies: vue: ^3.5.0 + '@vueuse/core@14.3.0': + resolution: {integrity: sha512-aHfz47g0ZhMtTVHmIzMVpJy8ePhhOy68GY5bv110+5DVtZ+W7BsOx+m61UNQqfrWyPztIHIanWa3E2tib3NFIw==} + peerDependencies: + vue: ^3.5.0 + '@vueuse/integrations@14.2.1': resolution: {integrity: sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA==} peerDependencies: @@ -855,15 +1030,18 @@ packages: '@vueuse/metadata@14.2.1': resolution: {integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==} + '@vueuse/metadata@14.3.0': + resolution: {integrity: sha512-BwxmbAzwAVF50+MW57GXOUEV61nFBGnlBvrTqj49PqWJu3uw7hdu72ztXeZ33RdZtDY6kO+bfCAE1PCn88Tktw==} + '@vueuse/shared@14.2.1': resolution: {integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==} peerDependencies: vue: ^3.5.0 - acorn@8.16.0: - resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} - engines: {node: '>=0.4.0'} - hasBin: true + '@vueuse/shared@14.3.0': + resolution: {integrity: sha512-bZpge9eSXwa4ToSiqJ7j6KRwhAsneMFoSz3LMWKQDkqimm3D/tbFlrklrs/IOqC8tEcYmXQZJ6N0UrjhBirVCg==} + peerDependencies: + vue: ^3.5.0 before-after-hook@4.0.0: resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} @@ -886,9 +1064,6 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -903,14 +1078,19 @@ packages: resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} engines: {node: '>=0.12'} - es-toolkit@1.45.1: - resolution: {integrity: sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==} + es-toolkit@1.47.1: + resolution: {integrity: sha512-5RAqEwf4P4E17p+W75KLOWw/nOvKZzSQpxM32IpI2KZLaVonjTrZ0Ai5ghMaVI9eKC2p8eoQgcBdkEDgzFk6+Q==} esbuild@0.27.7: resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} engines: {node: '>=18'} hasBin: true + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} + hasBin: true + estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -926,8 +1106,8 @@ packages: picomatch: optional: true - feed@5.2.0: - resolution: {integrity: sha512-hgH6CCb+7+0c8PBlakI2KubG6R+Rb1MhpNcdvqUXZTBwBHf32piwY255diAkAmkGZ6AWlywOU88AkOgP9q8Rdw==} + feed@5.2.1: + resolution: {integrity: sha512-jTynzYPWs9ALjro0GW8j7sv9y7cJBeOdD4Y88kVqYy/eyusIX3g+499JiTDIlD9Ge/unebx57T4Uzo6vpYvMtA==} engines: {node: '>=20', pnpm: '>=10'} focus-trap@8.0.1: @@ -938,9 +1118,6 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - get-tsconfig@4.13.7: - resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} - hast-util-to-html@9.0.5: resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} @@ -953,6 +1130,9 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + json-with-bigint@3.5.8: resolution: {integrity: sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==} @@ -983,11 +1163,8 @@ packages: minisearch@7.2.0: resolution: {integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==} - mlly@1.8.2: - resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} - - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -997,27 +1174,35 @@ packages: oniguruma-to-es@4.3.5: resolution: {integrity: sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==} - oxfmt@0.43.0: - resolution: {integrity: sha512-KTYNG5ISfHSdmeZ25Xzb3qgz9EmQvkaGAxgBY/p38+ZiAet3uZeu7FnMwcSQJg152Qwl0wnYAxDc+Z/H6cvrwA==} + oxfmt@0.55.0: + resolution: {integrity: sha512-jSj2wCTakwgPMxkfiVZX0jf+nX+Nz6xlyAZjqNE0qXTFdCBPYlP6JAN+ODjmealw7DXBjOzYbdsqwBMAZnPZ6A==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + peerDependencies: + svelte: ^5.0.0 + vite-plus: '*' + peerDependenciesMeta: + svelte: + optional: true + vite-plus: + optional: true - oxlint@1.59.0: - resolution: {integrity: sha512-0xBLeGGjP4vD9pygRo8iuOkOzEU1MqOnfiOl7KYezL/QvWL8NUg6n03zXc7ZVqltiOpUxBk2zgHI3PnRIEdAvw==} + oxlint@1.70.0: + resolution: {integrity: sha512-D6JgHtzkhRwvEC+A0Nw5AEc5bk8x5i1pHzvZIEf/a0C4hOzmAACNGtkDGPyFaxxX3ZVGxCPeig3P3rMM8XU3/g==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - oxlint-tsgolint: '>=0.18.0' + oxlint-tsgolint: '>=0.22.1' + vite-plus: '*' peerDependenciesMeta: oxlint-tsgolint: optional: true + vite-plus: + optional: true package-manager-detector@1.6.0: resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - perfect-debounce@2.1.0: resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} @@ -1028,11 +1213,8 @@ packages: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - - postcss@8.5.8: - resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} property-information@7.1.0: @@ -1047,9 +1229,6 @@ packages: regex@6.1.0: resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - rollup@4.60.1: resolution: {integrity: sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -1059,8 +1238,8 @@ packages: resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + semver@7.8.4: + resolution: {integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==} engines: {node: '>=10'} hasBin: true @@ -1080,8 +1259,8 @@ packages: tabbable@6.4.0: resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} - tinyexec@1.1.1: - resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} engines: {node: '>=18'} tinyglobby@0.2.15: @@ -1095,19 +1274,16 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - tsx@4.21.0: - resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + tsx@4.22.4: + resolution: {integrity: sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==} engines: {node: '>=18.0.0'} hasBin: true - typescript@6.0.2: - resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} hasBin: true - ufo@1.6.3: - resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} - undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} @@ -1135,8 +1311,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@7.3.2: - resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==} + vite@7.3.5: + resolution: {integrity: sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -1175,8 +1351,8 @@ packages: yaml: optional: true - vitepress-plugin-group-icons@1.7.3: - resolution: {integrity: sha512-Nj2znOveQC7KH1CQ1k2WlVvEDAuymhumcUvD51ognVUv2yjrfAhOzL1VEESPzoJN0kWoRxXK+iu+OKNLe7unGQ==} + vitepress-plugin-group-icons@1.7.5: + resolution: {integrity: sha512-QzcroUuIiVKyXpmEiiHVbfRTQIy9Zbwxpk5JC/zavO8mavitwumz2RZWlwTchMCCHducYyPptkYvXvdnNUWkog==} peerDependencies: vite: '>=3' peerDependenciesMeta: @@ -1198,8 +1374,8 @@ packages: postcss: optional: true - vue@3.5.32: - resolution: {integrity: sha512-vM4z4Q9tTafVfMAK7IVzmxg34rSzTFMyIe0UUEijUCkn9+23lj0WRfA83dg7eQZIUlgOSGrkViIaCfqSAUXsMw==} + vue@3.5.38: + resolution: {integrity: sha512-vAMKHfImQlYSy0C+PBue4s3ERZ2xGKfgZg5GXAsLInq1dyh2H78ILVP5sK0KPFPVW4kv+OGCIvBEondcjpZp7A==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -1218,20 +1394,20 @@ snapshots: '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.6.0 - tinyexec: 1.1.1 + tinyexec: 1.2.4 - '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-string-parser@7.29.7': {} - '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-identifier@7.29.7': {} - '@babel/parser@7.29.2': + '@babel/parser@7.29.7': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.7 - '@babel/types@7.29.0': + '@babel/types@7.29.7': dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 '@docsearch/css@4.6.2': {} @@ -1242,81 +1418,165 @@ snapshots: '@esbuild/aix-ppc64@0.27.7': optional: true + '@esbuild/aix-ppc64@0.28.1': + optional: true + '@esbuild/android-arm64@0.27.7': optional: true + '@esbuild/android-arm64@0.28.1': + optional: true + '@esbuild/android-arm@0.27.7': optional: true + '@esbuild/android-arm@0.28.1': + optional: true + '@esbuild/android-x64@0.27.7': optional: true + '@esbuild/android-x64@0.28.1': + optional: true + '@esbuild/darwin-arm64@0.27.7': optional: true + '@esbuild/darwin-arm64@0.28.1': + optional: true + '@esbuild/darwin-x64@0.27.7': optional: true + '@esbuild/darwin-x64@0.28.1': + optional: true + '@esbuild/freebsd-arm64@0.27.7': optional: true + '@esbuild/freebsd-arm64@0.28.1': + optional: true + '@esbuild/freebsd-x64@0.27.7': optional: true + '@esbuild/freebsd-x64@0.28.1': + optional: true + '@esbuild/linux-arm64@0.27.7': optional: true + '@esbuild/linux-arm64@0.28.1': + optional: true + '@esbuild/linux-arm@0.27.7': optional: true + '@esbuild/linux-arm@0.28.1': + optional: true + '@esbuild/linux-ia32@0.27.7': optional: true + '@esbuild/linux-ia32@0.28.1': + optional: true + '@esbuild/linux-loong64@0.27.7': optional: true + '@esbuild/linux-loong64@0.28.1': + optional: true + '@esbuild/linux-mips64el@0.27.7': optional: true + '@esbuild/linux-mips64el@0.28.1': + optional: true + '@esbuild/linux-ppc64@0.27.7': optional: true + '@esbuild/linux-ppc64@0.28.1': + optional: true + '@esbuild/linux-riscv64@0.27.7': optional: true + '@esbuild/linux-riscv64@0.28.1': + optional: true + '@esbuild/linux-s390x@0.27.7': optional: true + '@esbuild/linux-s390x@0.28.1': + optional: true + '@esbuild/linux-x64@0.27.7': optional: true + '@esbuild/linux-x64@0.28.1': + optional: true + '@esbuild/netbsd-arm64@0.27.7': optional: true + '@esbuild/netbsd-arm64@0.28.1': + optional: true + '@esbuild/netbsd-x64@0.27.7': optional: true + '@esbuild/netbsd-x64@0.28.1': + optional: true + '@esbuild/openbsd-arm64@0.27.7': optional: true + '@esbuild/openbsd-arm64@0.28.1': + optional: true + '@esbuild/openbsd-x64@0.27.7': optional: true + '@esbuild/openbsd-x64@0.28.1': + optional: true + '@esbuild/openharmony-arm64@0.27.7': optional: true + '@esbuild/openharmony-arm64@0.28.1': + optional: true + '@esbuild/sunos-x64@0.27.7': optional: true + '@esbuild/sunos-x64@0.28.1': + optional: true + '@esbuild/win32-arm64@0.27.7': optional: true + '@esbuild/win32-arm64@0.28.1': + optional: true + '@esbuild/win32-ia32@0.27.7': optional: true + '@esbuild/win32-ia32@0.28.1': + optional: true + '@esbuild/win32-x64@0.27.7': optional: true + '@esbuild/win32-x64@0.28.1': + optional: true + + '@hapi/oxc-plugin@1.0.1(oxfmt@0.55.0)(oxlint@1.70.0)': + dependencies: + '@oxlint/plugins': 1.70.0 + oxfmt: 0.55.0 + oxlint: 1.70.0 + '@iconify-json/logos@1.2.11': dependencies: '@iconify/types': 2.0.0 @@ -1325,17 +1585,17 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/vscode-icons@1.2.45': + '@iconify-json/vscode-icons@1.2.58': dependencies: '@iconify/types': 2.0.0 '@iconify/types@2.0.0': {} - '@iconify/utils@3.1.0': + '@iconify/utils@3.1.3': dependencies: '@antfu/install-pkg': 1.1.0 '@iconify/types': 2.0.0 - mlly: 1.8.2 + import-meta-resolve: 4.2.0 '@jridgewell/sourcemap-codec@1.5.5': {} @@ -1408,120 +1668,122 @@ snapshots: dependencies: '@octokit/openapi-types': 27.0.0 - '@oxfmt/binding-android-arm-eabi@0.43.0': + '@oxfmt/binding-android-arm-eabi@0.55.0': optional: true - '@oxfmt/binding-android-arm64@0.43.0': + '@oxfmt/binding-android-arm64@0.55.0': optional: true - '@oxfmt/binding-darwin-arm64@0.43.0': + '@oxfmt/binding-darwin-arm64@0.55.0': optional: true - '@oxfmt/binding-darwin-x64@0.43.0': + '@oxfmt/binding-darwin-x64@0.55.0': optional: true - '@oxfmt/binding-freebsd-x64@0.43.0': + '@oxfmt/binding-freebsd-x64@0.55.0': optional: true - '@oxfmt/binding-linux-arm-gnueabihf@0.43.0': + '@oxfmt/binding-linux-arm-gnueabihf@0.55.0': optional: true - '@oxfmt/binding-linux-arm-musleabihf@0.43.0': + '@oxfmt/binding-linux-arm-musleabihf@0.55.0': optional: true - '@oxfmt/binding-linux-arm64-gnu@0.43.0': + '@oxfmt/binding-linux-arm64-gnu@0.55.0': optional: true - '@oxfmt/binding-linux-arm64-musl@0.43.0': + '@oxfmt/binding-linux-arm64-musl@0.55.0': optional: true - '@oxfmt/binding-linux-ppc64-gnu@0.43.0': + '@oxfmt/binding-linux-ppc64-gnu@0.55.0': optional: true - '@oxfmt/binding-linux-riscv64-gnu@0.43.0': + '@oxfmt/binding-linux-riscv64-gnu@0.55.0': optional: true - '@oxfmt/binding-linux-riscv64-musl@0.43.0': + '@oxfmt/binding-linux-riscv64-musl@0.55.0': optional: true - '@oxfmt/binding-linux-s390x-gnu@0.43.0': + '@oxfmt/binding-linux-s390x-gnu@0.55.0': optional: true - '@oxfmt/binding-linux-x64-gnu@0.43.0': + '@oxfmt/binding-linux-x64-gnu@0.55.0': optional: true - '@oxfmt/binding-linux-x64-musl@0.43.0': + '@oxfmt/binding-linux-x64-musl@0.55.0': optional: true - '@oxfmt/binding-openharmony-arm64@0.43.0': + '@oxfmt/binding-openharmony-arm64@0.55.0': optional: true - '@oxfmt/binding-win32-arm64-msvc@0.43.0': + '@oxfmt/binding-win32-arm64-msvc@0.55.0': optional: true - '@oxfmt/binding-win32-ia32-msvc@0.43.0': + '@oxfmt/binding-win32-ia32-msvc@0.55.0': optional: true - '@oxfmt/binding-win32-x64-msvc@0.43.0': + '@oxfmt/binding-win32-x64-msvc@0.55.0': optional: true - '@oxlint/binding-android-arm-eabi@1.59.0': + '@oxlint/binding-android-arm-eabi@1.70.0': optional: true - '@oxlint/binding-android-arm64@1.59.0': + '@oxlint/binding-android-arm64@1.70.0': optional: true - '@oxlint/binding-darwin-arm64@1.59.0': + '@oxlint/binding-darwin-arm64@1.70.0': optional: true - '@oxlint/binding-darwin-x64@1.59.0': + '@oxlint/binding-darwin-x64@1.70.0': optional: true - '@oxlint/binding-freebsd-x64@1.59.0': + '@oxlint/binding-freebsd-x64@1.70.0': optional: true - '@oxlint/binding-linux-arm-gnueabihf@1.59.0': + '@oxlint/binding-linux-arm-gnueabihf@1.70.0': optional: true - '@oxlint/binding-linux-arm-musleabihf@1.59.0': + '@oxlint/binding-linux-arm-musleabihf@1.70.0': optional: true - '@oxlint/binding-linux-arm64-gnu@1.59.0': + '@oxlint/binding-linux-arm64-gnu@1.70.0': optional: true - '@oxlint/binding-linux-arm64-musl@1.59.0': + '@oxlint/binding-linux-arm64-musl@1.70.0': optional: true - '@oxlint/binding-linux-ppc64-gnu@1.59.0': + '@oxlint/binding-linux-ppc64-gnu@1.70.0': optional: true - '@oxlint/binding-linux-riscv64-gnu@1.59.0': + '@oxlint/binding-linux-riscv64-gnu@1.70.0': optional: true - '@oxlint/binding-linux-riscv64-musl@1.59.0': + '@oxlint/binding-linux-riscv64-musl@1.70.0': optional: true - '@oxlint/binding-linux-s390x-gnu@1.59.0': + '@oxlint/binding-linux-s390x-gnu@1.70.0': optional: true - '@oxlint/binding-linux-x64-gnu@1.59.0': + '@oxlint/binding-linux-x64-gnu@1.70.0': optional: true - '@oxlint/binding-linux-x64-musl@1.59.0': + '@oxlint/binding-linux-x64-musl@1.70.0': optional: true - '@oxlint/binding-openharmony-arm64@1.59.0': + '@oxlint/binding-openharmony-arm64@1.70.0': optional: true - '@oxlint/binding-win32-arm64-msvc@1.59.0': + '@oxlint/binding-win32-arm64-msvc@1.70.0': optional: true - '@oxlint/binding-win32-ia32-msvc@1.59.0': + '@oxlint/binding-win32-ia32-msvc@1.70.0': optional: true - '@oxlint/binding-win32-x64-msvc@1.59.0': + '@oxlint/binding-win32-x64-msvc@1.70.0': optional: true + '@oxlint/plugins@1.70.0': {} + '@rolldown/pluginutils@1.0.0-rc.2': {} '@rollup/rollup-android-arm-eabi@4.60.1': @@ -1666,43 +1928,43 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@ungap/structured-clone@1.3.0': {} + '@ungap/structured-clone@1.3.1': {} - '@vitejs/plugin-vue@6.0.5(vite@7.3.2(@types/node@24.12.2)(tsx@4.21.0))(vue@3.5.32(typescript@6.0.2))': + '@vitejs/plugin-vue@6.0.5(vite@7.3.5(@types/node@24.12.2)(tsx@4.22.4))(vue@3.5.38(typescript@6.0.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 7.3.2(@types/node@24.12.2)(tsx@4.21.0) - vue: 3.5.32(typescript@6.0.2) + vite: 7.3.5(@types/node@24.12.2)(tsx@4.22.4) + vue: 3.5.38(typescript@6.0.3) - '@vue/compiler-core@3.5.32': + '@vue/compiler-core@3.5.38': dependencies: - '@babel/parser': 7.29.2 - '@vue/shared': 3.5.32 + '@babel/parser': 7.29.7 + '@vue/shared': 3.5.38 entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.32': + '@vue/compiler-dom@3.5.38': dependencies: - '@vue/compiler-core': 3.5.32 - '@vue/shared': 3.5.32 + '@vue/compiler-core': 3.5.38 + '@vue/shared': 3.5.38 - '@vue/compiler-sfc@3.5.32': + '@vue/compiler-sfc@3.5.38': dependencies: - '@babel/parser': 7.29.2 - '@vue/compiler-core': 3.5.32 - '@vue/compiler-dom': 3.5.32 - '@vue/compiler-ssr': 3.5.32 - '@vue/shared': 3.5.32 + '@babel/parser': 7.29.7 + '@vue/compiler-core': 3.5.38 + '@vue/compiler-dom': 3.5.38 + '@vue/compiler-ssr': 3.5.38 + '@vue/shared': 3.5.38 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.8 + postcss: 8.5.15 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.32': + '@vue/compiler-ssr@3.5.38': dependencies: - '@vue/compiler-dom': 3.5.32 - '@vue/shared': 3.5.32 + '@vue/compiler-dom': 3.5.38 + '@vue/shared': 3.5.38 '@vue/devtools-api@8.1.1': dependencies: @@ -1717,52 +1979,63 @@ snapshots: '@vue/devtools-shared@8.1.1': {} - '@vue/reactivity@3.5.32': + '@vue/reactivity@3.5.38': dependencies: - '@vue/shared': 3.5.32 + '@vue/shared': 3.5.38 - '@vue/runtime-core@3.5.32': + '@vue/runtime-core@3.5.38': dependencies: - '@vue/reactivity': 3.5.32 - '@vue/shared': 3.5.32 + '@vue/reactivity': 3.5.38 + '@vue/shared': 3.5.38 - '@vue/runtime-dom@3.5.32': + '@vue/runtime-dom@3.5.38': dependencies: - '@vue/reactivity': 3.5.32 - '@vue/runtime-core': 3.5.32 - '@vue/shared': 3.5.32 + '@vue/reactivity': 3.5.38 + '@vue/runtime-core': 3.5.38 + '@vue/shared': 3.5.38 csstype: 3.2.3 - '@vue/server-renderer@3.5.32(vue@3.5.32(typescript@6.0.2))': + '@vue/server-renderer@3.5.38(vue@3.5.38(typescript@6.0.3))': dependencies: - '@vue/compiler-ssr': 3.5.32 - '@vue/shared': 3.5.32 - vue: 3.5.32(typescript@6.0.2) + '@vue/compiler-ssr': 3.5.38 + '@vue/shared': 3.5.38 + vue: 3.5.38(typescript@6.0.3) - '@vue/shared@3.5.32': {} + '@vue/shared@3.5.38': {} - '@vueuse/core@14.2.1(vue@3.5.32(typescript@6.0.2))': + '@vueuse/core@14.2.1(vue@3.5.38(typescript@6.0.3))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 14.2.1 - '@vueuse/shared': 14.2.1(vue@3.5.32(typescript@6.0.2)) - vue: 3.5.32(typescript@6.0.2) + '@vueuse/shared': 14.2.1(vue@3.5.38(typescript@6.0.3)) + vue: 3.5.38(typescript@6.0.3) - '@vueuse/integrations@14.2.1(focus-trap@8.0.1)(vue@3.5.32(typescript@6.0.2))': + '@vueuse/core@14.3.0(vue@3.5.38(typescript@6.0.3))': dependencies: - '@vueuse/core': 14.2.1(vue@3.5.32(typescript@6.0.2)) - '@vueuse/shared': 14.2.1(vue@3.5.32(typescript@6.0.2)) - vue: 3.5.32(typescript@6.0.2) + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 14.3.0 + '@vueuse/shared': 14.3.0(vue@3.5.38(typescript@6.0.3)) + vue: 3.5.38(typescript@6.0.3) + + '@vueuse/integrations@14.2.1(focus-trap@8.0.1)(vue@3.5.38(typescript@6.0.3))': + dependencies: + '@vueuse/core': 14.2.1(vue@3.5.38(typescript@6.0.3)) + '@vueuse/shared': 14.2.1(vue@3.5.38(typescript@6.0.3)) + vue: 3.5.38(typescript@6.0.3) optionalDependencies: focus-trap: 8.0.1 '@vueuse/metadata@14.2.1': {} - '@vueuse/shared@14.2.1(vue@3.5.32(typescript@6.0.2))': + '@vueuse/metadata@14.3.0': {} + + '@vueuse/shared@14.2.1(vue@3.5.38(typescript@6.0.3))': dependencies: - vue: 3.5.32(typescript@6.0.2) + vue: 3.5.38(typescript@6.0.3) - acorn@8.16.0: {} + '@vueuse/shared@14.3.0(vue@3.5.38(typescript@6.0.3))': + dependencies: + vue: 3.5.38(typescript@6.0.3) before-after-hook@4.0.0: {} @@ -1778,8 +2051,6 @@ snapshots: comma-separated-tokens@2.0.3: {} - confbox@0.1.8: {} - csstype@3.2.3: {} dequal@2.0.3: {} @@ -1790,7 +2061,7 @@ snapshots: entities@7.0.1: {} - es-toolkit@1.45.1: {} + es-toolkit@1.47.1: {} esbuild@0.27.7: optionalDependencies: @@ -1821,6 +2092,35 @@ snapshots: '@esbuild/win32-ia32': 0.27.7 '@esbuild/win32-x64': 0.27.7 + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + estree-walker@2.0.2: {} fast-content-type-parse@3.0.0: {} @@ -1829,7 +2129,7 @@ snapshots: optionalDependencies: picomatch: 4.0.4 - feed@5.2.0: + feed@5.2.1: dependencies: xml-js: 1.6.11 @@ -1840,10 +2140,6 @@ snapshots: fsevents@2.3.3: optional: true - get-tsconfig@4.13.7: - dependencies: - resolve-pkg-maps: 1.0.0 - hast-util-to-html@9.0.5: dependencies: '@types/hast': 3.0.4 @@ -1866,6 +2162,8 @@ snapshots: html-void-elements@3.0.0: {} + import-meta-resolve@4.2.0: {} + json-with-bigint@3.5.8: {} magic-string@0.30.21: @@ -1878,7 +2176,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.0 + '@ungap/structured-clone': 1.3.1 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 @@ -1905,14 +2203,7 @@ snapshots: minisearch@7.2.0: {} - mlly@1.8.2: - dependencies: - acorn: 8.16.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.3 - - nanoid@3.3.11: {} + nanoid@3.3.12: {} oniguruma-parser@0.12.1: {} @@ -1922,71 +2213,63 @@ snapshots: regex: 6.1.0 regex-recursion: 6.0.2 - oxfmt@0.43.0: + oxfmt@0.55.0: dependencies: tinypool: 2.1.0 optionalDependencies: - '@oxfmt/binding-android-arm-eabi': 0.43.0 - '@oxfmt/binding-android-arm64': 0.43.0 - '@oxfmt/binding-darwin-arm64': 0.43.0 - '@oxfmt/binding-darwin-x64': 0.43.0 - '@oxfmt/binding-freebsd-x64': 0.43.0 - '@oxfmt/binding-linux-arm-gnueabihf': 0.43.0 - '@oxfmt/binding-linux-arm-musleabihf': 0.43.0 - '@oxfmt/binding-linux-arm64-gnu': 0.43.0 - '@oxfmt/binding-linux-arm64-musl': 0.43.0 - '@oxfmt/binding-linux-ppc64-gnu': 0.43.0 - '@oxfmt/binding-linux-riscv64-gnu': 0.43.0 - '@oxfmt/binding-linux-riscv64-musl': 0.43.0 - '@oxfmt/binding-linux-s390x-gnu': 0.43.0 - '@oxfmt/binding-linux-x64-gnu': 0.43.0 - '@oxfmt/binding-linux-x64-musl': 0.43.0 - '@oxfmt/binding-openharmony-arm64': 0.43.0 - '@oxfmt/binding-win32-arm64-msvc': 0.43.0 - '@oxfmt/binding-win32-ia32-msvc': 0.43.0 - '@oxfmt/binding-win32-x64-msvc': 0.43.0 - - oxlint@1.59.0: + '@oxfmt/binding-android-arm-eabi': 0.55.0 + '@oxfmt/binding-android-arm64': 0.55.0 + '@oxfmt/binding-darwin-arm64': 0.55.0 + '@oxfmt/binding-darwin-x64': 0.55.0 + '@oxfmt/binding-freebsd-x64': 0.55.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.55.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.55.0 + '@oxfmt/binding-linux-arm64-gnu': 0.55.0 + '@oxfmt/binding-linux-arm64-musl': 0.55.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.55.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.55.0 + '@oxfmt/binding-linux-riscv64-musl': 0.55.0 + '@oxfmt/binding-linux-s390x-gnu': 0.55.0 + '@oxfmt/binding-linux-x64-gnu': 0.55.0 + '@oxfmt/binding-linux-x64-musl': 0.55.0 + '@oxfmt/binding-openharmony-arm64': 0.55.0 + '@oxfmt/binding-win32-arm64-msvc': 0.55.0 + '@oxfmt/binding-win32-ia32-msvc': 0.55.0 + '@oxfmt/binding-win32-x64-msvc': 0.55.0 + + oxlint@1.70.0: optionalDependencies: - '@oxlint/binding-android-arm-eabi': 1.59.0 - '@oxlint/binding-android-arm64': 1.59.0 - '@oxlint/binding-darwin-arm64': 1.59.0 - '@oxlint/binding-darwin-x64': 1.59.0 - '@oxlint/binding-freebsd-x64': 1.59.0 - '@oxlint/binding-linux-arm-gnueabihf': 1.59.0 - '@oxlint/binding-linux-arm-musleabihf': 1.59.0 - '@oxlint/binding-linux-arm64-gnu': 1.59.0 - '@oxlint/binding-linux-arm64-musl': 1.59.0 - '@oxlint/binding-linux-ppc64-gnu': 1.59.0 - '@oxlint/binding-linux-riscv64-gnu': 1.59.0 - '@oxlint/binding-linux-riscv64-musl': 1.59.0 - '@oxlint/binding-linux-s390x-gnu': 1.59.0 - '@oxlint/binding-linux-x64-gnu': 1.59.0 - '@oxlint/binding-linux-x64-musl': 1.59.0 - '@oxlint/binding-openharmony-arm64': 1.59.0 - '@oxlint/binding-win32-arm64-msvc': 1.59.0 - '@oxlint/binding-win32-ia32-msvc': 1.59.0 - '@oxlint/binding-win32-x64-msvc': 1.59.0 + '@oxlint/binding-android-arm-eabi': 1.70.0 + '@oxlint/binding-android-arm64': 1.70.0 + '@oxlint/binding-darwin-arm64': 1.70.0 + '@oxlint/binding-darwin-x64': 1.70.0 + '@oxlint/binding-freebsd-x64': 1.70.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.70.0 + '@oxlint/binding-linux-arm-musleabihf': 1.70.0 + '@oxlint/binding-linux-arm64-gnu': 1.70.0 + '@oxlint/binding-linux-arm64-musl': 1.70.0 + '@oxlint/binding-linux-ppc64-gnu': 1.70.0 + '@oxlint/binding-linux-riscv64-gnu': 1.70.0 + '@oxlint/binding-linux-riscv64-musl': 1.70.0 + '@oxlint/binding-linux-s390x-gnu': 1.70.0 + '@oxlint/binding-linux-x64-gnu': 1.70.0 + '@oxlint/binding-linux-x64-musl': 1.70.0 + '@oxlint/binding-openharmony-arm64': 1.70.0 + '@oxlint/binding-win32-arm64-msvc': 1.70.0 + '@oxlint/binding-win32-ia32-msvc': 1.70.0 + '@oxlint/binding-win32-x64-msvc': 1.70.0 package-manager-detector@1.6.0: {} - pathe@2.0.3: {} - perfect-debounce@2.1.0: {} picocolors@1.1.1: {} picomatch@4.0.4: {} - pkg-types@1.3.1: - dependencies: - confbox: 0.1.8 - mlly: 1.8.2 - pathe: 2.0.3 - - postcss@8.5.8: + postcss@8.5.15: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.12 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -2002,8 +2285,6 @@ snapshots: dependencies: regex-utilities: 2.3.0 - resolve-pkg-maps@1.0.0: {} - rollup@4.60.1: dependencies: '@types/estree': 1.0.8 @@ -2037,7 +2318,7 @@ snapshots: sax@1.6.0: {} - semver@7.7.4: {} + semver@7.8.4: {} shiki@3.23.0: dependencies: @@ -2061,7 +2342,7 @@ snapshots: tabbable@6.4.0: {} - tinyexec@1.1.1: {} + tinyexec@1.2.4: {} tinyglobby@0.2.15: dependencies: @@ -2072,16 +2353,13 @@ snapshots: trim-lines@3.0.1: {} - tsx@4.21.0: + tsx@4.22.4: dependencies: - esbuild: 0.27.7 - get-tsconfig: 4.13.7 + esbuild: 0.28.1 optionalDependencies: fsevents: 2.3.3 - typescript@6.0.2: {} - - ufo@1.6.3: {} + typescript@6.0.3: {} undici-types@7.16.0: {} @@ -2120,28 +2398,28 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@7.3.2(@types/node@24.12.2)(tsx@4.21.0): + vite@7.3.5(@types/node@24.12.2)(tsx@4.22.4): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - postcss: 8.5.8 + postcss: 8.5.15 rollup: 4.60.1 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.12.2 fsevents: 2.3.3 - tsx: 4.21.0 + tsx: 4.22.4 - vitepress-plugin-group-icons@1.7.3(vite@7.3.2(@types/node@24.12.2)(tsx@4.21.0)): + vitepress-plugin-group-icons@1.7.5(vite@7.3.5(@types/node@24.12.2)(tsx@4.22.4)): dependencies: '@iconify-json/logos': 1.2.11 - '@iconify-json/vscode-icons': 1.2.45 - '@iconify/utils': 3.1.0 + '@iconify-json/vscode-icons': 1.2.58 + '@iconify/utils': 3.1.3 optionalDependencies: - vite: 7.3.2(@types/node@24.12.2)(tsx@4.21.0) + vite: 7.3.5(@types/node@24.12.2)(tsx@4.22.4) - vitepress@2.0.0-alpha.17(@types/node@24.12.2)(postcss@8.5.8)(tsx@4.21.0)(typescript@6.0.2): + vitepress@2.0.0-alpha.17(@types/node@24.12.2)(postcss@8.5.15)(tsx@4.22.4)(typescript@6.0.3): dependencies: '@docsearch/css': 4.6.2 '@docsearch/js': 4.6.2 @@ -2151,19 +2429,19 @@ snapshots: '@shikijs/transformers': 3.23.0 '@shikijs/types': 3.23.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 6.0.5(vite@7.3.2(@types/node@24.12.2)(tsx@4.21.0))(vue@3.5.32(typescript@6.0.2)) + '@vitejs/plugin-vue': 6.0.5(vite@7.3.5(@types/node@24.12.2)(tsx@4.22.4))(vue@3.5.38(typescript@6.0.3)) '@vue/devtools-api': 8.1.1 - '@vue/shared': 3.5.32 - '@vueuse/core': 14.2.1(vue@3.5.32(typescript@6.0.2)) - '@vueuse/integrations': 14.2.1(focus-trap@8.0.1)(vue@3.5.32(typescript@6.0.2)) + '@vue/shared': 3.5.38 + '@vueuse/core': 14.3.0(vue@3.5.38(typescript@6.0.3)) + '@vueuse/integrations': 14.2.1(focus-trap@8.0.1)(vue@3.5.38(typescript@6.0.3)) focus-trap: 8.0.1 mark.js: 8.11.1 minisearch: 7.2.0 shiki: 3.23.0 - vite: 7.3.2(@types/node@24.12.2)(tsx@4.21.0) - vue: 3.5.32(typescript@6.0.2) + vite: 7.3.5(@types/node@24.12.2)(tsx@4.22.4) + vue: 3.5.38(typescript@6.0.3) optionalDependencies: - postcss: 8.5.8 + postcss: 8.5.15 transitivePeerDependencies: - '@types/node' - async-validator @@ -2189,15 +2467,15 @@ snapshots: - universal-cookie - yaml - vue@3.5.32(typescript@6.0.2): + vue@3.5.38(typescript@6.0.3): dependencies: - '@vue/compiler-dom': 3.5.32 - '@vue/compiler-sfc': 3.5.32 - '@vue/runtime-dom': 3.5.32 - '@vue/server-renderer': 3.5.32(vue@3.5.32(typescript@6.0.2)) - '@vue/shared': 3.5.32 + '@vue/compiler-dom': 3.5.38 + '@vue/compiler-sfc': 3.5.38 + '@vue/runtime-dom': 3.5.38 + '@vue/server-renderer': 3.5.38(vue@3.5.38(typescript@6.0.3)) + '@vue/shared': 3.5.38 optionalDependencies: - typescript: 6.0.2 + typescript: 6.0.3 xml-js@1.6.11: dependencies: diff --git a/src/plugins.json b/src/plugins.json index 543c33b2..9637f8e6 100644 --- a/src/plugins.json +++ b/src/plugins.json @@ -1,966 +1,966 @@ [ - { - "name": "Authorization", - "anchor": "authorization", - "modules": [ - { - "name": "hacli", - "link": "https://github.com/antoniogiordano/hacli", - "description": "ACL support based on permissions hierarchy" - }, - { - "name": "hapi-acl-auth", - "link": "https://github.com/charlesread/hapi-acl-auth", - "description": "Authentication provider agnostic authorization plugin for hapi apps" - }, - { - "name": "hapi-authorization", - "link": "https://github.com/toymachiner62/hapi-authorization", - "description": "ACL Support for hapi apps" - }, - { - "name": "hapi-auth-ip-whitelist", - "link": "https://github.com/chamini2/hapi-auth-ip-whitelist", - "description": "IP whitelisting auth scheme" - }, - { - "name": "hapi-rbac", - "link": "https://github.com/franciscogouveia/hapi-rbac", - "description": "A Rule Based Access Control module for hapi" - } - ] - }, - { - "name": "Authentication", - "anchor": "authentication", - "modules": [ - { - "name": "basic", - "isHapi": true, - "github": "https://github.com/hapijs/basic", - "link": "https://hapi.dev/family/basic", - "description": "An HTTP Basic authentication scheme" - }, - { - "name": "bell", - "isHapi": true, - "github": "https://github.com/hapijs/bell", - "link": "https://hapi.dev/family/bell", - "description": "Third-party login plugin for hapi with built in Facebook, GitHub, Google, Instagram, LinkedIn, Twitter, Yahoo, Foursquare, VK, ArcGIS Online and Windows Live support" - }, - { - "name": "cookie", - "isHapi": true, - "github": "https://github.com/hapijs/cookie", - "link": "https://hapi.dev/family/cookie", - "description": "A cookie-based session authentication scheme" - }, - { - "name": "hapi-auth-api-key", - "github": "https://github.com/johnwatson484/hapi-auth-api-key", - "link": "https://github.com/johnwatson484/hapi-auth-api-key", - "description": "A Hapi plugin for API key authentication" - }, - { - "name": "hapi-auth-bearer-token", - "link": "https://github.com/johnbrett/hapi-auth-bearer-token", - "description": "A bearer token based authentication scheme" - }, - { - "name": "hapi-auth-jwt2", - "link": "https://www.npmjs.com/package/hapi-auth-jwt2", - "description": "Simplified JSON Web Token (JWT) authentication plugin" - }, - { - "name": "hapi-jsonwebtoken", - "link": "https://github.com/odorisioe/hapi-jsonwebtoken", - "description": "JsonWebToken implementation for Hapi.js v17+ with authentication plugin" - }, - { - "name": "hapi-auth-keycloak", - "link": "https://github.com/felixheck/hapi-auth-keycloak", - "description": "JSON Web Token based Authentication powered by Keycloak" - }, - { - "name": "hapi-now-auth", - "link": "https://github.com/puchesjr/hapi-now-auth", - "description": "A Hapi v17+ plugin for simplified JSON Web Token (JWT) and Bearer auth tokens" - }, - { - "name": "hapi-openid-connect", - "link": "https://github.com/gaaiatinc/hapi-openid-connect", - "description": "A Hapi plugin that implements the OpenID-Connect authorization flow" - }, - { - "name": "hapi-passport-saml", - "link": "https://github.com/molekilla/hapi-passport-saml", - "description": "A Hapi plugin that wraps passport-saml for SAML SSO" - }, - { - "name": "hapi-saml2", - "link": "https://github.com/toriihq/hapi-saml2", - "description": "A Hapi plugin that wraps node-saml for SAML SSO" - }, - { - "name": "jwt", - "isHapi": true, - "github": "https://github.com/hapijs/jwt", - "link": "https://hapi.dev/family/jwt", - "description": "JWT (JSON Web Token) Authentication." - } - ] - }, - { - "name": "Automation/Integrations", - "anchor": "automation", - "modules": [ - { - "name": "apitraffic-hapi", - "link": "https://github.com/apitraffic/apitraffic-hapi", - "description": "Seamlessly integrate with over 240 external systems" - } - ] - }, - { - "name": "Boilerplate", - "anchor": "boilerplate", - "modules": [ - { - "name": "hapi-mvc", - "link": "https://github.com/the-provost/hapi-mvc", - "description": "MVC structure and boilerplating for Hapi.js Projects" - } - ] - }, - { - "name": "Documentation", - "anchor": "documentation", - "modules": [ - { - "name": "hapi-ending", - "link": "https://github.com/desirable-objects/hapi-ending.git", - "description": "A simplified browsable api documentation generator" - }, - { - "name": "hapi-swagger", - "link": "https://github.com/glennjones/hapi-swagger", - "description": "A swagger documentation UI generator plugin for hapi" - }, - { - "name": "hapi-swaggered", - "link": "https://github.com/z0mt3c/hapi-swaggered", - "description": "A plugin to generate swagger v2.0 compliant specifications based on hapi routes and joi schemas" - }, - { - "name": "hapi-swaggered-ui", - "link": "https://github.com/z0mt3c/hapi-swaggered-ui", - "description": "A plugin to serve and configure swagger-ui" - }, - { - "name": "optic-hapi-middleware", - "github": "https://github.com/opticdev/optic-node/tree/main/frameworks/hapi", - "link": "https://www.npmjs.com/package/@useoptic/hapi-middleware", - "description": "Document API endpoints using Optic" - } - ] - }, - { - "name": "Encoding", - "anchor": "encoding", - "modules": [ - { - "name": "brok", - "link": "https://github.com/kanongil/brok", - "description": "Brotli encoder and decoder" - } - ] - }, - { - "name": "GraphQL", - "anchor": "graphql", - "modules": [ - { - "name": "hapi-plugin-graphiql", - "link": "https://github.com/rse/hapi-plugin-graphiql", - "description": "HAPI plugin for integrating GraphiQL, an interactive GraphQL user interface" - }, - { - "name": "graphi", - "link": "https://www.npmjs.com/package/graphi", - "github": "https://github.com/geek/graphi", - "description": "Simple to use hapi GraphQL server plugin" - } - ] - }, - { - "name": "Kubernetes", - "anchor": "kubernetes", - "modules": [ - { - "name": "hapi-on-kubernetes", - "link": "https://github.com/NextStepGuru/hapi-on-kubernetes", - "description": "A simple plugin design to connect the kubernetes probes to the lifecycles of Hapi" - } - ] - }, - { - "name": "Hypermedia", - "anchor": "hypermedia", - "modules": [ - { - "name": "boom", - "isHapi": true, - "github": "https://github.com/hapijs/boom", - "link": "https://hapi.dev/family/boom", - "description": "HTTP-friendly error objects" - }, - { - "name": "hapi-openapi", - "link": "https://github.com/krakenjs/hapi-openapi", - "description": "hapi plugin to build design-driven apis with OpenAPI (formerly swagger)." - }, - { - "name": "hapi-http-problem-details", - "link": "https://github.com/PDMLab/hapi-http-problem-details", - "description": "Create HTTP Problem Details (RFC7807) for hapi application errors" - }, - { - "name": "inert", - "isHapi": true, - "github": "https://github.com/hapijs/inert", - "link": "https://hapi.dev/family/inert", - "description": "Static file and directory handlers" - } - ] - }, - { - "name": "Localization/Internationalization", - "anchor": "localization", - "modules": [ - { - "name": "hapi-i18n", - "link": "https://github.com/codeva/hapi-i18n", - "description": "Translation module for hapi based on mashpie's i18n module" - }, - { - "name": "hapi-locale", - "link": "https://github.com/ozum/hapi-locale", - "description": "Configurable plugin to determine request language from URL, Cookie, Query and Header" - } - ] - }, - { - "name": "Logging/Metrics", - "anchor": "logging", - "modules": [ - { - "name": "apitally", - "link": "https://github.com/apitally/apitally-js", - "description": "Simple API monitoring and analytics with metrics, logs, and alerts" - }, - { - "name": "apitraffic-hapi", - "link": "https://github.com/apitraffic/apitraffic-hapi", - "description": "Collects API request/response data for monitoring and analytical purposes" - }, - { - "name": "blipp", - "link": "https://github.com/danielb2/blipp", - "description": "Displays the routes table at startup" - }, - { - "name": "hapi-statsd", - "link": "https://github.com/mac-/hapi-statsd", - "description": "Sends request round trip metrics to statsd" - }, - { - "name": "hapi-plugin-traffic", - "link": "https://github.com/rse/hapi-plugin-traffic", - "description": "Network traffic accounting" - }, - { - "name": "hapi-alive", - "link": "https://github.com/idosh/hapi-alive", - "description": "Health route for your hapi.js server" - }, - { - "name": "hapi-pino", - "link": "https://github.com/mcollina/hapi-pino", - "description": "Fast and simple JSON logger" - }, - { - "name": "hapijs-status-monitor", - "link": "https://github.com/ziyasal/hapijs-status-monitor", - "description": "Realtime Monitoring solution for Hapi.js apps, inspired by GitHub Status" - }, - { - "name": "laabr", - "link": "https://github.com/felixheck/laabr", - "description": "Well-formatted pino logger for hapi.js - inspired by morgan" - }, - { - "name": "hapi-k8s-health", - "link": "https://github.com/radenui/hapi-k8s-health", - "description": "Prometheus metrics and liveness / readiness probes" - }, - { - "name": "hapi-audit-rest", - "link": "https://github.com/denlap007/hapi-audit-rest", - "description": "Hapi.js plugin that generates audit logs for RESTful APIs" - } - ] - }, - { - "name": "Messaging", - "anchor": "messaging", - "modules": [ - { - "name": "@glidemq/hapi", - "link": "https://github.com/avifenesh/glidemq-hapi", - "description": "Queue management REST API and SSE events for glide-mq (Valkey/Redis Streams message queue)" - }, - { - "name": "hapi-plugin-websocket", - "link": "https://github.com/rse/hapi-plugin-websocket", - "description": "Seamless WebSocket integration by injecting WebSocket messages as HTTP request" - }, - { - "name": "multines", - "link": "https://github.com/mcollina/multines", - "description": "Support for multi-process publish/subscribe for nes" - }, - { - "name": "nes", - "isHapi": true, - "github": "https://github.com/hapijs/nes", - "link": "https://hapi.dev/family/nes", - "description": "WebSocket adapter plugin for hapi routes" - }, - { - "name": "susie", - "link": "https://github.com/mtharrison/susie", - "description": "Server-Sent Events for hapi with support for streaming events" - }, - { - "name": "hapi-wechat", - "link": "https://github.com/dhso/hapi-wechat", - "description": "Wechat plugin for hapi" - } - ] - }, - { - "name": "Security", - "anchor": "security", - "modules": [ - { - "name": "blankie", - "link": "https://github.com/nlf/blankie", - "description": "A plugin that makes Content-Security-Policy headers easy" - }, - { - "name": "crumb", - "isHapi": true, - "github": "https://github.com/hapijs/crumb", - "link": "https://hapi.dev/family/crumb", - "description": "CSRF crumb generation and validation for hapi" - }, - { - "name": "ralphi", - "link": "https://github.com/yonjah/ralphi", - "description": "Simple and minimal rate limiting and bruteforce protection" - }, - { - "name": "ratli", - "link": "https://github.com/johnwatson484/ratli", - "github": "https://github.com/johnwatson484/ratli", - "description": "Hapi.js rate limiting plugin" - } - ] - }, - { - "name": "Session", - "anchor": "session", - "modules": [ - { - "name": "hapi-server-session", - "link": "https://github.com/btmorex/hapi-server-session", - "description": "Simple server-side session support for hapi" - }, - { - "name": "yar", - "isHapi": true, - "github": "https://github.com/hapijs/yar", - "link": "https://hapi.dev/family/yar", - "description": "A hapi session plugin and cookie jar" - } - ] - }, - { - "name": "Templating", - "anchor": "templating", - "modules": [ - { - "name": "ndsk", - "link": "https://github.com/ndskstack/ndsk", - "description": "React framework developed based on hapi" - }, - { - "name": "hapi-react-views", - "link": "https://github.com/jedireza/hapi-react-views", - "description": "A hapi view engine for React components" - }, - { - "name": "vision", - "isHapi": true, - "github": "https://github.com/hapijs/vision", - "link": "https://hapi.dev/family/vision", - "description": "Templates rendering support" - } - ] - }, - { - "name": "Testing", - "anchor": "testing", - "modules": [ - { - "name": "lab", - "isHapi": true, - "github": "https://github.com/hapijs/lab", - "link": "https://hapi.dev/family/lab", - "description": "A simple testing utility with code coverage analysis" - }, - { - "name": "shot", - "isHapi": true, - "github": "https://github.com/hapijs/shot", - "link": "https://hapi.dev/family/shot", - "description": "Injects a fake HTTP request/response into your node server logic" - } - ] - }, - { - "name": "Utility", - "anchor": "utility", - "modules": [ - { - "name": "admin-bro-hapijs", - "link": "https://github.com/SoftwareBrothers/admin-bro-hapijs", - "description": "AdminBro - Admin Panel integrated into your hapijs routes" - }, - { - "name": "akaya", - "link": "https://github.com/felixheck/akaya", - "description": "Generate URIs fast based on named hapi routes their parameters" - }, - { - "name": "apiv", - "github": "https://github.com/johnwatson484/apiv", - "link": "https://github.com/johnwatson484/apiv", - "description": "A Hapi.js plugin that automatically adds version prefixes to all your API routes, making it easy to version your API endpoints." - }, - { - "name": "bissle", - "link": "https://github.com/felixheck/bissle", - "description": "Minimalist HALicious pagination reply interface for HapiJS" - }, - { - "name": "configue", - "link": "https://github.com/AdrieanKhisbe/configue", - "description": "Config plugin for Hapi" - }, - { - "name": "cron", - "link": "https://github.com/antonsamper/hapi-cron", - "description": "Cron jobs for internal hapi.js routes" - }, - { - "name": "cron-cluster", - "link": "https://github.com/Meg4mi/hapi-cron-cluster", - "description": "Cron jobs for internal hapi.js routes with leader election (mongodb or redis) - cluster mode" - }, - { - "name": "disinfect", - "link": "https://github.com/genediazjr/disinfect", - "description": "Request query, payload, and params sanitization" - }, - { - "name": "errorh", - "link": "https://github.com/genediazjr/errorh", - "description": "Custom error pages" - }, - { - "name": "hapi-scaffold", - "link": "https://github.com/jeffsouza/hapi-scaffold", - "description": "Code generation for the hapijs framework" - }, - { - "name": "hapi-api-version", - "link": "https://github.com/p-meier/hapi-api-version", - "description": "An API versioning plugin for hapi." - }, - { - "name": "hapi-auto-route", - "link": "https://github.com/hsitraka/hapi-auto-route", - "description": "Automatically load routes from directory" - }, - { - "name": "@ar4mirez/hapi-aws", - "link": "https://github.com/ar4mirez/hapi-aws", - "description": "AWS SDK v3 plugin for HapiJS — instantiate and expose AWS service clients via server and request decorators." - }, - { - "name": "hapi-bookshelf-serializer", - "link": "https://github.com/lob/hapi-bookshelf-serializer", - "description": "Serialize Bookshelf.js models sent through Hapi reply" - }, - { - "name": "hapi-boom-decorators", - "link": "https://github.com/brainsiq/hapi-boom-decorators", - "description": "Exposes boom errors through the hapi reply interface" - }, - { - "name": "hapi-ecma-decorators", - "link": "https://github.com/mehl/hapi-ecma-decorators", - "description": "New Decorators for hapi routes following ECMA/TC39 Proposal Stage 3" - }, - { - "name": "hapi-decorators", - "link": "https://github.com/knownasilya/hapi-decorators", - "description": "Decorators for HapiJS routes" - }, - { - "name": "hapi-dev-errors", - "link": "https://github.com/fs-opensource/hapi-dev-errors", - "description": "Get better error details during development and skip the command line round trip to catch the issue" - }, - { - "name": "hapi-error", - "link": "https://www.npmjs.com/package/hapi-error", - "description": "Custom error handling with ability to pass an object and render a custom error template or redirect to a specific url on error." - }, - { - "name": "hapi-gate", - "link": "https://github.com/captainjackrana/hapi-gate", - "description": "Easily handle http to https and www/non-www redirections" - }, - { - "name": "hapi-geo-locate", - "link": "https://github.com/fs-opensource/hapi-geo-locate", - "description": "Geo locate requests by IP and provide the user’s location in your route handlers" - }, - { - "name": "hapi-level-db", - "link": "https://github.com/maxnachlinger/hapi-level-db", - "description": "HapiJS / LevelDB integration" - }, - { - "name": "hapi-maxmind-web", - "link": "https://github.com/midnightcodr/hapi-maxmind-web", - "description": "Hapi.js plugin for MaxMind GeoIP2 Web Service" - }, - { - "name": "hapi-mongo-models", - "link": "https://github.com/jedireza/hapi-mongo-models", - "description": "MongoDB object models for hapi applications" - }, - { - "name": "hapi-mongodb", - "link": "https://github.com/Marsup/hapi-mongodb", - "description": "A simple Hapi MongoDB connection plugin, accessing one or several connections pools through server or request properties" - }, - { - "name": "hapi-mongoose", - "link": "https://github.com/asilluron/hapi-mongoose", - "description": "A lightweight mongoose connection and configuration plugin for Hapi 9+" - }, - { - "name": "@watchup/hapi-mongoose", - "link": "https://github.com/watchup/hapi-mongoose", - "description": "Hapi.js plugin that maps mongoose models to routes" - }, - { - "name": "hapi-multi-mongo", - "link": "https://github.com/metoikos/hapi-multi-mongo", - "description": "Hapi mongodb connection plugin, especially for multiple connections" - }, - { - "name": "hapi-mysql2", - "link": "https://github.com/midnightcodr/hapi-mysql2", - "description": "Another mysql plugin for Hapijs that supports multiple connections, inspired by Marsup/hapi-mongodb" - }, - { - "name": "hapi-postgres", - "link": "https://github.com/liviaerxin/hapi-postgres", - "description": "Hapi postgres connection plugin, supports both client and pool mode, inspired by Marsup/hapi-mongodb" - }, - { - "name": "hapi-named-routes", - "link": "https://github.com/poeticninja/hapi-named-routes", - "description": "Add named routes to your view templates" - }, - { - "name": "hapio", - "link": "https://github.com/caligone/hapio", - "description": "A simple bridge plugin between HapiJS and SocketIO" - }, - { - "name": "@ar4mirez/hapi-octopus", - "link": "https://github.com/ar4mirez/hapi-octopus", - "description": "A multi-purpose plugin that allows you to autoload methods, handlers, routes and decorators using a simple signature convention." - }, - { - "name": "hapi-oracledb", - "link": "https://github.com/midnightcodr/hapi-oracledb", - "description": "Oracledb plugin for hapijs." - }, - { - "name": "hapi-pagination", - "link": "https://github.com/fknop/hapi-pagination", - "description": "A simple / customizable pagination plugin for HapiJS" - }, - { - "name": "hapi-plugin-co", - "link": "https://github.com/rse/hapi-plugin-co", - "description": "Co-routine based route handlers for asynchronous processing" - }, - { - "name": "hapi-plugin-header", - "link": "https://github.com/rse/hapi-plugin-header", - "description": "Always send one or more custom HTTP headers, independent of the current route" - }, - { - "name": "@ar4mirez/hapi-pres", - "link": "https://github.com/ar4mirez/hapi-pres", - "description": "Autoload pre-requirements for HapiJS routes from a directory." - }, - { - "name": "hapi-pulse", - "link": "https://github.com/fs-opensource/hapi-pulse", - "description": "Gracefully stop the hapi server on SIGINT (for graceful PM2 reloads)" - }, - { - "name": "hapi-rate-limitor", - "link": "https://github.com/fs-opensource/hapi-rate-limitor", - "description": "Easy to use rate limiting to prevent brute-force attacks" - }, - { - "name": "hapi-redis2", - "link": "https://github.com/midnightcodr/hapi-redis2", - "description": "A redis plugin for Hapijs that supports multiple connections, inspired by Marsup/hapi-mongodb" - }, - { - "name": "hapi-request-user", - "link": "https://github.com/fs-opensource/hapi-request-user", - "description": "A hapi plugin that shortcuts “request.auth.credentials” to “request.user”" - }, - { - "name": "hapi-response-time", - "link": "https://github.com/pankajpatel/hapi-response-time", - "description": "A Hapi plugin for adding `x-response-time` header to responses" - }, - { - "name": "hapi-router", - "link": "https://github.com/bsiddiqui/hapi-router", - "description": "A plugin to automatically load your routes" - }, - { - "name": "@ar4mirez/hapi-safe-route", - "link": "https://github.com/ar4mirez/hapi-safe-route", - "description": "Register routes in a safer way, avoiding server crash on duplicate routes while running or at startup time." - }, - { - "name": "hapi-sanitize-payload", - "link": "https://github.com/lob/hapi-sanitize-payload", - "description": "Hapi plugin to sanitize the request payload" - }, - { - "name": "hapi-sequelizejs", - "link": "https://github.com/valtlfelipe/hapi-sequelizejs", - "description": "A Hapi plugin for Sequelize ORM" - }, - { - "name": "hoek", - "isHapi": true, - "github": "https://github.com/hapijs/hoek", - "link": "https://hapi.dev/family/hoek", - "description": "General purpose node utilities" - }, - { - "name": "mrhorse", - "link": "https://github.com/mark-bradshaw/mrhorse", - "description": "Plugin for adding pre-handlers and post-handlers to routes" - }, - { - "name": "patova", - "link": "https://github.com/dschenkelman/patova", - "description": "A limitd plugin for hapi, useful for rate-limiting/throttling" - }, - { - "name": "rate-limiter-flexible", - "link": "https://github.com/animir/node-rate-limiter-flexible", - "description": "Mature and flexible rate limiter, DDoS and bruteforce protection at any scale in process Memory, Cluster or PM2, Redis, Memcached, MongoDb, etc. Block key for some duration, enable Leaky Bucket analogy, manage failover with insurance options, configure smart key blocking in memory and many others." - }, - { - "name": "recourier", - "link": "https://github.com/ruiquelhas/recourier", - "description": "Request lifecycle property sealing" - }, - { - "name": "rest-hapi", - "link": "https://github.com/JKHeadley/rest-hapi", - "description": "A RESTful API generator for hapi" - }, - { - "name": "scooter", - "isHapi": true, - "github": "https://github.com/hapijs/scooter", - "link": "https://hapi.dev/family/scooter", - "description": "User-agent information plugin" - }, - { - "name": "spazy", - "link": "https://github.com/AlexanderElias/spazy", - "description": "Static file and single page application (spa) plugin for hapi" - }, - { - "name": "therealyou", - "link": "https://github.com/briandela/therealyou", - "description": "A plugin for setting the request.info.remoteAddress and request.info.remotePort based on the X-Forwarded-For and X-Forwarded-Port headers" - }, - { - "name": "wozu", - "link": "https://github.com/felixheck/wozu", - "description": "Server decorator to list all defined hapi.js routes" - }, - { - "name": "wurst", - "link": "https://github.com/felixheck/wurst", - "description": "Directory based autoloader for routes" - }, - { - "name": "Wildcard API", - "link": "https://github.com/reframejs/wildcard-api", - "description": "RPC implementation for browser ⇔ Node.js communication." - }, - { - "name": "topo", - "isHapi": true, - "link": "https://hapi.dev/family/topo", - "description": "Topological sorting with grouping support" - }, - { - "name": "wreck", - "isHapi": true, - "github": "https://github.com/hapijs/wreck", - "link": "https://hapi.dev/family/wreck", - "description": "HTTP Client utilities" - }, - { - "name": "glue", - "isHapi": true, - "github": "https://github.com/hapijs/glue", - "link": "https://hapi.dev/family/glue", - "description": "Server composer" - }, - { - "name": "h2o2", - "isHapi": true, - "github": "https://github.com/hapijs/h2o2", - "link": "https://hapi.dev/family/h2o2", - "description": "Proxy handler" - }, - { - "name": "hapi-graceful-pm2", - "link": "https://github.com/roylines/hapi-graceful-pm2", - "description": "Handle true zero downtime reloads when issuing a pm2 gracefulReload command" - }, - { - "name": "podium-hapi-layout", - "link": "https://github.com/podium-lib/hapi-layout", - "description": "Hapi plugin for writing Micro Frontend Layout servers with Podium - https://podium-lib.io" - }, - { - "name": "podium-hapi-podlet", - "link": "https://github.com/podium-lib/hapi-podlet", - "description": "Hapi plugin for writing Micro Frontend Fragment servers with Podium - https://podium-lib.io" - }, - { - "name": "qs", - "isHapi": true, - "link": "https://github.com/hapijs/qs", - "description": "A querystring parser with support for arrays and objects" - }, - { - "name": "tarm", - "link": "https://github.com/kanongil/tarm", - "description": "Add tarmount handler for serving tar file contents" - }, - { - "name": "hapi-orientdb", - "link": "https://github.com/petervavro/hapi-orientdb", - "description": "OrientDB plugin for hapijs." - } - ] - }, - { - "name": "Validation", - "anchor": "validation", - "modules": [ - { - "name": "blaine", - "link": "https://github.com/ruiquelhas/blaine", - "description": "Server-level file signature validation for raw request payloads in memory" - }, - { - "name": "burton", - "link": "https://github.com/ruiquelhas/burton", - "description": "Server-level file signature validation for raw stream request payloads" - }, - { - "name": "copperfield", - "link": "https://github.com/ruiquelhas/copperfield", - "description": "Server-level file signature validation for parsed request payloads in memory" - }, - { - "name": "coutts", - "link": "https://github.com/ruiquelhas/coutts", - "description": "Server-level file signature validation for raw temporary file request payloads" - }, - { - "name": "fischbacher", - "link": "https://github.com/ruiquelhas/fischbacher", - "description": "Server-level file signature validation for parsed temporary file request payloads" - }, - { - "name": "hapi-plugin-ducky", - "link": "https://github.com/rse/hapi-plugin-ducky", - "description": "Validating payloads with the DuckyJS JSON validation language" - }, - { - "name": "henning", - "link": "https://github.com/ruiquelhas/henning", - "description": "Server-level file signature validation for parsed request payload file streams" - }, - { - "name": "houdin", - "link": "https://github.com/ruiquelhas/houdin", - "description": "Route-level file signature validation for request payloads in memory" - }, - { - "name": "joi", - "link": "https://joi.dev", - "description": "Object schema description language and validator for JavaScript objects" - }, - { - "name": "lafayette", - "link": "https://github.com/ruiquelhas/lafayette", - "description": "Route-level file signature validation for temporary file request payloads" - }, - { - "name": "supervizor", - "link": "https://github.com/ruiquelhas/supervizor", - "description": "Server-level request payload validation" - }, - { - "name": "thurston", - "link": "https://github.com/ruiquelhas/thurston", - "description": "Route-level file signature validation for request payload file streams" - } - ] - }, - { - "name": "hapi pal", - "anchor": "hapipal", - "modules": [ - { - "name": "ahem", - "link": "https://hapipal.com/docs/ahem", - "github": "https://github.com/hapipal/ahem", - "description": "hapi plugins as libraries" - }, - { - "name": "avocat", - "link": "https://hapipal.com/docs/avocat", - "github": "https://github.com/hapipal/avocat", - "description": "Convert objection DB errors to boom HTTP errors" - }, - { - "name": "boilerplate", - "link": "https://hapipal.com/docs/boilerplate", - "github": "https://github.com/hapipal/boilerplate", - "description": "A friendly, proven starting place for your next hapi plugin or deployment" - }, - { - "name": "confidence", - "link": "https://github.com/hapipal/confidence", - "description": "A configuration document format, an API, and a foundation for A/B testing" - }, - { - "name": "haute-couture", - "link": "https://hapipal.com/docs/haute-couture", - "github": "https://github.com/hapipal/haute-couture", - "description": "File-based hapi plugin composer" - }, - { - "name": "hecks", - "link": "https://hapipal.com/docs/hecks", - "github": "https://github.com/hapipal/hecks", - "description": "Mount your express app onto your hapi server, aw heck!" - }, - { - "name": "hodgepodge", - "link": "https://hapipal.com/docs/hodgepodge", - "github": "https://github.com/hapipal/hodgepodge", - "description": "A plugin dependency resolver" - }, - { - "name": "hpal", - "link": "https://hapipal.com/docs/hpal", - "github": "https://github.com/hapipal/hpal", - "description": "The hapi pal CLI, for searching hapi docs, scaffolding projects, and running custom server commands" - }, - { - "name": "hpal-debug", - "link": "https://hapipal.com/docs/hpal-debug", - "github": "https://github.com/hapipal/hpal-debug", - "description": "hapijs debugging tools for the hapi pal CLI" - }, - { - "name": "lalalambda", - "link": "https://hapipal.com/docs/lalalambda", - "github": "https://github.com/hapipal/lalalambda", - "description": "Serverless functions powered by hapijs" - }, - { - "name": "schmervice", - "link": "https://hapipal.com/docs/schmervice", - "github": "https://github.com/hapipal/schmervice", - "description": "A service layer for hapi" - }, - { - "name": "schwifty", - "link": "https://hapipal.com/docs/schwifty", - "github": "https://github.com/hapipal/schwifty", - "description": "A model layer for hapi integrating Objection ORM" - }, - { - "name": "tandy", - "link": "https://hapipal.com/docs/tandy", - "github": "https://github.com/hapipal/tandy", - "description": "Auto-generated, RESTful, CRUDdy route handlers for Objection models" - }, - { - "name": "toys", - "link": "https://hapipal.com/docs/toys", - "github": "https://github.com/hapipal/toys", - "description": "The hapi utility toy chest" - }, - { - "name": "underdog", - "link": "https://hapipal.com/docs/underdog", - "github": "https://github.com/hapipal/underdog", - "description": "HTTP/2 server-push for hapi" - } - ] - } + { + "name": "Authorization", + "anchor": "authorization", + "modules": [ + { + "name": "hacli", + "link": "https://github.com/antoniogiordano/hacli", + "description": "ACL support based on permissions hierarchy" + }, + { + "name": "hapi-acl-auth", + "link": "https://github.com/charlesread/hapi-acl-auth", + "description": "Authentication provider agnostic authorization plugin for hapi apps" + }, + { + "name": "hapi-authorization", + "link": "https://github.com/toymachiner62/hapi-authorization", + "description": "ACL Support for hapi apps" + }, + { + "name": "hapi-auth-ip-whitelist", + "link": "https://github.com/chamini2/hapi-auth-ip-whitelist", + "description": "IP whitelisting auth scheme" + }, + { + "name": "hapi-rbac", + "link": "https://github.com/franciscogouveia/hapi-rbac", + "description": "A Rule Based Access Control module for hapi" + } + ] + }, + { + "name": "Authentication", + "anchor": "authentication", + "modules": [ + { + "name": "basic", + "isHapi": true, + "github": "https://github.com/hapijs/basic", + "link": "https://hapi.dev/family/basic", + "description": "An HTTP Basic authentication scheme" + }, + { + "name": "bell", + "isHapi": true, + "github": "https://github.com/hapijs/bell", + "link": "https://hapi.dev/family/bell", + "description": "Third-party login plugin for hapi with built in Facebook, GitHub, Google, Instagram, LinkedIn, Twitter, Yahoo, Foursquare, VK, ArcGIS Online and Windows Live support" + }, + { + "name": "cookie", + "isHapi": true, + "github": "https://github.com/hapijs/cookie", + "link": "https://hapi.dev/family/cookie", + "description": "A cookie-based session authentication scheme" + }, + { + "name": "hapi-auth-api-key", + "github": "https://github.com/johnwatson484/hapi-auth-api-key", + "link": "https://github.com/johnwatson484/hapi-auth-api-key", + "description": "A Hapi plugin for API key authentication" + }, + { + "name": "hapi-auth-bearer-token", + "link": "https://github.com/johnbrett/hapi-auth-bearer-token", + "description": "A bearer token based authentication scheme" + }, + { + "name": "hapi-auth-jwt2", + "link": "https://www.npmjs.com/package/hapi-auth-jwt2", + "description": "Simplified JSON Web Token (JWT) authentication plugin" + }, + { + "name": "hapi-jsonwebtoken", + "link": "https://github.com/odorisioe/hapi-jsonwebtoken", + "description": "JsonWebToken implementation for Hapi.js v17+ with authentication plugin" + }, + { + "name": "hapi-auth-keycloak", + "link": "https://github.com/felixheck/hapi-auth-keycloak", + "description": "JSON Web Token based Authentication powered by Keycloak" + }, + { + "name": "hapi-now-auth", + "link": "https://github.com/puchesjr/hapi-now-auth", + "description": "A Hapi v17+ plugin for simplified JSON Web Token (JWT) and Bearer auth tokens" + }, + { + "name": "hapi-openid-connect", + "link": "https://github.com/gaaiatinc/hapi-openid-connect", + "description": "A Hapi plugin that implements the OpenID-Connect authorization flow" + }, + { + "name": "hapi-passport-saml", + "link": "https://github.com/molekilla/hapi-passport-saml", + "description": "A Hapi plugin that wraps passport-saml for SAML SSO" + }, + { + "name": "hapi-saml2", + "link": "https://github.com/toriihq/hapi-saml2", + "description": "A Hapi plugin that wraps node-saml for SAML SSO" + }, + { + "name": "jwt", + "isHapi": true, + "github": "https://github.com/hapijs/jwt", + "link": "https://hapi.dev/family/jwt", + "description": "JWT (JSON Web Token) Authentication." + } + ] + }, + { + "name": "Automation/Integrations", + "anchor": "automation", + "modules": [ + { + "name": "apitraffic-hapi", + "link": "https://github.com/apitraffic/apitraffic-hapi", + "description": "Seamlessly integrate with over 240 external systems" + } + ] + }, + { + "name": "Boilerplate", + "anchor": "boilerplate", + "modules": [ + { + "name": "hapi-mvc", + "link": "https://github.com/the-provost/hapi-mvc", + "description": "MVC structure and boilerplating for Hapi.js Projects" + } + ] + }, + { + "name": "Documentation", + "anchor": "documentation", + "modules": [ + { + "name": "hapi-ending", + "link": "https://github.com/desirable-objects/hapi-ending.git", + "description": "A simplified browsable api documentation generator" + }, + { + "name": "hapi-swagger", + "link": "https://github.com/glennjones/hapi-swagger", + "description": "A swagger documentation UI generator plugin for hapi" + }, + { + "name": "hapi-swaggered", + "link": "https://github.com/z0mt3c/hapi-swaggered", + "description": "A plugin to generate swagger v2.0 compliant specifications based on hapi routes and joi schemas" + }, + { + "name": "hapi-swaggered-ui", + "link": "https://github.com/z0mt3c/hapi-swaggered-ui", + "description": "A plugin to serve and configure swagger-ui" + }, + { + "name": "optic-hapi-middleware", + "github": "https://github.com/opticdev/optic-node/tree/main/frameworks/hapi", + "link": "https://www.npmjs.com/package/@useoptic/hapi-middleware", + "description": "Document API endpoints using Optic" + } + ] + }, + { + "name": "Encoding", + "anchor": "encoding", + "modules": [ + { + "name": "brok", + "link": "https://github.com/kanongil/brok", + "description": "Brotli encoder and decoder" + } + ] + }, + { + "name": "GraphQL", + "anchor": "graphql", + "modules": [ + { + "name": "hapi-plugin-graphiql", + "link": "https://github.com/rse/hapi-plugin-graphiql", + "description": "HAPI plugin for integrating GraphiQL, an interactive GraphQL user interface" + }, + { + "name": "graphi", + "link": "https://www.npmjs.com/package/graphi", + "github": "https://github.com/geek/graphi", + "description": "Simple to use hapi GraphQL server plugin" + } + ] + }, + { + "name": "Kubernetes", + "anchor": "kubernetes", + "modules": [ + { + "name": "hapi-on-kubernetes", + "link": "https://github.com/NextStepGuru/hapi-on-kubernetes", + "description": "A simple plugin design to connect the kubernetes probes to the lifecycles of Hapi" + } + ] + }, + { + "name": "Hypermedia", + "anchor": "hypermedia", + "modules": [ + { + "name": "boom", + "isHapi": true, + "github": "https://github.com/hapijs/boom", + "link": "https://hapi.dev/family/boom", + "description": "HTTP-friendly error objects" + }, + { + "name": "hapi-openapi", + "link": "https://github.com/krakenjs/hapi-openapi", + "description": "hapi plugin to build design-driven apis with OpenAPI (formerly swagger)." + }, + { + "name": "hapi-http-problem-details", + "link": "https://github.com/PDMLab/hapi-http-problem-details", + "description": "Create HTTP Problem Details (RFC7807) for hapi application errors" + }, + { + "name": "inert", + "isHapi": true, + "github": "https://github.com/hapijs/inert", + "link": "https://hapi.dev/family/inert", + "description": "Static file and directory handlers" + } + ] + }, + { + "name": "Localization/Internationalization", + "anchor": "localization", + "modules": [ + { + "name": "hapi-i18n", + "link": "https://github.com/codeva/hapi-i18n", + "description": "Translation module for hapi based on mashpie's i18n module" + }, + { + "name": "hapi-locale", + "link": "https://github.com/ozum/hapi-locale", + "description": "Configurable plugin to determine request language from URL, Cookie, Query and Header" + } + ] + }, + { + "name": "Logging/Metrics", + "anchor": "logging", + "modules": [ + { + "name": "apitally", + "link": "https://github.com/apitally/apitally-js", + "description": "Simple API monitoring and analytics with metrics, logs, and alerts" + }, + { + "name": "apitraffic-hapi", + "link": "https://github.com/apitraffic/apitraffic-hapi", + "description": "Collects API request/response data for monitoring and analytical purposes" + }, + { + "name": "blipp", + "link": "https://github.com/danielb2/blipp", + "description": "Displays the routes table at startup" + }, + { + "name": "hapi-statsd", + "link": "https://github.com/mac-/hapi-statsd", + "description": "Sends request round trip metrics to statsd" + }, + { + "name": "hapi-plugin-traffic", + "link": "https://github.com/rse/hapi-plugin-traffic", + "description": "Network traffic accounting" + }, + { + "name": "hapi-alive", + "link": "https://github.com/idosh/hapi-alive", + "description": "Health route for your hapi.js server" + }, + { + "name": "hapi-pino", + "link": "https://github.com/mcollina/hapi-pino", + "description": "Fast and simple JSON logger" + }, + { + "name": "hapijs-status-monitor", + "link": "https://github.com/ziyasal/hapijs-status-monitor", + "description": "Realtime Monitoring solution for Hapi.js apps, inspired by GitHub Status" + }, + { + "name": "laabr", + "link": "https://github.com/felixheck/laabr", + "description": "Well-formatted pino logger for hapi.js - inspired by morgan" + }, + { + "name": "hapi-k8s-health", + "link": "https://github.com/radenui/hapi-k8s-health", + "description": "Prometheus metrics and liveness / readiness probes" + }, + { + "name": "hapi-audit-rest", + "link": "https://github.com/denlap007/hapi-audit-rest", + "description": "Hapi.js plugin that generates audit logs for RESTful APIs" + } + ] + }, + { + "name": "Messaging", + "anchor": "messaging", + "modules": [ + { + "name": "@glidemq/hapi", + "link": "https://github.com/avifenesh/glidemq-hapi", + "description": "Queue management REST API and SSE events for glide-mq (Valkey/Redis Streams message queue)" + }, + { + "name": "hapi-plugin-websocket", + "link": "https://github.com/rse/hapi-plugin-websocket", + "description": "Seamless WebSocket integration by injecting WebSocket messages as HTTP request" + }, + { + "name": "multines", + "link": "https://github.com/mcollina/multines", + "description": "Support for multi-process publish/subscribe for nes" + }, + { + "name": "nes", + "isHapi": true, + "github": "https://github.com/hapijs/nes", + "link": "https://hapi.dev/family/nes", + "description": "WebSocket adapter plugin for hapi routes" + }, + { + "name": "susie", + "link": "https://github.com/mtharrison/susie", + "description": "Server-Sent Events for hapi with support for streaming events" + }, + { + "name": "hapi-wechat", + "link": "https://github.com/dhso/hapi-wechat", + "description": "Wechat plugin for hapi" + } + ] + }, + { + "name": "Security", + "anchor": "security", + "modules": [ + { + "name": "blankie", + "link": "https://github.com/nlf/blankie", + "description": "A plugin that makes Content-Security-Policy headers easy" + }, + { + "name": "crumb", + "isHapi": true, + "github": "https://github.com/hapijs/crumb", + "link": "https://hapi.dev/family/crumb", + "description": "CSRF crumb generation and validation for hapi" + }, + { + "name": "ralphi", + "link": "https://github.com/yonjah/ralphi", + "description": "Simple and minimal rate limiting and bruteforce protection" + }, + { + "name": "ratli", + "link": "https://github.com/johnwatson484/ratli", + "github": "https://github.com/johnwatson484/ratli", + "description": "Hapi.js rate limiting plugin" + } + ] + }, + { + "name": "Session", + "anchor": "session", + "modules": [ + { + "name": "hapi-server-session", + "link": "https://github.com/btmorex/hapi-server-session", + "description": "Simple server-side session support for hapi" + }, + { + "name": "yar", + "isHapi": true, + "github": "https://github.com/hapijs/yar", + "link": "https://hapi.dev/family/yar", + "description": "A hapi session plugin and cookie jar" + } + ] + }, + { + "name": "Templating", + "anchor": "templating", + "modules": [ + { + "name": "ndsk", + "link": "https://github.com/ndskstack/ndsk", + "description": "React framework developed based on hapi" + }, + { + "name": "hapi-react-views", + "link": "https://github.com/jedireza/hapi-react-views", + "description": "A hapi view engine for React components" + }, + { + "name": "vision", + "isHapi": true, + "github": "https://github.com/hapijs/vision", + "link": "https://hapi.dev/family/vision", + "description": "Templates rendering support" + } + ] + }, + { + "name": "Testing", + "anchor": "testing", + "modules": [ + { + "name": "lab", + "isHapi": true, + "github": "https://github.com/hapijs/lab", + "link": "https://hapi.dev/family/lab", + "description": "A simple testing utility with code coverage analysis" + }, + { + "name": "shot", + "isHapi": true, + "github": "https://github.com/hapijs/shot", + "link": "https://hapi.dev/family/shot", + "description": "Injects a fake HTTP request/response into your node server logic" + } + ] + }, + { + "name": "Utility", + "anchor": "utility", + "modules": [ + { + "name": "admin-bro-hapijs", + "link": "https://github.com/SoftwareBrothers/admin-bro-hapijs", + "description": "AdminBro - Admin Panel integrated into your hapijs routes" + }, + { + "name": "akaya", + "link": "https://github.com/felixheck/akaya", + "description": "Generate URIs fast based on named hapi routes their parameters" + }, + { + "name": "apiv", + "github": "https://github.com/johnwatson484/apiv", + "link": "https://github.com/johnwatson484/apiv", + "description": "A Hapi.js plugin that automatically adds version prefixes to all your API routes, making it easy to version your API endpoints." + }, + { + "name": "bissle", + "link": "https://github.com/felixheck/bissle", + "description": "Minimalist HALicious pagination reply interface for HapiJS" + }, + { + "name": "configue", + "link": "https://github.com/AdrieanKhisbe/configue", + "description": "Config plugin for Hapi" + }, + { + "name": "cron", + "link": "https://github.com/antonsamper/hapi-cron", + "description": "Cron jobs for internal hapi.js routes" + }, + { + "name": "cron-cluster", + "link": "https://github.com/Meg4mi/hapi-cron-cluster", + "description": "Cron jobs for internal hapi.js routes with leader election (mongodb or redis) - cluster mode" + }, + { + "name": "disinfect", + "link": "https://github.com/genediazjr/disinfect", + "description": "Request query, payload, and params sanitization" + }, + { + "name": "errorh", + "link": "https://github.com/genediazjr/errorh", + "description": "Custom error pages" + }, + { + "name": "hapi-scaffold", + "link": "https://github.com/jeffsouza/hapi-scaffold", + "description": "Code generation for the hapijs framework" + }, + { + "name": "hapi-api-version", + "link": "https://github.com/p-meier/hapi-api-version", + "description": "An API versioning plugin for hapi." + }, + { + "name": "hapi-auto-route", + "link": "https://github.com/hsitraka/hapi-auto-route", + "description": "Automatically load routes from directory" + }, + { + "name": "@ar4mirez/hapi-aws", + "link": "https://github.com/ar4mirez/hapi-aws", + "description": "AWS SDK v3 plugin for HapiJS — instantiate and expose AWS service clients via server and request decorators." + }, + { + "name": "hapi-bookshelf-serializer", + "link": "https://github.com/lob/hapi-bookshelf-serializer", + "description": "Serialize Bookshelf.js models sent through Hapi reply" + }, + { + "name": "hapi-boom-decorators", + "link": "https://github.com/brainsiq/hapi-boom-decorators", + "description": "Exposes boom errors through the hapi reply interface" + }, + { + "name": "hapi-ecma-decorators", + "link": "https://github.com/mehl/hapi-ecma-decorators", + "description": "New Decorators for hapi routes following ECMA/TC39 Proposal Stage 3" + }, + { + "name": "hapi-decorators", + "link": "https://github.com/knownasilya/hapi-decorators", + "description": "Decorators for HapiJS routes" + }, + { + "name": "hapi-dev-errors", + "link": "https://github.com/fs-opensource/hapi-dev-errors", + "description": "Get better error details during development and skip the command line round trip to catch the issue" + }, + { + "name": "hapi-error", + "link": "https://www.npmjs.com/package/hapi-error", + "description": "Custom error handling with ability to pass an object and render a custom error template or redirect to a specific url on error." + }, + { + "name": "hapi-gate", + "link": "https://github.com/captainjackrana/hapi-gate", + "description": "Easily handle http to https and www/non-www redirections" + }, + { + "name": "hapi-geo-locate", + "link": "https://github.com/fs-opensource/hapi-geo-locate", + "description": "Geo locate requests by IP and provide the user’s location in your route handlers" + }, + { + "name": "hapi-level-db", + "link": "https://github.com/maxnachlinger/hapi-level-db", + "description": "HapiJS / LevelDB integration" + }, + { + "name": "hapi-maxmind-web", + "link": "https://github.com/midnightcodr/hapi-maxmind-web", + "description": "Hapi.js plugin for MaxMind GeoIP2 Web Service" + }, + { + "name": "hapi-mongo-models", + "link": "https://github.com/jedireza/hapi-mongo-models", + "description": "MongoDB object models for hapi applications" + }, + { + "name": "hapi-mongodb", + "link": "https://github.com/Marsup/hapi-mongodb", + "description": "A simple Hapi MongoDB connection plugin, accessing one or several connections pools through server or request properties" + }, + { + "name": "hapi-mongoose", + "link": "https://github.com/asilluron/hapi-mongoose", + "description": "A lightweight mongoose connection and configuration plugin for Hapi 9+" + }, + { + "name": "@watchup/hapi-mongoose", + "link": "https://github.com/watchup/hapi-mongoose", + "description": "Hapi.js plugin that maps mongoose models to routes" + }, + { + "name": "hapi-multi-mongo", + "link": "https://github.com/metoikos/hapi-multi-mongo", + "description": "Hapi mongodb connection plugin, especially for multiple connections" + }, + { + "name": "hapi-mysql2", + "link": "https://github.com/midnightcodr/hapi-mysql2", + "description": "Another mysql plugin for Hapijs that supports multiple connections, inspired by Marsup/hapi-mongodb" + }, + { + "name": "hapi-postgres", + "link": "https://github.com/liviaerxin/hapi-postgres", + "description": "Hapi postgres connection plugin, supports both client and pool mode, inspired by Marsup/hapi-mongodb" + }, + { + "name": "hapi-named-routes", + "link": "https://github.com/poeticninja/hapi-named-routes", + "description": "Add named routes to your view templates" + }, + { + "name": "hapio", + "link": "https://github.com/caligone/hapio", + "description": "A simple bridge plugin between HapiJS and SocketIO" + }, + { + "name": "@ar4mirez/hapi-octopus", + "link": "https://github.com/ar4mirez/hapi-octopus", + "description": "A multi-purpose plugin that allows you to autoload methods, handlers, routes and decorators using a simple signature convention." + }, + { + "name": "hapi-oracledb", + "link": "https://github.com/midnightcodr/hapi-oracledb", + "description": "Oracledb plugin for hapijs." + }, + { + "name": "hapi-pagination", + "link": "https://github.com/fknop/hapi-pagination", + "description": "A simple / customizable pagination plugin for HapiJS" + }, + { + "name": "hapi-plugin-co", + "link": "https://github.com/rse/hapi-plugin-co", + "description": "Co-routine based route handlers for asynchronous processing" + }, + { + "name": "hapi-plugin-header", + "link": "https://github.com/rse/hapi-plugin-header", + "description": "Always send one or more custom HTTP headers, independent of the current route" + }, + { + "name": "@ar4mirez/hapi-pres", + "link": "https://github.com/ar4mirez/hapi-pres", + "description": "Autoload pre-requirements for HapiJS routes from a directory." + }, + { + "name": "hapi-pulse", + "link": "https://github.com/fs-opensource/hapi-pulse", + "description": "Gracefully stop the hapi server on SIGINT (for graceful PM2 reloads)" + }, + { + "name": "hapi-rate-limitor", + "link": "https://github.com/fs-opensource/hapi-rate-limitor", + "description": "Easy to use rate limiting to prevent brute-force attacks" + }, + { + "name": "hapi-redis2", + "link": "https://github.com/midnightcodr/hapi-redis2", + "description": "A redis plugin for Hapijs that supports multiple connections, inspired by Marsup/hapi-mongodb" + }, + { + "name": "hapi-request-user", + "link": "https://github.com/fs-opensource/hapi-request-user", + "description": "A hapi plugin that shortcuts “request.auth.credentials” to “request.user”" + }, + { + "name": "hapi-response-time", + "link": "https://github.com/pankajpatel/hapi-response-time", + "description": "A Hapi plugin for adding `x-response-time` header to responses" + }, + { + "name": "hapi-router", + "link": "https://github.com/bsiddiqui/hapi-router", + "description": "A plugin to automatically load your routes" + }, + { + "name": "@ar4mirez/hapi-safe-route", + "link": "https://github.com/ar4mirez/hapi-safe-route", + "description": "Register routes in a safer way, avoiding server crash on duplicate routes while running or at startup time." + }, + { + "name": "hapi-sanitize-payload", + "link": "https://github.com/lob/hapi-sanitize-payload", + "description": "Hapi plugin to sanitize the request payload" + }, + { + "name": "hapi-sequelizejs", + "link": "https://github.com/valtlfelipe/hapi-sequelizejs", + "description": "A Hapi plugin for Sequelize ORM" + }, + { + "name": "hoek", + "isHapi": true, + "github": "https://github.com/hapijs/hoek", + "link": "https://hapi.dev/family/hoek", + "description": "General purpose node utilities" + }, + { + "name": "mrhorse", + "link": "https://github.com/mark-bradshaw/mrhorse", + "description": "Plugin for adding pre-handlers and post-handlers to routes" + }, + { + "name": "patova", + "link": "https://github.com/dschenkelman/patova", + "description": "A limitd plugin for hapi, useful for rate-limiting/throttling" + }, + { + "name": "rate-limiter-flexible", + "link": "https://github.com/animir/node-rate-limiter-flexible", + "description": "Mature and flexible rate limiter, DDoS and bruteforce protection at any scale in process Memory, Cluster or PM2, Redis, Memcached, MongoDb, etc. Block key for some duration, enable Leaky Bucket analogy, manage failover with insurance options, configure smart key blocking in memory and many others." + }, + { + "name": "recourier", + "link": "https://github.com/ruiquelhas/recourier", + "description": "Request lifecycle property sealing" + }, + { + "name": "rest-hapi", + "link": "https://github.com/JKHeadley/rest-hapi", + "description": "A RESTful API generator for hapi" + }, + { + "name": "scooter", + "isHapi": true, + "github": "https://github.com/hapijs/scooter", + "link": "https://hapi.dev/family/scooter", + "description": "User-agent information plugin" + }, + { + "name": "spazy", + "link": "https://github.com/AlexanderElias/spazy", + "description": "Static file and single page application (spa) plugin for hapi" + }, + { + "name": "therealyou", + "link": "https://github.com/briandela/therealyou", + "description": "A plugin for setting the request.info.remoteAddress and request.info.remotePort based on the X-Forwarded-For and X-Forwarded-Port headers" + }, + { + "name": "wozu", + "link": "https://github.com/felixheck/wozu", + "description": "Server decorator to list all defined hapi.js routes" + }, + { + "name": "wurst", + "link": "https://github.com/felixheck/wurst", + "description": "Directory based autoloader for routes" + }, + { + "name": "Wildcard API", + "link": "https://github.com/reframejs/wildcard-api", + "description": "RPC implementation for browser ⇔ Node.js communication." + }, + { + "name": "topo", + "isHapi": true, + "link": "https://hapi.dev/family/topo", + "description": "Topological sorting with grouping support" + }, + { + "name": "wreck", + "isHapi": true, + "github": "https://github.com/hapijs/wreck", + "link": "https://hapi.dev/family/wreck", + "description": "HTTP Client utilities" + }, + { + "name": "glue", + "isHapi": true, + "github": "https://github.com/hapijs/glue", + "link": "https://hapi.dev/family/glue", + "description": "Server composer" + }, + { + "name": "h2o2", + "isHapi": true, + "github": "https://github.com/hapijs/h2o2", + "link": "https://hapi.dev/family/h2o2", + "description": "Proxy handler" + }, + { + "name": "hapi-graceful-pm2", + "link": "https://github.com/roylines/hapi-graceful-pm2", + "description": "Handle true zero downtime reloads when issuing a pm2 gracefulReload command" + }, + { + "name": "podium-hapi-layout", + "link": "https://github.com/podium-lib/hapi-layout", + "description": "Hapi plugin for writing Micro Frontend Layout servers with Podium - https://podium-lib.io" + }, + { + "name": "podium-hapi-podlet", + "link": "https://github.com/podium-lib/hapi-podlet", + "description": "Hapi plugin for writing Micro Frontend Fragment servers with Podium - https://podium-lib.io" + }, + { + "name": "qs", + "isHapi": true, + "link": "https://github.com/hapijs/qs", + "description": "A querystring parser with support for arrays and objects" + }, + { + "name": "tarm", + "link": "https://github.com/kanongil/tarm", + "description": "Add tarmount handler for serving tar file contents" + }, + { + "name": "hapi-orientdb", + "link": "https://github.com/petervavro/hapi-orientdb", + "description": "OrientDB plugin for hapijs." + } + ] + }, + { + "name": "Validation", + "anchor": "validation", + "modules": [ + { + "name": "blaine", + "link": "https://github.com/ruiquelhas/blaine", + "description": "Server-level file signature validation for raw request payloads in memory" + }, + { + "name": "burton", + "link": "https://github.com/ruiquelhas/burton", + "description": "Server-level file signature validation for raw stream request payloads" + }, + { + "name": "copperfield", + "link": "https://github.com/ruiquelhas/copperfield", + "description": "Server-level file signature validation for parsed request payloads in memory" + }, + { + "name": "coutts", + "link": "https://github.com/ruiquelhas/coutts", + "description": "Server-level file signature validation for raw temporary file request payloads" + }, + { + "name": "fischbacher", + "link": "https://github.com/ruiquelhas/fischbacher", + "description": "Server-level file signature validation for parsed temporary file request payloads" + }, + { + "name": "hapi-plugin-ducky", + "link": "https://github.com/rse/hapi-plugin-ducky", + "description": "Validating payloads with the DuckyJS JSON validation language" + }, + { + "name": "henning", + "link": "https://github.com/ruiquelhas/henning", + "description": "Server-level file signature validation for parsed request payload file streams" + }, + { + "name": "houdin", + "link": "https://github.com/ruiquelhas/houdin", + "description": "Route-level file signature validation for request payloads in memory" + }, + { + "name": "joi", + "link": "https://joi.dev", + "description": "Object schema description language and validator for JavaScript objects" + }, + { + "name": "lafayette", + "link": "https://github.com/ruiquelhas/lafayette", + "description": "Route-level file signature validation for temporary file request payloads" + }, + { + "name": "supervizor", + "link": "https://github.com/ruiquelhas/supervizor", + "description": "Server-level request payload validation" + }, + { + "name": "thurston", + "link": "https://github.com/ruiquelhas/thurston", + "description": "Route-level file signature validation for request payload file streams" + } + ] + }, + { + "name": "hapi pal", + "anchor": "hapipal", + "modules": [ + { + "name": "ahem", + "link": "https://hapipal.com/docs/ahem", + "github": "https://github.com/hapipal/ahem", + "description": "hapi plugins as libraries" + }, + { + "name": "avocat", + "link": "https://hapipal.com/docs/avocat", + "github": "https://github.com/hapipal/avocat", + "description": "Convert objection DB errors to boom HTTP errors" + }, + { + "name": "boilerplate", + "link": "https://hapipal.com/docs/boilerplate", + "github": "https://github.com/hapipal/boilerplate", + "description": "A friendly, proven starting place for your next hapi plugin or deployment" + }, + { + "name": "confidence", + "link": "https://github.com/hapipal/confidence", + "description": "A configuration document format, an API, and a foundation for A/B testing" + }, + { + "name": "haute-couture", + "link": "https://hapipal.com/docs/haute-couture", + "github": "https://github.com/hapipal/haute-couture", + "description": "File-based hapi plugin composer" + }, + { + "name": "hecks", + "link": "https://hapipal.com/docs/hecks", + "github": "https://github.com/hapipal/hecks", + "description": "Mount your express app onto your hapi server, aw heck!" + }, + { + "name": "hodgepodge", + "link": "https://hapipal.com/docs/hodgepodge", + "github": "https://github.com/hapipal/hodgepodge", + "description": "A plugin dependency resolver" + }, + { + "name": "hpal", + "link": "https://hapipal.com/docs/hpal", + "github": "https://github.com/hapipal/hpal", + "description": "The hapi pal CLI, for searching hapi docs, scaffolding projects, and running custom server commands" + }, + { + "name": "hpal-debug", + "link": "https://hapipal.com/docs/hpal-debug", + "github": "https://github.com/hapipal/hpal-debug", + "description": "hapijs debugging tools for the hapi pal CLI" + }, + { + "name": "lalalambda", + "link": "https://hapipal.com/docs/lalalambda", + "github": "https://github.com/hapipal/lalalambda", + "description": "Serverless functions powered by hapijs" + }, + { + "name": "schmervice", + "link": "https://hapipal.com/docs/schmervice", + "github": "https://github.com/hapipal/schmervice", + "description": "A service layer for hapi" + }, + { + "name": "schwifty", + "link": "https://hapipal.com/docs/schwifty", + "github": "https://github.com/hapipal/schwifty", + "description": "A model layer for hapi integrating Objection ORM" + }, + { + "name": "tandy", + "link": "https://hapipal.com/docs/tandy", + "github": "https://github.com/hapipal/tandy", + "description": "Auto-generated, RESTful, CRUDdy route handlers for Objection models" + }, + { + "name": "toys", + "link": "https://hapipal.com/docs/toys", + "github": "https://github.com/hapipal/toys", + "description": "The hapi utility toy chest" + }, + { + "name": "underdog", + "link": "https://hapipal.com/docs/underdog", + "github": "https://github.com/hapipal/underdog", + "description": "HTTP/2 server-push for hapi" + } + ] + } ] diff --git a/tsconfig.json b/tsconfig.json index cd90d999..f7001884 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,13 +1,13 @@ { - "include": [".vitepress/**/*.ts", "**/*.ts", "**/*.tsx"], - "compilerOptions": { - "target": "es2024", - "module": "node20", - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "skipLibCheck": true, - "resolveJsonModule": true, - "types": ["node", "./env.d.ts"] - } + "include": [".vitepress/**/*.ts", "**/*.ts", "**/*.tsx"], + "compilerOptions": { + "target": "es2024", + "module": "node20", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true, + "types": ["node", "./env.d.ts"] + } }